Skip to main content
Welcome. This site supports keyboard navigation and screen readers. Press ? at any time for keyboard shortcuts. Press [ to focus the sidebar, ] to focus the content. High-contrast themes are available via the toolbar.
serard@dev00:~/cv

Lex Studio — VSCodium pour juristes

Le probleme de l'asymetrie d'acces est le suivant : tout ce qui precede — les DSLs types, les bridges, le Quality Gate, la pyramide des tests, le packaging NuGet — suppose que le praticien sache manipuler un .csproj, ecrire des attributs C#, lire un diagnostic Roslyn. Un developpeur avec cinq ans d'experience le fait sans y penser. Un juriste avec vingt ans de droit constitutionnel ne le fera jamais sans mediation. Et un citoyen qui veut savoir si son RSA majore a change ne devrait meme pas savoir que C# existe.

La solution technique a ce probleme est connue, deployee, et eprouvee dans au moins quatre domaines : une distribution IDE dediee qui masque le langage sous-jacent derriere une interface metier. C'est ce qu'on appelle Lex Studio.

Le pattern : masquer le langage, exposer le metier

Quatre precedents etablissent le pattern :

RStudio masque R derriere une UI orientee statisticien. Le statisticien pense en termes de dataframes, de plots, de modeles lineaires. Il ne pense pas en termes de vecteurs R, de fonctions apply, de environments scopes. RStudio lui presente une console, un explorateur de variables, un panneau de visualisation, un editeur de scripts — et R est la en dessous, invisible, executant tout. Le statisticien n'a pas besoin de connaitre R pour utiliser RStudio. Il a besoin de connaitre les statistiques.

Rider for Unity masque .NET derriere une UI orientee game developer. Le game dev pense en termes de scenes, de GameObjects, de composants, de physics. Rider lui presente un inspecteur de scene, un debugger visuel, une palette de composants — et C#/.NET est la en dessous, invisible. Le game dev n'a pas besoin de connaitre le CLR pour faire un jeu.

Jupyter masque Python derriere une UI notebook. Le data scientist pense en termes de cellules, de visualisations inline, de narratif exploratoire. Il ne pense pas en termes de __main__, de sys.path, de GIL. Jupyter lui presente des cellules executables, des sorties inline, un format .ipynb partageable — et Python est la en dessous, invisible.

Overleaf masque LaTeX derriere une UI WYSIWYG. L'academique pense en termes de sections, de references croisees, de bibliographie. Il ne pense pas en termes de \begin{document}, de \usepackage, de \phantomsection. Overleaf lui presente un editeur visuel avec rendu en temps reel — et LaTeX est la en dessous, invisible.

Le pattern est toujours le meme : le langage sous-jacent est puissant, expressif, et difficile d'acces pour le non-initie. Une couche d'interface le rend accessible en traduisant les concepts du metier (statistiques, game design, data science, typographie academique) en operations sur le langage. Lex Studio applique exactement ce pattern au droit : le juriste pense en termes d'articles, d'alineas, de mesures, de procedures, de statuts. Il ne pense pas en termes de classes C#, d'attributs, de namespaces, de NuGet. Lex Studio lui presente une interface juridique — et C# est la en dessous, invisible, compilant tout avec Roslyn.

La distribution : VSCodium + neuf extensions

On prend VSCodium — le fork OSS pur de VS Code, sans telemetrie Microsoft, sous licence MIT — et on y ajoute neuf extensions TypeScript specifiques au droit. Le tout est redistribue comme un installateur unique sous le nom Lex Studio. Le juriste telecharge Lex Studio comme il telechargerait Word. Il l'ouvre. Il voit une interface juridique. Il ne sait pas qu'il utilise VSCodium, ni que ses fichiers sont du C#, ni que Roslyn compile en arriere-plan.

Lex.LegalTextView — le C# qui ressemble a du droit

L'extension la plus importante est celle qui change ce que le juriste voit. Au lieu du code C# brut avec ses sealed class, ses [Article], ses public void, le juriste voit un texte juridique mis en page : police serif, numerotation d'articles, retrait d'alineas, references cliquables. L'extension lit les attributs [Article] et [Paragraph] du fichier C# sous-jacent et les rend visuellement comme un texte de loi imprime.

// Ce que le fichier contient reellement :
[Article("L262-9")]
[SourceLegislative("LOI n 2026-156 du 15 fevrier 2026, art. 8")]
public sealed class ArticleL262_9
{
    [Paragraph(1)]
    [Measure(MeasureKind.Allocation, Amount = 1124,
        Currency = "EUR", Frequency = "Monthly")]
    public void IncreasedRsaForSingleParent() { }
}

// Ce que Lex.LegalTextView affiche au juriste :
// ┌──────────────────────────────────────────────────┐
// │  Article L262-9                                   │
// │  (LOI n 2026-156 du 15 fevrier 2026, art. 8)     │
// │                                                   │
// │  Alinea 1.                                        │
// │  Allocation : RSA majore pour parent isole,       │
// │  1 124 EUR/mois.                                  │
// │  [Mesure: Allocation]  [Montant: 1 124 EUR]       │
// └──────────────────────────────────────────────────┘

Le juriste edite le texte visible ; l'extension recrit le C# sous-jacent. Le fichier .cs est la source de verite, mais le juriste ne le voit jamais.

Lex.AttributePalette — la barre d'outils juridique

Une palette laterale qui presente les operations juridiques comme des boutons : Ajouter une mesure, Declarer une procedure democratique, Changer le statut d'un bien, Marquer comme experimental. Chaque bouton genere les attributs C# correspondants, les using necessaires, et les FQN complets. Le juriste clique ; le C# s'ecrit.

La palette est contextuelle : elle ne propose que les attributs applicables a l'element selectionne. Si le juriste est positionne sur un article, la palette propose [Measure], [DemocraticProcedure], [FeatureFlag], [ExperimentalIn]. Si le juriste est positionne sur un alinea, la palette propose [Verifies], [Cited], [SourceLegislative]. Les attributs invalides dans le contexte courant sont grises avec une explication en infobulle. C'est le meme pattern que la toolbox de Visual Studio pour les designers de formulaires Windows Forms — mais applique aux attributs juridiques.

Lex.TypeBrowser — l'explorateur de cadres

Un panneau arborescent qui affiche le contenu du cadre Common.${Space}${Time}.${Author} actif : les IAsset, les ISpace, les IProcedure, les IStatus. Le juriste navigue dans les biens, les espaces, les procedures comme il naviguerait dans un explorateur de fichiers. Un clic sur un item ouvre sa definition dans LegalTextView. Sous le capot, c'est la reflexion Roslyn sur les assemblies du cadre — mais le juriste voit un catalogue juridique, pas une arborescence de types C#.

Lex.DiagnosticPanel — les problemes en langage clair

Les diagnostics Roslyn (CIT001, CIT003, LOI001, LOI002) sont traduits en langage juridique clair dans un panneau dedie. Au lieu de CS8602: Dereference of a possibly null reference, le juriste lit Article L262-9 : le montant du RSA majore a change, votre cas est affecte — cliquez ici pour voir le detail. Les codes techniques sont masques ; le sens juridique est expose.

Le panneau organise les diagnostics par severite et par theme juridique, pas par fichier source. Un juriste qui travaille sur le droit du logement voit d'abord les diagnostics lies au logement, regroupes par article. Les diagnostics d'information (votre cas active tel droit) sont visuellement distincts des diagnostics d'alerte (cet article a ete modifie) et des diagnostics d'erreur (procedure democratique manquante). Le code technique CIT003 est toujours accessible en cliquant sur le diagnostic — il n'est pas supprime, il est masque par defaut.

Lex.WordExport — le bouton "Exporter"

Un bouton Exporter en Word/PDF qui produit un document juridique formate, pret a etre imprime ou envoye. Le export declenche un dotnet build silencieux qui re-verifie la coherence, puis genere le document a partir des attributs types. Le juriste obtient un document Word avec la mise en page classique des textes de loi — articles numerotes, alineas retrait, references en notes de bas de page. Le compilateur a verifie chaque assertion avant l'export.

Lex.MyCasesBuilder — le wizard citoyen

Pour les citoyens : un wizard Decrivez votre situation qui genere le MyCases/MyCase.cs etape par etape. Le wizard pose des questions en langage naturel (Etes-vous parent isole ? Avez-vous perdu votre emploi recemment ? Dans quelle commune habitez-vous ?) et traduit les reponses en attributs C# types. Le citoyen repond a un questionnaire ; le wizard ecrit le code ; le compilateur repond avec des diagnostics types que Lex.DiagnosticPanel traduit en langage clair.

Sous le capot, c'est un .csproj, des packages NuGet, et un dotnet build. Mais Mathilde n'en voit rien. Elle voit un questionnaire, des reponses, et un panneau qui lui dit : Vous avez droit au RSA majore de 1 124 EUR/mois. Et si sa situation change — si elle retrouve un emploi, si elle demenage, si un enfant nait — elle modifie ses reponses dans le wizard, le compilateur relance les diagnostics, et les nouveaux droits apparaissent. C'est le sixieme regime d'usage (cf. Partie 12 — Les six regimes d'usage) rendu accessible a une personne qui ne sait pas ce qu'est un compilateur.

Lex.LegifranceImport — le pont avec le droit existant

Un bouton Importer depuis Legifrance. Le juriste colle une URL Legifrance ; l'extension consomme le flux XML, invoque le LegifranceXmlImporter (cf. Partie 13 — Versioning, packaging, distribution), et genere les attributs C# types correspondants dans un nouveau fichier. Le pipeline XML vers CrossModel vers C# est exactement le meme que le pipeline de publication quotidien, mais invoque localement et integre dans l'IDE.

Les attributs [Verifies], [Cited], [SourceJORF] deviennent des hyperliens cliquables dans un panneau lateral. Un clic sur une reference jurisprudentielle ouvre l'arret dans un onglet integre. Le juriste navigue entre les articles types et les arrets cites comme il naviguerait entre des pages web — mais chaque lien est verifie par le compilateur, pas sujet aux liens morts.

Lex.QuickFixesJuridiques — les actions en un clic

Les Quick Fixes Roslyn sont la fonctionnalite la plus puissante de l'ecosysteme VS Code pour les developpeurs. Dans Lex Studio, ils deviennent des actions juridiques en langage clair. Au lieu de Add missing using directive, le juriste voit Activer ce droit. Au lieu de Implement interface member, il voit Completer la procedure democratique requise. Au lieu de Remove unused variable, il voit Supprimer cet article devenu caduc.

Chaque Quick Fix est un CodeFixProvider Roslyn standard, ecrit en C# dans le projet du cadre. L'extension Lex.QuickFixesJuridiques traduit son titre technique en titre juridique via une table de mapping configurable par cadre. Le code est le meme ; seule la presentation change.

Trivialite technique, transformation d'usage

Il faut insister sur ce point : rien de ce qui precede n'est techniquement difficile. Les neuf extensions sont des extensions TypeScript standard pour VS Code. Le LegalTextView est un custom editor provider avec un renderer HTML. L'AttributePalette est un webview sidebar. Le TypeBrowser est un tree data provider. Le DiagnosticPanel est un diagnostic collection listener. Le WordExport est un appel a dotnet build suivi d'un template DOCX. Le MyCasesBuilder est un multi-step input wizard. Le LegifranceImport est un HTTP fetch suivi d'un XML parser. Le JurisprudenceLink est un document link provider. Les QuickFixesJuridiques sont un code action filter.

Chacune de ces extensions est un projet de deux a quatre semaines pour un developpeur TypeScript competent. L'ensemble est faisable en six a neuf mois avec une equipe de trois a quatre personnes. C'est de la plomberie d'integration, pas de la recherche.

Pour etre concret sur les APIs VS Code utilisees : LegalTextView est un CustomEditorProvider qui recoit le contenu du fichier .cs, le parse pour extraire les attributs [Article] et [Paragraph], et rend un document HTML dans un webview. AttributePalette est un WebviewViewProvider enregistre dans le panneau lateral. TypeBrowser est un TreeDataProvider<LegalTypeNode> qui interroge le Language Server Roslyn via le protocole LSP pour obtenir les types du projet. DiagnosticPanel ecoute la collection languages.onDidChangeDiagnostics et traduit les codes via une table de mapping JSON embarquee dans l'extension. Chaque API est documentee, stable, et utilisee par des milliers d'extensions existantes.

Ce qui est transformateur, ce n'est pas la technique — c'est le fait que le juriste, le citoyen, le juge n'ont plus besoin de savoir que C# existe pour beneficier de toute la puissance du systeme de types, du compilateur, des analyzers, du packaging, de la distribution.

Le complement : Ship 4 Blazor WASM pour les citoyens sans installation

Lex Studio suppose que le citoyen installe un logiciel. Pour ceux qui ne veulent ou ne peuvent pas, le Ship 4 de la roadmap (cf. Partie 18 — Roadmap) prevoit une application Blazor WASM qui execute Roslyn dans le navigateur. Le citoyen ouvre une page web, repond au wizard MyCasesBuilder, et obtient ses diagnostics sans rien installer. Le compilateur tourne dans un WebAssembly sandbox ; les packages NuGet sont charges depuis le CDN du registre.

Blazor WASM + Roslyn-in-browser est un sujet technique deja explore par la communaute .NET (voir Try .NET, SharpLab, Blazor REPL). La faisabilite est demontree. Le compilateur Roslyn compile en C# vers IL ; l'IL s'execute dans le runtime .NET embarque dans le WASM ; les packages NuGet sont charges depuis le CDN du registre via des HTTP range requests pour minimiser la bande passante. Le premier chargement est lourd (le runtime .NET WASM pese une vingtaine de megaoctets), mais les chargements subsequents beneficient du cache du navigateur.

La combinaison Lex Studio (pour les professionnels du droit) + Blazor WASM (pour les citoyens) couvre les deux populations principales sans exiger de l'une ni de l'autre qu'elle devienne developpeur. Le professionnel installe Lex Studio et beneficie de la puissance complete de l'IDE (debugging, refactoring, multi-projets, git integre). Le citoyen ouvre une page web et repond a un wizard — il n'installe rien, ne configure rien, et obtient des diagnostics types en moins de trente secondes. Les deux parcours consomment les memes cadres NuGet, les memes analyzers Roslyn, les memes diagnostics types. La difference est dans l'interface, pas dans le moteur.

Le theme Lex — l'identite visuelle du droit type

Au-dela des extensions, Lex Studio embarque un theme visuel dedie. Les polices par defaut sont serif pour le texte juridique (rendu par LegalTextView) et monospace pour le code (visible uniquement quand le juriste choisit de voir le C# sous-jacent). Les couleurs reprennent les conventions de la typographie juridique francaise : bleu fonce pour les articles, gris pour les numeros d'alineas, rouge pour les diagnostics d'erreur, vert pour les diagnostics d'information.

Des templates de projets sont pre-installes. Quand un juriste cree un nouveau projet dans Lex Studio, il ne voit pas Console App ou Class Library — il voit Nouveau corpus juridique, Nouveau cas citoyen, Nouveau fork de cadre. Chaque template genere le .csproj, le nuget.config, les fichiers de demarrage et une structure de dossiers adaptee au type de projet. Le juriste commence a ecrire des articles types en moins de deux minutes, sans avoir jamais vu un .csproj.

Ce que Lex Studio ne fait pas

Lex Studio ne supprime pas l'asymetrie d'autorite. Etalab reste l'editeur officiel du cadre Law.France2026.Etalab ; LaQuadrature reste l'editeur de son fork. Le juriste qui utilise Lex Studio ne devient pas legislateur — il devient lecteur type du droit, capable de le manipuler, de le tester, de le contester avec les outils du compilateur. Le citoyen qui utilise le wizard MyCasesBuilder ne devient pas juriste — il devient destinataire informe de ses droits, guide par des diagnostics types au lieu de se perdre dans des formulaires PDF.

L'asymetrie d'autorite est un probleme politique, pas technique. La Partie 16 — Question meta-sociale traite de la question qui va generer les cadres, qui est la vraie question democratique. Lex Studio traite de la question qui peut lire et manipuler les cadres une fois generes — et la reponse est : tout le monde, sans bagage technique.

C'est deja enorme. Aujourd'hui, un citoyen qui veut contester un article de loi doit soit engager un avocat, soit lire le Journal officiel en PDF, soit se perdre dans Legifrance. Demain, il ouvre Lex Studio, importe l'article, lance un dotnet build, et le compilateur lui dit exactement ce que l'article implique pour son cas. L'article est type, les consequences sont calculees, les references croisees sont verifiees. Le citoyen n'a pas besoin de comprendre le C# — il a besoin de comprendre les diagnostics que Lex.DiagnosticPanel lui traduit en langage clair. Et si les diagnostics ne lui conviennent pas, il peut forker le cadre, modifier l'article, et voir ce qui change. La manipulation du droit type n'est plus reservee aux techniciens — elle est accessible a quiconque sait cliquer sur un bouton.

⬇ Download