GouvernementFR / RepubliqueNumerique

Projet de loi pour une République numérique. Première loi co-écrite avec les citoyens. Ouverture des données publiques, protection des citoyens, accès de tous au numérique.
https://www.republique-numerique.fr/
193 stars 15 forks source link

Format compatible avec data.gouv.fr? Format utilisant des diff github? #10

Open yquemener opened 8 years ago

yquemener commented 8 years ago

Bonjour, bienvenue dans le monde merveilleux de la collaboration open-source.

J'attire votre attention sur le fait que des projets open data sont en cours pour rendre la loi plus lisible et plus facile à visualiser via des logiciels spécialisés, dont un mis en avant par data.gouv.fr: https://www.data.gouv.fr/fr/datasets/legi-codes-lois-et-reglements-consolides/

La base légifrance est également utilisable: http://www.les-infostrateges.com/actu/14101892/open-data-les-licences-libres-et-gratuites-de-legifrance

Elle a de plus un très bon format permettant d'explorer les versions historiques d'une loi. Pourquoi ne pas l'étendre pour permettre l'exploration des versions hypothétiques?

Réellement, mettre les projets de loi sous git me semble une excellente idée. Git est un format qui permet de traquer différentes versions d'un texte et permet d'imiter le travail parlementaire de façon très intéressante à l'aide de ses branches.

Je pense cependant que vous avez fait une erreur dans la façon de le présenter ici. Un projet de loi devrait être vu comme une modification du repository git d'un code de loi. Voici un exemple de projet de loi lisible présentée sous la forme de ce que les programmeurs nomment un patch, ou un diff.

Le problème vient du fait que le format en français est bien le "code source" de la loi. Il faut pouvoir générer des patchs git à partir de ces "code sources" et ces "codes sources" à partir des patches.

Cela ouvrirait la porte à de vraies initiatives citoyennes très concrètes, des propositions d'amendement utilisables telles quelles.

christopheml commented 8 years ago

Très juste. Lire un amendement sous sa forme actuelle est complexe parce que cela présuppose d'avoir le texte original du projet de loi, ainsi que la loi existante. Le fait de ne pas pouvoir consulter un projet de loi ou des amendements sous forme de diff est pénalisant, alors que cette possibilité est offerte par git.

julien-c commented 8 years ago

Merci pour ces contributions, intéressantes. Je pense que les deux représentations sont intéressantes :

De nombreuses lois contiennent d'ailleurs des articles autoportés, c'est-à-dire ne modifiant aucune autre loi (ni Code) antérieure. Le patch de l'article de loi sur le Code n'est alors pas pertinent.

git n'est pas forcément l'outil ultime pour faire les deux à la fois. Sur Github par exemple, rien ne m'empêche d'ouvrir une pull request (amendement) sur une branche faisant l'objet d'une pull request (projet de loi) sur une autre branche (Code ou loi antérieure), mais la représentation n'est pas triviale.

Qu'en pensez-vous ?

yquemener commented 8 years ago

Git a naturellement ses défauts, mais ce format est mille fois plus utilisable que le format actuel des textes de loi.

Une représentation qui me semble idéale serait la suivante:

En pratique si on veut représenter toute la navette parlementaire entre sénat et assemblée, le système est un peu plus compliqué, mais le principe reste le même.

De nombreuses lois contiennent d'ailleurs des articles autoportés

On parle bien d'articles tels que le titre 1, chapitre 1, section 1, article 1er de la loi «République numérique»? Ce sont des créations de nouveaux fichiers. Il s'agit bien de textes de loi opposables judiciairement n'est ce pas? Ils viennent s'ajouter au code implicite «en dehors-de-tout-code» que je visualise comme des répertoires à la racine du repository.

Sur Github par exemple, rien ne m'empêche d'ouvrir une pull request (amendement) sur une branche faisant l'objet d'une pull request (projet de loi) sur une autre branche (Code ou loi antérieure), mais la représentation n'est pas triviale.

Elle n'est pas très compliquée à vrai dire, mais est ce que cela traduirait une réalité parlementaire? Il ne me semble pas que l'on puisse amender une proposition d'amendement dans une proposition de loi? Ça représenterait plutôt des discussions de couloir du genre «Tu devrais pas parler de cession dans ton amendement, mais plutôt de don, à cause de cette spécificité juridique...». Accepter de tels pull-requests est la responsabilité de l'auteur de la proposition d'amendement. Ce n'est soumis à aucun vote.

RouxRC commented 8 years ago

@YQuemener Non comme l'explique @Julien-c c'est plus complexe que cela : une proposition ou un projet de loi est une liste d'articles, dont certains sont entièrement nouveaux et ne se rattachent à aucun code de loi existant, et d'autres effectivement qui viennent modifier les textes en vigueur.

Les amendements tels qu'ils sont rédigés par les parlementaires sont des "pull requests" sur le texte de ces articles là, non sur la loi elle-même. (ils proposent donc des modifications du texte venant modifier la loi, pas des modifications directes à la loi comme on le voudrait si on faisait une PR sur les codes existants)

Et en fait si : il existe bien des sous-amendements, qui sont donc eux-mêmes des pull requests sur les amendements, et qui là encore sont rédigés comme des propositions de modification de la rédaction de l'amendement et non de l'article amendé.

On parle donc de potentiellement 4 niveaux d'imbrication de branches/PRs mais avec une implémentation pratique complètement différente dans la procédure législative.

Pour arriver à poursuivre un travail en ce sens, commencer uniquement sur la base du texte des projets/propositions de loi et versionner l'ensemble est déjà un challenge de très grande ampleur qui semble une première étape indispensable à franchir avant de pouvoir considérer le généraliser en remontant au niveau de PRs sur les codes de loi (cf nos premières tentatives d'automatisation dans LaFabriqueDeLaLoi.fr qui réduisent au niveau commit uniquement les étapes dans leur ensemble et non chaque amendement pour le moment http://git.lafabriquedelaloi.fr/parlement/ )

Tout ceci est discuté depuis un moment par les acteurs du thème GitLaw (bien plus ancien que cette initiative ;) ) et les limitations techniques considérées et débattues sur un pad ici : https://pad.lqdn.fr/p/gitlaw

yquemener commented 8 years ago

@RouxRC Merci des infos et des liens! Je me demandais si de tels efforts existaient. Je vais regarder ça.

Après, pour continuer cette conversation, je dois avouer que je ne vois pas trop le problème à faire des branches de branches de branches de branches, ad vitam æternam.

Ce que je propose n'est qu'une façon de représenter le travail législatif dans git, je ne dis pas que c'est l'outil le mieux adapté pour ça. Ce qui me plait en revanche dans cette approche c'est qu'on peut commencer à ne présenter git que comme outil de représentation du travail parlementaire tout en suggérant que ça puisse devenir une vraie plateforme de débat. Ça rendrait plus facile l'implication citoyenne.

EDIT: Le lien http://git.lafabriquedelaloi.fr/users/parlement/ demande un compte d'utilisateur et j'ai l'impression que ce n'est pas un groupe public, n'est ce pas?

EDIT2: C'est mal vu si je participe à votre pad? Je voudrais faire remarquer qu'un format officiel existe déjà. Un XML avec DTD, voir https://www.data.gouv.fr/fr/datasets/legi-codes-lois-et-reglements-consolides/

RouxRC commented 8 years ago

Je pense qu'on est tous d'accords sur l'objectif, et sur l'intérêt citoyen de le faire (autrement il n'y aurait pas autant d'initiatives en ce sens) :)

Le problème n'est pas d'avoir des PRs imbriquées mais que le formalisme de travail des parlementaires ne repose pas sur des propositions de nouvelle version de la loi mais sur des textes décrivant les modifications, supposant donc de générer à partir des PRs une telle syntaxe/grammaire

PS: Erreur de lien, il s'agissait de http://git.lafabriquedelaloi.fr/parlement/ je corrige au dessus

PS2: Un pad au lien public a vocation à être alimenté par tous bien sûr ! ;) juste essayer si possible de bien rester synthétique pour ne pas noyer les éléments

RouxRC commented 8 years ago

Par ailleurs attention avec les codes de loi de la DILA sur data.gouv.fr, malheureusement à l'heure actuelle ce n'est toujours pas vraiment OpenData à cause du décret de 2002 qui laisse la DILA libre d'autoriser ou refuser discrétionnairement tout usage de ses données... (cf https://forum.etalab.gouv.fr/t/git-et-loi-open-law/346/13 )

yquemener commented 8 years ago

Bon, tes pointeurs m'ont fait tirer toute une pelote de laine, j'ai encore un peu de lecture à faire je crois :-)

julien-c commented 8 years ago

En effet @RouxRC, j'aurais dû mentionner dans mon commentaire les réflexions préexistantes et très utiles que vous avez menées avec @eraviart, @steeve et les autres.

A formalisme légistique constant – j'invite tous ceux qui ne l'auraient pas fait à lire le Guide de légistique de 2007 😉–, on est tous d'accord pour dire que la représentation n'est pas triviale.

A mon avis, une piste pour poursuivre concrètement la réflexion serait de prototyper (en un ou plusieurs dépôts git, liés dynamiquement ?), sur un Code ou une partie de Code, l'application d'une loi ou d'une partie d'une loi, elle-même modifiée par ses amendements, modifiés par sous-amendements. Et de voir quelles informations on arrive à faire remonter, avec quelle granularité.

C'est passionnant en tout cas !