[DuraLex/SedLex] avancement 22/04/2017

Bonjour,

voilà les derniers progrès/changement dans le développement de DuraLex/SedLex.

DuraLex est le programme qui analyse les projets de loi pour les transformer en code informatique pour en automatiser le traitement. SedLex est un second programme qui utilise le code généré par DuraLex pour produire automatiquement le texte de loi final pour le rendre compréhensible et donc votable par tous les citoyens.

Cette semaine, un nouveau pas important a été franchi : SedLex a été créé (déjà c’est pas mal) et fournit déjà un premier résultat fonctionnel et utilisable par tous. Voila un lien pour tester le résulat obtenu à partir de la prosition de loi 14-44 :

http://legilibre.fr/loi_77-729/

C’est important parce queque le texte original du projet de loi sur lequel il est impossible de se décider, par exemple :

est transformé en un affichage intuitif de la modification dans le texte original :

qui est donc lisible, compréhensible et peut donc être voté par tous. DuraLex / SedLex transforme donc automatiquement un projet de loi officiel en un site Web visualisable et votable par tous avec un suivi détaillé et intuitif des modifications.

Plus de détails ci-après.

Re-définition de DuraLex vs SedLex

DuraLex se limite désormais à l’annalyse du projet de loi, mais ne crée/génère aucun contenu. C’est maintenant le travail de SedLex.

Les intégrations à GitHub et Git décrites ici ont donc été transférées dans SedLex.

Intégration de GitBook dans SedLex

GitBook est une technologie française, open source et libre pour créer un site Web statique à partir de fichiers texte au format Markdown.

SedLex utilise GitBook pour générer un site Web à partir des données générées par DuraLex. Pour un projet de loi donné, voilà comment ça fonctionne :

  1. DuraLex transforme le texte original du projet de loi en une structure automatisable qui décrit les changements apportés par ce dernier
  2. SedLex récupère cette structure et le texte original des lois à modifier pour appliquer ces changements sous forme de patchs
  3. SedLex génère des fichiers texte au format Markdown décrivant chaque article et chaque texte modifié
  4. SedLex appelle GitBook pour génèrer un site Web à partir de ces fichiers

Par exemple, pour la proposition de loi 14-44, DuraLex/SedLex va générer le site Web suivant :

http://legilibre.fr/loi_77-729/

Le site Web généré par GitBook inclut :

  • un lien vers le texte original du projet de loi
  • pour chaque article du projet de loi :
  • le texte de cet article
  • le lien vers l’issue GitHub correspondante pour avoir une vue « expert » du suivi des modifications
  • pour chaque modification apportée par cet article
    • la référence à la section de l’article qui décrit la modification
    • une description de la modification telle qu’interprétée par DuraLex
    • un affichage intuitif de la modification dans le texte
  • pour chaque texte de loi modifié :
  • le texte de loi original avec affichage intuitif des modifications
  • pour chaque modification de ce texte, un lien vers la section de article/la modification détaillée

Le site ainsi généré propose donc des liens projets de loi <=> modifications <=> texte de loi original. Il est également relié à GitHub pour une visualisation approfondie et détaillée ainsi que les commentaires.

Autres fonctionnalités :

  • un moteur de recherche temps-réel
  • des boutons de partage sur les réseaux sociaux (Facebook, Twitter, Google+…)
  • une interface « responsive » qui fonctionne aussi sur smartphone et tablette
  • une interface de configuration du texte (taille, style, couleurs…)

Toute la génération se fait via un sytème de templates utilisant jinja2. Il est donc très facile de modifier comment le site Web est généré et même d’imaginer d’autres types d’export (PDF ou ebook par exemple).

Affichage intuitif des modifications

Un affichage intuitif des modifications a été implémenté au format HTML.

Voilà un exemple pour montrer deux suppressions de texte :

Hébergement sur GitHub

Le site Web généré par GitBook est hébergé directement sur GitHub via la fonctionnalité GitHub Pages. Concrètement, ça veut dire que ça nous coûte 0 et c’est l’infrastructure de GitHub qui prend la charge, quel que soit le nombre de visiteurs.

Le nom de domaine legilibre.fr a été configuré pour rediriger vers GitHub Pages. Donc on peut accéder au site hébergé par GitHub Pages mais avec le nom de domaine que l’on veut. Le site http://legilibre.fr/loi_77-729/ est donc bien hébergé par GitHub !

On pourrait faire de même avec mavoix.info, par exemple projet.mavoix.info ou plateforme.mavoix.info.

Le fait d’héberger d’utiliser GitHub comme hébergeur veut également dire que les pages du site Web sont versionnées et qu’elles seront facilement automatiquement mise à jour (avec les amendements par exemple) tout en permettant un suivi des modifications (un suivi des modifications du site qui permet de faire le suivi des modifications de la loi… oui oui…).

Prochaines étapes ?

  • intégration de Cocorico (la plateforme de vote) dans SedLex pour générer automatiquement un vote et ajouter un lien pour voter / voir les résultats de ce vote
  • automatiser la récupération des textes de loi originaux via ArcheoLex

N’hésitez pas si vous avez des questions :slight_smile:

12 « J'aime »

C’est absolument génial. Je ne pensais pas que ce serait si rapide à obtenir et même réalisable pour être franc. On va enfin comprendre en 5 minutes chrono un projet de loi !
Pourquoi l’état ne l’avais pas fait avant ? Sans parler d’automatisation mais juste un fonctionnaire qui l’aurai fait à la main !!!

Ils ont une batterie de petites mains qui font des documents - réservés aux parlmentaires - Word avec trois colonnes : article du projet de loi, texte de loi original, texte modifié. Je te laisse imaginer l’inefficacité du truc. Alors qu’en plus c’est très pauvre.

Alors qu’avec DuraLex/SedLex, en passant dans la vue GitHub, on a pas seulement les modifications apportées par le projet de loi mais un historique complet avec toutes les modifications précédentes sur le même texte de loi (exemple avec l’article 3 de la loi 77-729.

2 « J'aime »

Page not found ! Il dit qu’il voit pas le rapport ^^

C’est corrigé. le bon lien était celui-ci.

2 « J'aime »

Encore bravo, les amis!

A première vue, ça me semble super génial !
Félicitations à toute l’équipe !
Une question se pointe : quid de la protection anti-hackage entre les propositions de modification du texte de loi et le vote via cocorico (à tous les stades en fait) ?

Toute les modifications seront automatisées et insérées dans Git/GitHub pour avoir un suivi complet (pas juste du projet de loi mais de toutes les modifications sur tous les textes concernés, cf ce lien).

Donc pour insérer une modification sans que ça se voit, il faudra avoir les clefs/identifiants du robot qui s’occupe de calculer/projeter/mettre en ligne ces modifications.

On pourrait aussi imaginer que chaque modification est mise sur la blockchain. Si la modification n’est pas listée dans la blockchain, c’est qu’elle n’est pas authentique.

2 « J'aime »

Merci de ces éclaircissements @Jean-Marc_Le_Roux !
Si je comprends bien, il y aura toujours moyen de vérifier si quelqu’un à modifié quelque chose en cours de route. Qui s’en chargera ? Un robot ?
Je ne doutais pas vraiment que vous n’ayiez rein prévu. C’est surtout pour préparer l’argumentation…:wink:

Git a un système de « hook » qui permet d’exécuter une action lorsqu’un changement est soumis.
Il pourrait être utilisé par un robot pour vérifier l’auteur de la modification.

Finalement, ceux sont des problématiques d’ingénieries logiciel classiques. Alors on y répond avec les mêmes outils.

1 « J'aime »

Bonjour ! Super projet ce DuraLex/SedLex !
En le découvrant, cela m’a fait penser à un de mes vieux projets du dimanche prenant la forme d’une petite web app servant de frontend à ce super repo qui n’est malheureusement plus maintenu. Si ça peut donner des idées ! :smile:

1 « J'aime »

Super !
@Guillaume_CHAU tu me sembles très compétent, ça ne te dit pas de nous aider ? :slight_smile:

Si je comprends bien le code civil venait d’ici.
Mais d’où viennent les données/dépôts pour les autres codes ?
@Seb35 je pense que tu devrais jeter un coup d’oeil.

De la branche everything. Le principe de ce repo est de pousser les modifications détectées dans les codes sur un repo Git, et d’utiliser Git comme source de donnée. Par exemple, dire à DuraLex de faire des commits dans le code pour chaque loi.

Pourquoi pas, mais je ne promets pas beaucoup de temps libre ! :smile_cat:

1 « J'aime »

C’est un peu le principe.

En fait ArcheoLex fait ce travail de génération/mise à jour des textes existants.

Mais pour ce qui est des projets/propositions de loi, on va faire un dépôt pour chaque projet/proposition.
Le dépôt sera initialisé avec tous les textes originaux et leur historique, puis DuraLex fera l’interprétation sur des branches. Il y’aura une branche par révision du projet de loi (amendement).

Lorsqu’on sera bien rodé, alors peut-être qu’on aura un dépôt central avec tous les projets de loi en cours et une traçabilité complète en temps réel.

Personne n’a beaucoup de temps libre.
Mais il y’a de l’existant facile à prendre en main.

Rendez-vous tous les lundis pour une visioconf entre dev, le lien sera donné sur le chat Legilibre.

3 « J'aime »

Je n’y comprends que peu mais j’adore vous lire ! Avec vous tout semble possible ! C’est ça qui rend #Mavoix si porteuse…

Alors il faut poser des questions sinon on ne peut pas adapter notre discours.

1 « J'aime »

c’est ce que je fais @Jean-Marc_Le_Roux et cela m’éclaire plus que tu ne crois ! :wink:

'Tain c’est incroyable, les députés ma Voix sont pas encore en place qu’il y a déjà les technos prêtes pour révolutionner le fonctionnement de l’assemblée nationale :grinning:

Pas d’issues ouvertes sur Github, y’a des points sur lesquels on peut contribuer ?

2 « J'aime »

Il faut surtout tester DuraLex et y ajouter des tests unitaires. Tu m’aides ? :wink:

Le dossier de test est déjà plutôt bien remplit :slight_smile:

Je vais regarder un peu plus en détail, je t’ouvres des issues si je trouves des trucs. Y’a des points en particuliers qu’il faut tester ?

Sinon je trouve le format du JSON pas très très clair. Ça serait cool d’avoir un petit texte pour décrire la structure et les différentes valeurs possibles (pour type et editType par exemple)