Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publicodes v1 #27

Closed
mquandalle opened this issue Dec 10, 2020 · 3 comments
Closed

Publicodes v1 #27

mquandalle opened this issue Dec 10, 2020 · 3 comments

Comments

@mquandalle
Copy link
Collaborator

Publicodes est né à l'intérieur du simulateur de coût d'embauche, comme un DSL pour les cotisations sociales. Nous pensons néanmoins que son intérêt va bien au delà, et souhaitons en faire un langage de modèles ouverts, facilement lisible et éditable par un non-programmeur et permettant de générer automatiquement une documentation des calculs.

Pour permettre la ré-utilisation de Publicodes nous avons travaillé depuis plus d'un an à la séparation des bases de code, la documentation de l'existant, l'ergonomie du langage, la formalisation de son modèle d'évaluation, la fiabilisation de son implémentation, la création d'un site public et d'un bac à sable d'expérimentation. Il reste beaucoup à faire, mais nous approchons d'une version effectivement utilisable par des tiers.

L'avancement des travaux est suivi dans 🗃 ce kanban.

Et après

  • Créer un paquet language-tools implémentant le Language Server Protocol pour avoir de l'auto-complétion dans nos IDE betagouv/mon-entreprise#1033
  • L'utilisateur peut définir ses propres mécanismes
  • L'utilisateur peut définir ses propres types de valeurs (distributions de probabilités, échantillonnages) et faire des calculs dessus avec les mécanismes usuels (somme, produit, grille, etc.)
  • Créer une interface utilisateur pour éditer les règles sans risque d'erreur syntaxique
@mquandalle mquandalle pinned this issue Dec 10, 2020
@johangirod
Copy link
Member

Merci pour le compte rendu ! On peut aussi créer une milestone github pour lier les ticket concernés.

J'ajouterai des considération plus bas niveau : pour passer en v1, il faudrait être assez sûr de soi sur l'API. Pour l'instant publicode exporte pas mal de choses, certaines utiles d'autres peut-être moins.

Mais le principal problème c'est l'exposition des "internals" du moteur à la sortie des évaluation, puisque l'entièreté de l'AST y est exposé. Pour pouvoir être confiant sur notre capacité à améliorer publicodes sans porter de breakings, je serai d'avis de restreindre grandement la surface de l'API. Par exemple en spécifiant le type de noeud à la sortie des évaluations de manière très précise (on pourrait imaginer : {type: 'booléen' | 'texte' |

Mais en même temps, restreindre l'API c'est empecher le hack, et donc l'utilisation un peu plus poussée de la librairie. Que faire ? Avoir une fonction UNSAFE_ qui permette de récuperer l'AST mais qui peut avoir des breakings d'une mineure à l'autre ?

Par ailleurs certains mécanisme sont encore voué à évoluer (une possibilité ou synchronisation pour ne citer qu'eux). Doit-on se concentrer sur leur nouvelle forme avant de passer en V1 ? Ou les marquer comme 'unsafe' ?

De mon côté, je pense en vérité qu'il faut encore prendre un peu plus de temps avant la V1, afin de régler les issues suivantes :

@mquandalle
Copy link
Collaborator Author

Oui j'ai oublié des items, n’hésites pas à modifier la liste originale. Complétement d'accord avec toi sur les sorties. D'ailleurs peut-être que l'item "Mode strict Typescript" que j'ai mis en facultatif est en fait un pré-requis.

Pour le mécanisme synchronisation, on a effectivement pas envie de le "publier" tel quel, on peut soit le cacher d'une manière ou d'une autre (private: true), soit donner la possibilité à l'utilisateur de publicodes de renseigner ses propres mécanismes ({parse, evaluate, Explanations}) et dans ce cas le garder dans la base de code mon-entreprise.

@mquandalle mquandalle transferred this issue from betagouv/mon-entreprise May 12, 2021
@mquandalle
Copy link
Collaborator Author

Le kanban n'a pas été transféré lors de la migration de dépôt, on pourra ré-organiser une feuille de route pour publicodes v1 avec les nouvelles “issues” https://github.com/features/issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants