Vers une implémentation officielle de la loi
publié le , mis à jourL’État doit accompagner la loi d’un code qui peut être lu à la foi par le citoyen et par nos ordinateurs, donc lisible et exécutable. C’est une énorme promesse de transparence et d’efficacité… au prix d’un défi technique. Il est tout à fait possible aujourd’hui de commencer sur de petites parties de la loi. Un sujet s’y prête bien : les taxes et prélèvements qui font tourner l’État lui-même et notre sécurité sociale. Ces règles dictent des transactions financières qui représentent chaque année un millier de milliards d’€.
L’objectif n’est pas de changer ou remplacer la loi, mais simplement de moderniser son support, ce qui suffirait à avoir des conséquences majeures ! Notons qu’avec les technologies actuelles, seule une petite part de la loi pourra être traduite ainsi. Mais bien d’autres jeux de règles non législatives sont concernés.
Les opinions exprimées dans cet article sont celles de son auteur. N’hésitez pas à signaler les malheureuses simplifications ou erreurs.
Le problème du citoyen avec la loi
Vous avez peut-être eu la chance de visiter le Louvre à Paris et de tomber sur une mystérieuse stèle noire plus grande que vous : le Code de Hammourabi. Gravé il y a près de 4000 ans, il comporte des paragraphes d’un style qui nous est familier : des lois qui régissaient la vie quotidienne des citoyens de l’époque.
On pourra se réjouir du chemin parcouru depuis en termes d’égalité et de tolérance… Mais mettons ce jugement de côté un moment. Pour nous, citoyens d’aujourd’hui, ça ne semble pas si compliqué à comprendre : les règles sont limpides et il n’y en a finalement pas tant que ça. Sauf qu’à l’époque, peu de gens pouvaient les lire…
En réalité, ce code quadrimillénaire et les textes législatifs qui nous permettent aujourd’hui de vivre en société partagent le même défaut : ils sont inaccessibles au citoyen lambda. On a appris à lire, mais c’est notre capacité d’entendement d’un ensemble de règles si complexe qui a été dépassée.
En effet, même si tout le monde la tient dans sa poche grâce à legifrance.gouv.fr, la loi est complexe, vaste et écrite dans un langage de spécialiste, au point qu’on ne peut difficilement s’informer sans intermédiaire sur ses droits et devoirs.
La grande bibliothèque
Dans notre vie quotidienne, nous nous sentons souvent tout petits devant la loi qui s’apparente à une ancienne et vaste bibliothèque remplie de livres dont les chapitres se citent tous entre eux pour définir des règles : nos droits et obligations. Notre droit ou notre obligation est là, quelque part, morcelée. Comment la saisir ?
Dans ces ouvrages, malgré tous les efforts linguistiques, beaucoup de termes ne sont pas définis rigoureusement, ou alors leur référence est difficile à résoudre. Souvent, il faut lire et articuler plusieurs étages pour connaître son droit ou son obligation définitive.
En tant que citoyen, ce n’est bien souvent pas un petit créneau de 15 minutes de consultation qu’il me faudra, mais plutôt une réservation à la journée, ou mieux : un abonnement pour des visites guidées. Bien sûr, les prestations de ces intermédiaires seront payantes (n’oublions pas qu’une publicité vue est une alternative à un tout petit paiement par carte bleue).
Des acteurs publics proposent heureusement des fiches gratuites formant des bases documentaires (ex. service-public.fr qui répond a des milliers de questions pratiques ou urssaf.fr spécialisé sur le sujet des cotisations sociales).
Parfois, ces fiches sont incomplètes, ou trop simplifiées (des cas particuliers peuvent avoir été omis). Surtout, vous ne trouverez rarement autre chose que des paragraphes de texte à l’écran. Le risque apparaît alors à l’étape de raisonnement. Vous devez vous-même appliquer ce texte à votre cas : autrement dit, vous devez faire un calcul. Des calculs logiques très souvent (« ceci me concerne si je réponds à ce critère et à celui là… mais pas à celui-ci»), et parfois aussi numériques (ex. calcul d’une cotisation).
Ainsi, le texte de ces fiches, ou de leur source les lois, sont souvent utilisés comme des petits bouts d’instructions de calcul, soit en d’autres termes du code qui n’a jamais été lancé, et donc qui n’a jamais été testé.
[Mise à jour] À la rentrée 2017, le gouvernement a constaté publiquement que les gens ne peuvent plus directement comprendre le sujet du droit du travail en l’état : un “droit du travail numérique” viendra clarifier tout ça. Ce domaine a la particularité de cumuler plusieurs couches de règles, du droit du travail aux 40 000 accords d’entreprise signés chaque année, dont l’articulation se complique de lois en ordonnances. Espérons que ce code du travail numérique ne soit pas simplement une nouvelle base de fiches de texte venant seulement concurrencer celles qui existent déjà.
Illustration
Illustrons le sujet avec une règle au hasard piochée dans le chapeau magique des obligations françaises : la CRDS, acronyme de Contribution pour le remboursement de la dette sociale, dont l’histoire tumultueuse est racontée sur la page Wikipedia. Plaçons-nous dans le contexte de la fiche de paie, donc limitons nous aux revenus des salariés (la CRDS est bien plus large que ça).
On trouve facilement des centaines de ces fameuses fiches, sur des sites publics ou privés, qui nous permettent d’ébaucher un calcul. On comprend vite que la formule est très simple et facile à implémenter. La nécessité d’une mise à disposition par l’État d’une implémentation de référence de cette CRDS semble a priori un peu tirée par les cheveux.
A priori seulement…
La fiche de service-public.fr, qui nous donne cette formule à la ligne “Revenus d’activité salarié” du premier tableau, indique déjà que c’est plus compliqué que ça.
- l’assiette inclut le salaire brut, mais aussi les primes et “indemnités diverses”. Mais lesquelles précisément ? Il faut y ajouter les “avantages en nature ou en espèces” mais avec une exception : “si la rémunération est exclusivement constituée d’avantages en nature, elle est exonérée de de CRDS” (le reste concerne les travailleurs non salariés). L’énumération finit par trois petits points : doit-on comprendre que d’autres revenus peuvent être concernés ?
- notre formule a oublié l’**abattement de 1,75% **: seul 98,25% de l’assiette sera à prendre en compte…
un abattement conditionnel
Et ce, seulement en dessous d’un certain montant comme le montre cette copie d’écran. Cet usage de “au delà” n’est-il pas ambigu ? Doit-on comprendre que pour un salaire de 200 000 € c’est seulement le reste de 43 088 € qui ne sera pas abattu, ou l’ensemble ?
- Mais encore : pour des “compléments du salaire”, qui ne sont pas définis dans la fiche, pas d’abattement. En pratique, c’est le cas de la contribution employeur pour la complémentaire santé, qui est maintenant obligatoire et donc concerne tous les salariés. Il est courant que ce point soit oublié et que “la mutuelle” soit abattue par mégarde.
- Pour d’autres cas exceptionnels bien listés dans la fiche, par exemple les salaires des apprentis, c’est toute la somme qui est exonérée. Il en est de même par exemple pour le paiement par le patron des tickets restaurants.
Ainsi, le diable est dans le détail : la règle qui semblait être une simple multiplication à été compliquée d’un paquet de conditions.
Pour être rigoureux dans notre calcul sur ce sujet sérieux, et pour avoir la réponse à beaucoup d’autres questions que nous n’avons pas abordées (ex. quand dois-je verser cet impôt, et si le salarié est à temps partiel ? ), mieux vaut suivre les liens vers les “textes de référence” . C’est parti pour 7 articles à lire sur 4 sites différents, qui équivalent au contenu de… 32 pages A4. Et n’oublions pas de lire la fiche de l’URSSAF.
Attention ! Cet article ne soutient pas que ces bases de documentation sont de mauvaise qualité ! Au contraire, il est bien probable que nous soyons bien servis en France, notamment au vu de la complexité de notre modèle social.
Mais nous devons aujourd’hui aller plus loin, et nous pouvons y arriver en publiant des explications exécutables. Un nouveau service qui viendrait compléter ce monde du texte en français, qui vient toujours avec son lot d’ambiguïtés.
Notons que si nous prenions d’autres exemples dans d’autres domaines, nous tomberions bien sûr sur des phrases qui nous poseraient un autre type de problème : le jugement. En plus de la difficulté technique pour simplement s’y retrouver ou calculer, surviendront des termes pour le moins ambigus tels que “raisonnable”, qui demandent une appréciation humaine. C’est hors de propos dans cet article.
Coder les règles de la loi
Revenons donc à notre exemple : rien ne semble nous empêcher d’écrire du code qui calculerait cette cotisation, dans sa version simpliste comme dans sa forme jonchée d’exceptions. C’est ce que font les milliers de programmes de gestion qui silencieusement s’infiltrent dans nos vies, par exemple le petit robot de votre complémentaire santé qui vous verse 30% des 25€ de votre consultation chez le généraliste (il y a une fiche pour cette règle !).
La loi exécutable
Ce code, disons par exemple du code source dans le langage de programmation très courant nommé python, est conçu pour être lu par un ordinateur, qui va le faire “tourner” comme on dit pour répondre à un problème précis : par exemple pour calculer cette fameuse CRDS, en nous donnant le montant à retenir chaque mois sur la feuille de paie d’après notre situation personnelle.
Une initiative développée notamment par l’État, le projet OpenFisca, rassemble du code libre (gratuit et réutilisable) qui permet de simuler certains de ces sujets. Concrètement, notre CRDS dans OpenFisca c’est 30 lignes de code python lisibles par un ordinateur pour faire le calcul. C’est déjà bien !
Au-delà du calcul numérique
Nous proposons ici d’écrire un code qui ressemblerait davantage à de la donnée : en la lisant, on doit évidemment pouvoir faire le calcul, mais aussi plein d’autres choses : générer des simulateurs automatiquement —puis par la suite des calculateurs dictant des transactions réelles, reconstituer une base documentaire des règles 3.0 alliant texte et calculs, visualiser comment se déroule le calcul d’une règle avec les entrées personnalisées de la simulation en cours, expliquer graphiquement à quoi servent les cotisations prélevées tous les mois sur la fiche de paie (quelle est ma contribution mensuelle au système de santé ?), expliquer interactivement les réformes du gouvernement, etc.
Ce qui est important, c’est que toutes les applications qui seront construites partagent des règles encodées une seule fois.
Le code n’est pas qu’un moyen
Notons bien que le langage de cette base n’en est pas un dans le sens où tout n’y est pas exprimable. L’erreur serait de voir le support de l’implémentation de la loi comme une feuille blanche et un crayon, ce qui est le cas avec un langage complet comme python. Ce ne peut être un espace totalement libre pour le développeur qui y code les règles. En effet, ces langages complets permettent de tout faire, mais de mille façons différentes, et il devient alors impossible pour un ordinateur de l’interpréter afin d’en faire autre chose qu’un calcul. La plateforme doit encoder et exposer les lois, pas être un kit de complexification de la loi à destination des législateurs (en tout cas pas dans l’état actuel de l’accessibilité de la loi !).
Le code lui-même est l’un des objectifs, pas seulement un moyen de faire des calculs.
En termes techniques, on va rendre le code des règles plus déclaratif qu’_impératif _: ça veut dire qu’au lieu de vraiment y exprimer le calcul — “ma règle retourne A x T”, on va plutôt faire une description de l’objectif — “ma règle est une cotisation dont la formule est une multiplication d’une assiette A par un taux T*”.* Ça peut paraître étonnant, mais c’est techniquement difficile d’écrire un programme qui comprend que dans notre premier exemple l’information A est une assiette qui aura sa place dans la colonne “base” de votre fiche de paie.
En réalité, beaucoup de domaines législatifs sont des compositions de mécanismes relativement simples. On met à disposition de la personne qui va écrire les règles de base un manuel et une valise d’outils adaptés au domaine à implémenter : dans notre exemple, c’est les mots-clefs “cotisation”, “multiplication”, “assiette” et “taux”. Lue par le moteur, cette description pourra donner cette multitude d’usages.
La loi lisible
Comme il traite un sujet important, ce code doit évidemment être ouvert. Malheureusement, ce n’est le cas de la majorité des services actuels qui impactent notre vie quotidienne, du système informatique de vos remboursements de santé (mutuelle et sécurité sociale) au RSA en passant par le code qui calcule votre taxe d’habitation. Ce sujet des algorithmes ouverts a fait récemment la une grâce aux demandes citoyennes d’ouverture du code des impôts de Bercy et de celui qui attribue des places dans les universités (APB) développé par le ministère de l’éducation. Et ça va très loin : on peut lire ici à propos d’algorithmes de prédiction utilisés par la police aux États-Unis pour libérer des détenus.
Le code est souvent assimilé à une boîte noire qui transforme des entrées (votre situation) en sorties (vos droits ou obligations).
Les demandes d’ouverture, quand par chance elles aboutissent, n’obtiennent jamais un code lisible par tous, seulement ouvert (“open source”) mais pénible à lire même pour ceux qui sont familiers avec le langage de programmation utilisé. Les règles sont donc soit cadenassées (code caché) soit opaques (code public mais illisible par la plupart)— et on réserve le même sort aux incontournables tests, qu’il faut voir comme des exemples, utiles autant pour comprendre le code que pour prouver son bon fonctionnement.
À quoi bon avoir accès aux rouages si vous n’êtes pas horloger ?
Ça tombe bien : un code source plus déclaratif, permettant plusieurs usages quand il est lu par un programme, sera aussi plus accessible pour les citoyens. Ne nous faisons pas d’illusion : il faudra quand même un certain investissement pour comprendre les blocs de texte affichés à l’écran. Mais justement, c’est sur le Web qu’il sera présenté dans sa version finale enrichie pour le citoyen (c’est justement cette base documentaire 3.0).
Nous sommes de plus en plus confrontés à des algorithmes qui sont complètement opaques, c’est le cas pour la reconnaissance des visages (on pense notamment à Facebook et Google, mais les plus inquiétants sont sûrement ceux branchés sur les caméras de sécurité dans les lieux publics). Mais pour une bonne raison : impossible de résoudre ces problèmes de reconnaissance d’image en empilant des règles de programmation classique.
Faisons donc l’effort de bien expliquer ce qui est toujours facilement explicable, et c’est le cas des règles de notre législation. C’est elles qui viendront articuler les entrées et sorties de ces boîtes noires, points de contact, d’interprétation du monde réel mais pas d’action.
Construisons un base ouverte de règles lisibles et exécutables, socle d’une multitude d’applications permettant d’expliquer et d’appliquer la loi.
À ce stade et après cette digression, une réaction tout à fait normale serait : « c’est une bonne idée… mais la loi est bien trop compliquée. Vous allez vous casser la gueule dès le début de votre encodage du monstre législatif ! ». Et en effet, on pourrait multiplier encore les sujets candidats à la traduction : un troisième exemple serait les règles de protection de l’environnement dont l’application est surveillée par les DREAL de chaque région. Et puis d’autres sujets de notre vie de tous les jours seraient à envisager : les obscures règles d’avancement et de salaire au boulot; les règles des seuils de pollution des villes menant à une information, une alerte ou des actions (et lesquelles ? circulation alternée, gratuité des transports…). Vous avez sûrement vous-même identifié la bête noire que vous ne comprenez pas ou qui vous fait perdre du temps.
Commençons petit
Effectivement, on n’a pas le niveau pour lancer un grand projet qui implémenterait tous ces sujets en même temps comme un ensemble cohérent : il n’existe pas aujourd’hui de théorie ni d’initiative concrète expérimentant un droit entièrement exécutable. Alors on va se lancer en grimpant une petite colline. En plus de produire des applications utiles, elle devrait nous donner une meilleure vue du massif.
En d’autres termes, pour ne pas investir des centaines de millions d’euros puis se planter, il nous faut donc encourager les initiatives restreintes donc réalistes, qui se concentrent sur des petits sujets de la loi qui sont sources de confusion ou de coûts importants. Comme évoqué dans l’introduction, le domaine des obligations et droits financiers qui lient l’entreprise ou le citoyen à l’État ou à la sécurité sociale est une bonne piste. Il est en effet peuplé principalement de règles qui sont des compositions de simples calculs « arithmétiques », comme nous l’avons illustré plus haut. Ça ne l’empêche pas d’être technique, bourré d’exceptions et dispersé. Mais notre chance c’est que contrairement au reste, il n’est presque pas affecté par cette difficulté aujourd’hui irréductible de l’implémentation des termes qui appellent un jugement humain.
Dans ce domaine, il y a le sujet plus restreint des cotisations sociales. Mal compris, ses règles pèsent pourtant 500 milliards d’€, horrifient tous les patrons et plombent notre chèque de fin de mois… En contrepartie, elles financement la sécurité sociale du pays, c’est à dire nos hôpitaux, retraites, assurance chômage et aides sociales.
On a commencé !
Une suite à cet article expliquera ce sujet des cotisations sociales, comment il est géré aujourd’hui dans notre pays, et la tentative d’une petite équipe de l’État pour le traduire en base de règles exécutables et lisibles. Restez branchés !
En attendant, la base est construite sur ce site, et vous pouvez dès maintenant utiliser son premier produit en beta qui permet de calculer le salaire net et le coût d’embauche d’un CDI ou CDD.
C’est en cours de construction, et c’est d’ailleurs une implémentation modeste des principes de cet article. D’autres initiatives feront un travail de modélisation similaire sur d’autres domaines. Peut-être qu’elle se généralisera progressivement à ces autres domaines, ou bien s’effacera face à un concurrent plus prometteur…
Cet article est suivi d'un deuxième beaucoup plus pratique : venez découvrir comment on peut facilement expliciter l'algorithme de l'impôt sur le revenu.
Un tout petit peu de bibliographie.
Cet article d’un blog personnel introduit bien le couple loi-code. Il compare malheureusement la loi à du code moyen, pas très élégant. Sa conclusion vaut la lecture : elle note l’importance du mot “raisonnable” dans notre système législatif.
À retenir :
Legislation endeavours to be unambiguous, and yet it’s infamous for being plagued with ambiguity problems. […] Computer code doesn’t try to be unambiguous, it simply is unambiguous — by its very definition. A piece of code, when supplied with any given input, is quite literally incapable of returning inconsistent output.
L’article Computational Law, Symbolic Discourse, and the AI Constitution de Stephen Wolfram (scientifique pluridisciplinaire notamment créateur du calculateur Mathematica) tourne longuement autour du pot, n’apporte rien de concret (à part ses produits commerciaux) mais est intéressant : il pense que le rêve de Leibniz, écrire une loi calculable, est aujourd’hui à notre portée : un symbolic discourse language : machine learning en entrée, Ethereum…
À noter :
✏️ Signaler une erreurOne might think that writing everything as code, rather than natural-language legalese, would be a burden. But my guess is that it will actually be a great benefit.
Nos derniers articles
- Publié le jeudi 11 mai 2023
- Publié le mardi 2 mai 2023
- Publié le dimanche 29 janvier 2023
- Publié le mercredi 1 juin 2022
- Publié le vendredi 2 avril 2021
- Publié le samedi 13 mars 2021
- Publié le mardi 29 septembre 2020
- Publié le samedi 8 août 2020
- Publié le dimanche 26 avril 2020
- Publié le samedi 4 avril 2020
- Publié le dimanche 20 octobre 2019
- Publié le jeudi 21 juin 2018