# Genèse de publi.codes Publicodes a été créé comme le moteur sous-jacent du Simulateur d'embauche, ancètre de mon-entreprise.fr. À l'origine, le projet tournait sur OpenFisca : c'était une simple page Web où l'on rentrait son salaire brut et quelques autres informations, OpenFisca calculait le salaire total et le net, le site l'affichait. OpenFisca nous a permi d'avoir un coup d'avance en profitant d'un premier modèle très basique de la fiche de paie. Dans un premier temps, nous avons amélioré ce modèle ligne par ligne pour arriver à un simulateur fiable. Malgré ses avantages certains (open source, petite communauté active, financé par l'État), OpenFisca avait de nombreux problèmes. En premier lieu, la complexité excessive d'écriture des règles de calcul. Mais aussi le fait que le moteur OpenFisca répond au schéma traditionnel d'une API, alors que la complexité de ce genre de projet réside tout autant dans le formulaire lui-même. La communauté OpenFisca avait mené pas mal de travaux pour réécrire le projet (notamment dans le langage Julia, ou encore dans une nouvelle syntaxe inspirée d'OCaml dont nous avions rencontré un développeur actif), mais aucune n'a abouti. Une tentative d'amélioration d'OpenFisca, pour lui donner la possibilité d'exprimer plus simplement des règles de calcul en YAML, n'avait pas accroché la communauté. Plus d'infos [ici](https://github.com/betagouv/publicodes/wiki/Projets-similaires). Il se trouvait que le simulateur d'embauche devait en fin 2016 intégrer une toute nouvelle brique, le CDD (seul le CDI était implémenté). C'était l'occasion pour expérimenter, à côté de la version en production basée sur OpenFisca, l'écriture sur un domaine très restreint d'un nouveau langage qui rendrait l'expérience de l'écriture du modèle social français agréable et fluide pour le développeur : ce sont les débuts de publicodes, d'abord limité au modèle des cotisations sociales, d'où son petit nom *syso* pour "système social". Tout l'historique du projet (publicodes était alors intimement lié à mon-entreprise.fr) est disponible dans les notes de version : https://github.com/betagouv/mon-entreprise/releases?page=4. Au coeur de cette expérimentation était l'aspiration à expliquer ce modèle social de plus en plus complexe, à n'importe quel internaute curieux, plutôt que de réserver sa compréhension à une plongée pénible dans le code, accessible uniquement à une élite de développeurs. Ce principe d'explication du code est raconté dans un premier article de blog [Vers une implémentation officielle de la loi](https://kont.me/vers-implémentation-officielle-de-la-loi), puis un deuxième [L’État nous doit des explications](https://kont.me/l-état-nous-doit-des-explications). On voit dans cette capture d'une des premières versions du nouveau site le principe de ce langage compréhensible par une personne lambda. ![](https://i.imgur.com/48HZkMS.png) Ce n'est qu'une version Web du code, lui-même écrit dans un français compréhensible. À noter que la communauté OpenFisca a alors décidé de ne pas suivre ce développement, mais aussi d'exclure la petite équipe Simulateur d'embauche de la gouvernance. Basé sur ce nouveau "moteur", le projet a pu avancer très rapidement, décrochant notamment un financement puis une internalisation par l'URSSAF, qui a conduit l'équipe à lancer mon-entreprise.fr. Le site a rencontré son public avec plus de 4 millions de simulations par an à ce jour sur une dizaine de simulateurs, pour une équipe autonome qui n'a jamais dépassé les 2-3 personnes. Une fois ce succès rencontré, le moteur de calcul a été séparé du code par l'équipe, suite à l'intérêt d'autres projets pour cette syntaxe qui n'est autre qu'un langage de programmation spécifique qui a la particularité de s'exhiber de façon lisible sur le Web. Le site https://publi.codes permet de comprendre ses principes et même de tester rapidement en ligne quelques calculs simples. Aujourd'hui, publi.codes est développé sur son [dépôt github](github.com/betagouv/publicodes) par une petite communauté active (principalement des membres de beta.gouv.fr, mais aussi des chercheurs de l'INRIA, des banques, etc), utilisé par plusieurs équipes dont mon-entreprise.fr, nosgestesclimat.fr et code.travail.gouv.fr, avec au total des [dizaines de milliers](https://github.com/mquandalle/count-publicodes-lines#readme) de lignes de code exprimées dans un français qui se veut compréhensible. Il est donc *de facto*, le langage de référence d'une (petite) partie du droit français *calculable* (le droit qui manipule des chiffres et des conditions d'application de règles) : droit de la sécurité sociale, droit du travail (dont un début du millefeuille des conventions collectives), mais aussi support du modèle de référence français du calcul d'empreinte carbone.