<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joachim Ganseman &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/author/ganseman/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:23:58 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>Joachim Ganseman &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Rules as Code&#160;: leçons tirées d&#8217;une expérience</title>
		<link>https://www.smalsresearch.be/rules-as-code-partie2-fr/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Sat, 31 Jan 2026 19:35:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[AI4GOV]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=26114</guid>

					<description><![CDATA[Que se passe-t-il lorsqu'on s'attaque à un projet de Rules As Code avec un EDI basé sur l'IA ?]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar&nbsp;<a href="/rules-as-code-deel2-nl/" data-type="post" data-id="22734">in het Nederlands</a>.</em></p>



<p><a href="/rules-as-code-fr/">Dans un article précédent</a>, nous avons examiné <a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/news/rules-code-rac">Rules as Code</a>, une approche visant à réduire l&#8217;écart entre les réglementations et les logiciels. Nous avons illustré qu&#8217;il existe de nombreux obstacles pratiques à surmonter, malgré l&#8217;objectif louable. L&#8217;encodage uniforme des règles avec leur historique, leurs interdépendances et leurs dépendances est un défi qui peut nécessiter un investissement considérable en termes de personnel et de ressources. De plus, une gestion active permanente est nécessaire pour prendre en compte chaque modification apportée aux règles. Même à petite échelle, une collaboration étroite entre juristes et développeurs est indispensable, car des décisions motivées devront régulièrement être prises en matière d&#8217;interprétation. En l&#8217;absence de normes industrielles et alors que les meilleures pratiques sont encore en cours d&#8217;élaboration, les <em>early adopters</em> risquent de devoir payer la <a href="https://terryu.substack.com/p/bridging-the-gap-between-early-and">pioneer tax</a>. La complexité des compétences gouvernementales ne facilite pas une éventuelle application en Belgique.</p>



<p>Partiellement sous l&#8217;impulsion du <a href="https://www.oecd.org/en/publications/cracking-the-code_3afe6ba5-en.html">rapport détaillé de l&#8217;OCDE de 2020</a>, certaines administrations se sont déjà pleinement engagées dans l&#8217;élaboration de proof-of-concepts, parfois à grande échelle. Il existe donc aujourd&#8217;hui plusieurs cadres relativement matures. La France est sans aucun doute le pays pionnier&nbsp;; l&#8217;initiative que nous allons présenter ci-dessous vient de France. Les <a href="https://regels.overheid.nl/">Pays-Bas</a> ne sont pas en reste&nbsp;: l&#8217;administration fiscale néerlandaise utilise depuis un certain temps déjà son propre langage de domaine, <a href="https://regels.overheid.nl/docs/methods/REGELSPRAAK">RegelSpraak</a>, qu&#8217;elle interprète et traite à l&#8217;aide du <em>rule engine</em> <a href="https://regels.overheid.nl/docs/methods/ALEF">ALEF</a>. Cependant, le <a href="https://gitlab.com/normativesystems">code source publié</a> à ce sujet semble pour l&#8217;instant se concentrer davantage sur la méthodologie que sur les applications.</p>



<h1 class="wp-block-heading">OpenFisca</h1>



<p>OpenFisca <a href="https://openfisca.org/en/about/">a vu le jour en 2011 </a>en tant que moteur de <a href="https://en.wikipedia.org/wiki/Microsimulation">microsimulation</a> open source permettant de convertir les règles fiscales et sociales (&#8220;tax &amp; benefit system&#8221;) en code exécutable. Les effets de cette réglementation, et les éventuelles modifications, peuvent alors être simulés tant pour des cas individuels que pour des populations entières. Parmi les sites web utilisant OpenFisca en arrière-plan, on peut citer <a href="https://leximpact.an.fr/">LexImpact</a> (simulation des modifications de la législation socio-fiscale), <a href="https://www.mesdroitssociaux.gouv.fr/">Mes droits sociaux</a> (simulation des droits sociaux) et <a href="https://mes-aides.1jeune1solution.beta.gouv.fr/">1jeune1solution</a> (mesures de soutien diverses). Parmi les exemples étrangers, citons <a href="https://benefitme.nz/">BenefitMe</a> (Nouvelle-Zélande), <a href="https://lesmevesajudes.barcelona.cat/">Les meves ajudes</a> (Barcelone) ou <a href="https://www.policyengine.org/">PolicyEngine</a> (Royaume-Uni/États-Unis) – ces derniers ayant toutefois nécessité des <a href="https://github.com/PolicyEngine">modifications importantes</a> du moteur.</p>



<p>Afin de modéliser notre propre système fiscal et/ou de sécurité sociale, nous devons créer une <em>fourche </em>du <a href="https://github.com/openfisca/country-template">Template country OpenFisca</a> générique. Plusieurs autres pays ont déjà expérimenté cette approche, comme le Sénégal, le Paraguay et la Tunisie, qui figurent dans la <a href="https://github.com/orgs/openfisca/repositories">liste des repositories</a>. La législation régionale ou locale peut être ajoutée grâce à <a href="https://openfisca.org/doc/contribute/extensions.html">des extensions plugin</a>à un système national, comme <a href="https://github.com/openfisca/openfisca-paris">celui de Paris</a>. Une fois le repository initialisé, nous pouvons commencer à travailler sur ce qui pourrait un jour devenir <em>openfisca-belgium</em>. La modélisation dans OpenFisca se fait en écrivant des classes et des méthodes Python, qui représentent les entités, les variables et les formules de calcul issues de la réglementation.</p>



<p>Malheureusement, c&#8217;est à peu près là que s&#8217;arrête la partie facile. Le repository du country template est minimaliste et, bien qu&#8217;il existe une <a href="https://openfisca.org/doc/index.html">documentation</a> avec un petit tutoriel pour créer sa propre version, celle-ci se concentre principalement sur les premières étapes. Les directives sur la manière de structurer au mieux notre propre fourche dès que le nombre de variables et de paramètres augmente font largement défaut. Le repository du projet parent <a href="https://github.com/openfisca/openfisca-france/tree/master">openfisca-france</a> peut certes servir d&#8217;exemple, mais il est très volumineux et ne permet pas vraiment de comprendre les raisons de leurs choix structurels ou architecturaux.</p>



<p>L&#8217;aspect d&#8217;une GUI ou d&#8217;une interface web reste également sous-estimé. Pourtant, l&#8217;interface de <a href="https://socio-fiscal.leximpact.an.fr/?parameters=irpp_economique&amp;waterfall=brut_to_disponible">LexImpact simulator pour l&#8217;impôt sur le revenu en France</a>, par exemple, est justement un point fort. Comme guide pour la construction d&#8217;une interface web, on se réfère à <a href="https://github.com/redte-ch/ReDistributeMe/tree/main">tutoriels et slides d&#8217;un workshop</a>, où les premières étapes sont présentées dans <a href="https://svelte.dev/">Svelte</a>, <a href="https://react.dev/">React</a> et <a href="https://vuejs.org/">VueJS</a>. Cependant, le fait qu&#8217;une GUI ou une application web doive encore être construite <em>from scratch</em> en plus d&#8217;une instance OpenFisca propre constitue un obstacle supplémentaire à l&#8217;adoption. La construction d&#8217;une GUI est en effet chronophage. Il serait utile de disposer de bibliothèques OpenFisca-GUI avec des composants réutilisables pour les principaux frameworks web, afin qu&#8217;un serveur OpenFisca puisse éventuellement être associé à une interface web générique par défaut. Un <a href="https://www.drupal.org/project/webform_openfisca">plugin Drupal</a> semble actuellement être le seul à aller quelque peu dans cette direction.</p>



<h1 class="wp-block-heading">L&#8217;IA à la rescousse&nbsp;?</h1>



<p>Étant donné qu&#8217;OpenFisca, Svelte, React et Vue sont tous nouveaux pour l&#8217;auteur, et que les outils d&#8217;IA promettent d&#8217;accélérer l&#8217;intégration des développeurs, nous saisissons l&#8217;occasion pour tester simultanément l&#8217;IDE <a href="https://cursor.com/download">Cursor</a> alimenté par l&#8217;IA. Ce clone de <a href="https://code.visualstudio.com/">Visual Studio Code</a> est enrichi de la possibilité d&#8217;appeler des LLM (dans notre cas, basés sur le cloud public). De plus, des sélections issues de fichiers du projet peuvent être marquées comme contexte pour la question. Cursor peut fournir des <a href="https://cursor.com/docs">suggestions</a> d&#8217;ajouts ou de modifications à apporter aux fichiers qui, une fois approuvées, peuvent être directement intégrées dans la base de code.</p>



<p>Interagir avec des modèles d&#8217;IA <a href="https://news.stanford.edu/stories/2025/10/ai-chatbot-privacy-concerns-risks-research">comporte des risques pour la confidentialité</a>. Cette expérience est principalement possible car nous travaillons avec du code open source, des réglementations publiées et leur documentation également publique, qui ne sont pas sensibles. Cependant, étant donné que tout ce qui se trouve dans l&#8217;IDE peut être envoyé au modèle de langage, nous devons toujours veiller à ne pas ouvrir dans l&#8217;IDE des fichiers contenant des identifiants, des clés API ou des informations personnelles. Cela reste la responsabilité de chaque développeur. Dans tous les cas, il est recommandé d&#8217;être prêt à faire tourner les clés API ou les credentials, car dans le feu de l&#8217;action d&#8217;un debugging, il est facile de partager trop d&#8217;informations avec un LLM.</p>



<p>Enfin, il convient de mentionner que cette expérience a été réalisée avec les versions 1.6 et 1.7 de Cursor en septembre-octobre 2025, avec le modèle de langage sous-jacent GPT-4.5 d&#8217;OpenAI, puis GPT-5.0, utilisé avec une clé API dédiée (et non via Cursor). Les versions ultérieures disposent de nombreuses fonctionnalités plus récentes (notamment des workflows <em>agentic</em>) et il est possible que l&#8217;expérience soit aujourd&#8217;hui (janvier 2026) très différente. Cependant, les principaux enseignements restent généralement valables pour tout développement alimenté par l&#8217;IA, que ce soit via IDE, ligne de commande ou les deux (par exemple, Anthropic <a href="https://code.claude.com/docs/en/overview">Claude Code</a>).</p>



<p>Dans un premier temps, nous ajoutons la documentation nécessaire à notre projet. Nous prenons comme exemple la <a href="https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&amp;lg_txt=f&amp;type=&amp;sort=&amp;numac_search=&amp;cn_search=2002052647&amp;caller=eli&amp;&amp;view_numac=2002052647nl">loi du 26 mai 2002 concernant le droit à l&#8217;intégration sociale</a>. Avec tous les autres arrêtés royaux, lois et circulaires pertinents, elle est clairement répertoriée sur le site web du <a href="https://www.mi-is.be/fr/reglementations">SPP Intégration sociale</a>. Afin de faciliter la recherche et l&#8217;interprétation du texte pour un LLM dans un IDE, nous l&#8217;enregistrons sous forme de fichier texte plat sans mise en forme, que nous ajoutons à un nouveau dossier contenant les sources pertinentes dans l&#8217;arborescence source du projet. Nous ne pouvons que supposer que cette approche est optimale, mais il faut bien commencer quelque part.</p>



<h2 class="wp-block-heading">Entités</h2>



<p>Les entités dans OpenFisca indiquent pour qui nous effectuons le calcul. Il peut s&#8217;agir d&#8217;individus, de familles ou d&#8217;autres groupes de personnes (entreprises, organisations, etc.). Ce sont les fondements sur lesquels nous pourrons ensuite spécifier des variables qui, ensemble, formeront une &#8220;situation&#8221; pour laquelle nous pourrons effectuer un calcul.&nbsp;Les entités <em>Person</em> et <em>Household</em> sont déjà présentes <a href="https://github.com/openfisca/country-template/blob/main/openfisca_country_template/entities.py">dans le code</a>. Une question logique se pose donc&nbsp;: sur la base du texte de loi donné, pouvons-nous définir d&#8217;autres entités qui seraient utiles&nbsp;?</p>



<p>Après avoir posé la question à GPT-5 dans Cursor, avec le texte de loi sélectionné comme contexte, il nous est proposé d&#8217;ajouter les entités suivantes&nbsp;:</p>



<ul class="wp-block-list">
<li>Eligible Person for Societal Integration</li>



<li>Living Wage Recipient</li>



<li>Employment Project Participant</li>
</ul>



<p>Les modifications proposées au code sont syntaxiquement correctes. Cependant, aucune de ces trois modifications n&#8217;est utile ou nécessaire&nbsp;: dans les trois cas, il s&#8217;agit de variantes de<em> Person</em>. Les propriétés qui leur permettraient, par exemple, de percevoir un revenu d&#8217;intégration sont plutôt des variables ajoutées à l&#8217;entité <em>Person</em> déjà existante. La valeur de ces variables dépend en outre d&#8217;autres variables également liées à ce même individu, telles que les revenus du travail ou le statut d&#8217;invalidité. Les entités, qui servent principalement à des concepts autonomes, ne sont pas le bon choix dans ce cas.&nbsp;</p>



<p>En outre, GPT-5 semble avoir mal interprété le concept de &#8220;rôle&#8221; au sein d&#8217;une entité de groupe OpenFisca. Il tente de construire &#8220;Eligible Person for Societal Integration&#8221; avec différents &#8220;rôles&#8221; comme composants&nbsp;: &#8220;Belgian National&#8221;, &#8220;EU Citizen&#8221;, &#8220;Foreigner&#8221;, &#8220;Stateless&#8221;, &#8220;Refugee&#8221;&#8230; Sans doute parce que ces possibilités apparaissent à l&#8217;<a href="https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&amp;lg_txt=f&amp;type=&amp;sort=&amp;numac_search=&amp;cn_search=2002052647&amp;caller=eli&amp;&amp;view_numac=2002052647nl#Art.3">Art.3, 3°, de la loi</a>. Dans OpenFisca, cependant, une entité de groupe est composée de personnes qui se voient chacune attribuer un rôle. Un <em>Household</em> comprend ainsi des rôles <em>Adult</em> et <em>Child</em>. Il est assez absurde qu&#8217;une <em>EligiblePerson</em> puisse comprendre plusieurs <em>Foreigners</em>. La nationalité ou l&#8217;origine, ou d&#8217;autres conditions fixées dans cette loi, sont également ici des variables liées à la personne, et non à une entité en soi.&nbsp;</p>



<p>À un autre moment, une entité distincte a été créée pour le CPAS. Bien qu&#8217;il semble logique de modéliser les CPAS et de les considérer comme une entité – ils sont en effet mentionnés dans la loi –, ce n&#8217;est pas (encore) le cas ici. Il n&#8217;existe en effet pas différents types de CPAS avec des caractéristiques ou des rôles différents, pour lesquels nous devrions effectuer des calculs différents à chaque fois. Dans le contexte de cette loi, où c&#8217;est le citoyen pour lequel nous calculons le droit à l&#8217;aide sociale, le CPAS est avant tout une donnée constante et invariable. Dans OpenFisca, nous pouvons donc pour l&#8217;instant ignorer cet aspect. (Un type d&#8217;entité &#8220;institut&#8221; n&#8217;est pas non plus prévu.)&nbsp;</p>



<p>Nous constatons ici que Cursor ne peut pas répondre &#8220;non&#8221; à la question de savoir si d&#8217;autres entités utiles peuvent être ajoutées. Il ne peut pas critiquer ou corriger de son propre chef le raisonnement qui sous-tend cette question. Tout au long de l&#8217;expérience, Cursor et GPT-5 ont également montré une tendance à la complexité inutile. Cela représente un risque important pour les développeurs qui travaillent avec du code ou des frameworks inconnus&nbsp;: si l&#8217;on suit trop rapidement ces suggestions, on risque de perdre le contrôle par la suite et de devoir apporter des corrections très difficiles aux fondements du projet. Une fois qu&#8217;une mauvaise voie a été empruntée, il s&#8217;avère également difficile de revenir en arrière et de faire oublier ces étapes. Surtout si on les a d&#8217;abord acceptées par ignorance, elles s&#8217;inscrivent dans le contexte et sont reprises dans les questions suivantes. Ce <a href="https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html">&#8220;context rot&#8221;</a> insidieux est désormais un problème bien connu et une cause importante de perte de temps avec le <em>AI enabled coding</em>.</p>



<h2 class="wp-block-heading">Variables</h2>



<p>Le cœur du modèle réside dans les variables qui représentent les droits et les conditions prévus par la loi.&nbsp;L&#8217;<a href="https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&amp;lg_txt=f&amp;type=&amp;sort=&amp;numac_search=&amp;cn_search=2002052647&amp;caller=eli&amp;&amp;view_numac=2002052647nl#Art.2">article 2</a> de la loi énumère les différentes formes d&#8217;intégration sociale auxquelles une personne peut avoir droit (notamment l&#8217;emploi, le revenu d&#8217;intégration, le projet individualisé).&nbsp;L&#8217;<a href="https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&amp;lg_txt=f&amp;type=&amp;sort=&amp;numac_search=&amp;cn_search=2002052647&amp;caller=eli&amp;&amp;view_numac=2002052647nl#Art.2">article 3</a> contient les conditions qu&#8217;une personne doit remplir pour exercer ce droit. Nous avons transposé ces dispositions étape par étape dans le code.</p>



<p>Dans la pratique, le droit à l&#8217;intégration sociale signifie qu&#8217;un CPAS doit soutenir une personne par le biais (1) d&#8217;un emploi ou d&#8217;une formation, (2) d&#8217;un revenu d&#8217;intégration, ou (3) d&#8217;un projet individualisé d&#8217;intégration sociale. Cela peut se traduire par trois variables booléennes sur l&#8217;entité Personne, par exemple <code>employment_right</code>, <code>living_wage_right</code> et <code>individualized_project_right</code>. Cursor fournit ici une suggestion de code pertinente et propose une formule <em>placeholder</em> simple&nbsp;: tant qu&#8217;une personne &#8220;est éligible à l&#8217;intégration&#8221; (une autre variable), le droit s&#8217;applique. Nous obtenons ainsi la définition suivante de<em> </em><code>employment_right</code>&nbsp;:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>class employment_right(Variable):
  value_type = bool
  entity = Person
  definition_period = MONTH
  def formula(person, period, parameters):
    return person("eligible_for_integration", period)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">employment_right</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">Variable</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">  value_type = </span><span style="color: #4EC9B0">bool</span></span>
<span class="line"><span style="color: #D4D4D4">  entity = Person</span></span>
<span class="line"><span style="color: #D4D4D4">  definition_period = MONTH</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">formula</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">person</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">period</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">parameters</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> person(</span><span style="color: #CE9178">&quot;eligible_for_integration&quot;</span><span style="color: #D4D4D4">, period)</span></span></code></pre></div>



<p>Le contenu de cette formule <em>placeholder </em>est abordé dans l&#8217;article 3 ci-dessous. Celui-ci modélise les conditions suivantes pour être éligible&nbsp;:</p>



<ul class="wp-block-list">
<li><strong>Séjour en Belgique </strong>(selon les règles à déterminer par arrêté royal).</li>



<li><strong>Âge</strong>&nbsp;: la personne est<strong> majeure</strong> (18 ans et plus) ou, si elle est mineure, <strong>assimilée </strong>à une personne majeure selon les exceptions prévues par la présente loi.</li>



<li><strong>Nationalité ou statut de séjour&nbsp;</strong>: la personne est belge, citoyenne de l&#8217;UE (après 3 mois de séjour), étrangère enregistrée, apatride, réfugiée ou bénéficiaire d&#8217;une protection subsidiaire.</li>



<li><strong>Ressources insuffisantes</strong></li>



<li><strong>Disposition à travailler</strong> (sauf si cela est impossible pour des raisons de santé ou d&#8217;équité).</li>



<li><strong>Épuisement des droits issus d&#8217;autres régimes</strong></li>
</ul>



<p>Toutes ces conditions sont regroupées dans une variable booléenne centrale <code>societal_integration_right</code>. Cette variable indique si une personne, compte tenu de sa situation personnelle, <strong>peut</strong> prétendre à l&#8217;intégration sociale. En fait, il s&#8217;agit de la traduction de <em>&#8220;la personne remplit-elle toutes les conditions de l&#8217;article 3&nbsp;?</em>&#8220;. La formule combine toutes les sous-conditions&nbsp;:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>class societal_integration_right(Variable):
  value_type = bool
  entity = Person
  definition_period = MONTH
  label = "Right to societal integration"
  def formula(person, period, parameters):
    residency = person("residency_status", period)
    is_major = person("is_major", period)
    nationality = person("nationality_status", period) in &#91;"belgian", "eu_citizen", "registered_foreigner", "stateless", "refugee"&#93;
    insufficient_income = not person("has_sufficient_income", period)
    willing_to_work = person("willing_to_work", period)
    claiming_benefits = person("claiming_benefits", period)
    return (residency and is_major and nationality and insufficient_income and willing_to_work and claiming_benefits)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">societal_integration_right</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">Variable</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">  value_type = </span><span style="color: #4EC9B0">bool</span></span>
<span class="line"><span style="color: #D4D4D4">  entity = Person</span></span>
<span class="line"><span style="color: #D4D4D4">  definition_period = MONTH</span></span>
<span class="line"><span style="color: #D4D4D4">  label = </span><span style="color: #CE9178">&quot;Right to societal integration&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">formula</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">person</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">period</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">parameters</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">    residency = person(</span><span style="color: #CE9178">&quot;residency_status&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    is_major = person(</span><span style="color: #CE9178">&quot;is_major&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    nationality = person(</span><span style="color: #CE9178">&quot;nationality_status&quot;</span><span style="color: #D4D4D4">, period) </span><span style="color: #569CD6">in</span><span style="color: #D4D4D4"> &#91;</span><span style="color: #CE9178">&quot;belgian&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;eu_citizen&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;registered_foreigner&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;stateless&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;refugee&quot;</span><span style="color: #D4D4D4">&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    insufficient_income = </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> person(</span><span style="color: #CE9178">&quot;has_sufficient_income&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    willing_to_work = person(</span><span style="color: #CE9178">&quot;willing_to_work&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    claiming_benefits = person(</span><span style="color: #CE9178">&quot;claiming_benefits&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> (residency </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> is_major </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> nationality </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> insufficient_income </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> willing_to_work </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> claiming_benefits)</span></span></code></pre></div>



<p>Notons ici quelques lacunes étranges dans la suggestion de Cursor. Ainsi, le nom de la variable <code>societal_integration_right</code> n&#8217;est pas identique au placeholder <code>eligible_for_integration</code> défini précédemment, alors que c&#8217;était pourtant l&#8217;intention. En outre, la condition de nationalité omet tout simplement la possibilité d&#8217;une protection subsidiaire. Enfin, la sixième condition, qui stipule que la personne doit d&#8217;abord faire valoir ses droits à d&#8217;éventuelles prestations sociales, est mentionnée de manière très rudimentaire sous le nom de <code>claiming_benefits</code>, un nom de variable qui ne reflète pas vraiment ce qui est visé.</p>



<p>Nous pouvons donc accepter cette suggestion, mais nous sommes immédiatement obligés d&#8217;apporter trois corrections. Nous pouvons facilement détecter la non-conformité du nom de la variable, car les tests ne fonctionneront pas s&#8217;il reste des variables non déclarées dans le code. Un élément manquant dans la formule, tel qu&#8217;une condition oubliée, est cependant beaucoup plus facile à négliger et, s&#8217;il n&#8217;est pas détecté, entraîne à coup sûr des erreurs d&#8217;exécution. Nous constatons donc ici la nécessité de se référer au texte de loi afin de vérifier que le code généré correspond bien à ce que dit le texte de loi. Cette vérification doit être effectuée avec suffisamment d&#8217;attention pour pouvoir identifier les appellations malheureuses ou les interprétations subtiles erronées du texte.</p>



<p>Les corrections éventuelles doivent également être effectuées le plus rapidement possible. Si un code erroné reste présent dans l&#8217;éditeur, il fera en effet partie du contexte utilisé par le modèle d&#8217;IA et servira lui-même de base pour les suggestions suivantes. Cela peut conduire à une situation où l&#8217;on continue à recevoir des suggestions contenant toujours les mêmes erreurs, qu&#8217;il faut donc corriger à chaque fois, ce qui n&#8217;est pas propice à la productivité.</p>



<p>Les variables utilisées dans la méthode <code>formula()</code> de <code>societal_integration_right</code> ci-dessus doivent bien sûr être définies à leur tour&nbsp;: pour chacune de ces variables, nous devons écrire une classe. Cela peut donner lieu à des chaînes complexes de dépendances. Ainsi,<em> </em><code>is_major</code> pourrait être une simple variable d&#8217;entrée booléenne, mais nous pouvons également la calculer sur la base de la date du jour et d&#8217;une nouvelle variable <code>birthdate</code>. Le calcul de la formule des variables peut également utiliser les paramètres d&#8217;une loi – ainsi, en Belgique, la majorité n&#8217;est atteinte qu&#8217;à partir de 18 ans depuis le <a href="https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&amp;lg_txt=f&amp;type=&amp;sort=&amp;numac_search=&amp;cn_search=1990011930&amp;caller=eli&amp;&amp;view_numac=1990011930nl">1<sup>er</sup> mai 1990</a>. Cela nous ramènerait alors au Code civil et à son histoire – pour rester concis, nous n&#8217;approfondirons pas cette question pour l&#8217;instant.</p>



<p>Dernière remarque&nbsp;: le modèle tel qu&#8217;il est construit ici est bien sûr une représentation simplifiée. Notez toutefois que même dans ce cas, après seulement trois articles de loi, nous avons déjà défini une dizaine de classes Python, avec la possibilité d&#8217;en ajouter d&#8217;autres si nous souhaitons approfondir le sujet. Cursor et GPT-5 écrivent un code relativement verbeux, avec de nombreuses variables et méthodes auxiliaires, qui pourraient parfois être simplifiées. Certains détails de la loi, tels que le délai d&#8217;attente de trois mois pour les citoyens de l&#8217;UE ou les exceptions qui existent pour certaines catégories de mineurs (<a href="https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&amp;lg_txt=f&amp;type=&amp;sort=&amp;numac_search=&amp;cn_search=2002052647&amp;caller=eli&amp;&amp;view_numac=2002052647nl#Art.7">art. 7</a>), nécessiteraient de nombreuses variables ou conditions supplémentaires dans un modèle complet.</p>



<h1 class="wp-block-heading">IA et code&nbsp;: quelques pièges</h1>



<p>En ce qui concerne les meilleures pratiques pour l&#8217;utilisation de l&#8217;IA dans le cadre de tels projets, nous identifions encore quelques pièges, en plus de ceux que nous avons déjà mentionnés.</p>



<p>Ajouter trop de documentation au début conduit rapidement à une &#8220;<a href="https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html">confusion contextuelle</a>&#8220;, dans laquelle les suggestions ou les réponses du LLM sont basées sur des informations qui ne sont pas (encore) pertinentes. Il est préférable d&#8217;ajouter la documentation progressivement, au fur et à mesure que la fonctionnalité se développe, plutôt que d&#8217;ajouter l&#8217;analyse complète et le contexte à l&#8217;IDE dès le départ. Dans le cas de la réglementation, ajoutez les règles article par article à l&#8217;IDE, au fur et à mesure de l&#8217;avancement du projet, et résistez à la tentation d&#8217;intégrer à l&#8217;avance l&#8217;ensemble du texte de loi dans l&#8217;IDE en tant que &#8220;référence encyclopédique&#8221;.</p>



<p>Le &#8220;context rot&#8221; ou &#8220;context poisoning&#8221; survient lorsque l&#8217;IA s&#8217;engage dans une mauvaise voie, s&#8217;y enlise et finit par oublier des informations plus pertinentes, ce qui rend la récupération plus difficile. Le &#8220;<a href="https://www.anthropic.com/engineering/multi-agent-research-system">context quarantining</a>&#8220;, qui consiste à diviser le problème en sous-problèmes plus petits, chacun avec son propre contexte, est un remède logique à ce problème. C&#8217;est également la voie empruntée par la plupart des systèmes de &#8220;deep research&#8221; ou &#8220;<a href="https://www.anthropic.com/engineering/multi-agent-research-system">multi agentic</a>&#8220;. Dans un IDE, cela impliquerait qu&#8217;un système d&#8217;IA devrait segmenter la base de code et la documentation à partir d&#8217;une certaine taille. La mise en œuvre technique de cette solution en arrière-plan semble être un défi de taille, et différents IDE développeront probablement leur propre approche à cet égard dans un avenir proche.</p>



<p>Une autre source de frustration était que l&#8217;IA plaçait parfois le code ou les fichiers au mauvais endroit ou supposait que certaines choses existaient. Par exemple, les formules générées faisaient référence à des variables qui n&#8217;étaient pas encore définies. Cela génère bien sûr des messages d&#8217;erreur lors des tests. Nous devions alors ajuster l&#8217;IA ou insérer nous-mêmes des variables supplémentaires pour couvrir ces références. Même des détails mineurs, tels que le formatage de la documentation ou la création ou non des importations nécessaires, nécessitaient parfois une correction manuelle. Ce type d&#8217;incohérences démontre qu&#8217;il n&#8217;est pas possible de se fier aveuglément aux suggestions de l&#8217;IA. Un développeur doit constamment vérifier si le code généré correspond à l&#8217;intention et, dans le cas contraire, intervenir immédiatement.</p>



<h1 class="wp-block-heading">publi.codes</h1>



<p>Nous souhaitons également signaler l&#8217;existence de <a href="https://publi.codes/">publi.codes</a> comme alternative possible à OpenFisca. Plus récent et plus moderne, ce dernier exige que les règles soient codées au format YAML, ce qui est beaucoup plus pratique que l&#8217;écriture de sous-classes en Python et beaucoup plus lisible pour les non-développeurs. En contrepartie, on est toutefois limité aux <a href="https://publi.codes/docs/mecanismes">opérations autorisées</a> par le moteur sous-jacent. Ce n&#8217;est qu&#8217;à partir de la <a href="https://github.com/orgs/publicodes/projects/5">version 2, encore en cours de développement</a>, que des possibilités d&#8217;encoder des <a href="https://github.com/publicodes/publicodes/issues/707">barèmes</a> ou des <a href="https://github.com/publicodes/publicodes/issues/705">abattements</a> (montants exonérés), très fréquents en Belgique, seront ajoutées.</p>



<p>La version actuelle de publi.codes dépend en outre de l&#8217;écosystème NPM, qui est actuellement régulièrement affecté par des <a href="https://about.gitlab.com/blog/gitlab-discovers-widespread-npm-supply-chain-attack/">attaques du supply chain</a>. Publi.codes v2 serait quant à lui <a href="https://publi.codes/blog/publicodes-v2">compilé vers OCaml</a>, un langage de programmation que nous n&#8217;utilisons pas chez Smals. Étant donné qu&#8217;il y a peu de chances que Smals souhaite introduire ce langage de programmation dans son portefeuille (et mettre en place une équipe de support à cet effet), il ne semblait pas très utile d&#8217;examiner publi.codes en profondeur dans le cadre de cet exercice. Il convient toutefois de noter que publi.codes dispose de <a href="https://publi.codes/docs/api/react-ui">quelques libraries</a> prêtes à l&#8217;emploi en matière de composants UI.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>OpenFisca et publi.codes sont deux systèmes particulièrement performants lorsque les règles peuvent être modélisées sous forme de calculs explicites et testables. Ils sont moins adaptés aux réglementations qui font appel aux décisions discrétionnaires, à la libre interprétation, aux exceptions sans paramètres clairs ou aux workflows de &#8220;case management&#8221;. Il s&#8217;agit avant tout de systèmes de calcul et de règles, et non de plateformes de traitement de dossiers. Ils peuvent donc éventuellement servir de moteur pour des applications capables de calculer les impôts ou les allocations au niveau de la personne/du ménage (droit à quelque chose + montant), ou pour simuler l&#8217;impact politique d&#8217;éventuelles modifications (&#8220;combien coûte cette réforme&nbsp;?&#8221;, &#8220;qui y gagne/y perd&nbsp;?&#8221;). Cela peut être intéressant tant pour les législateurs que pour les citoyens.</p>



<p>Cependant, un projet OpenFisca ne se met pas en place rapidement. Sur le plan conceptuel, OpenFisca est quelque peu déroutant pour un développeur&nbsp;: bien qu&#8217;OpenFisca utilise des classes Python, celles-ci ne servent pas à modéliser des objets, mais à enregistrer de manière déclarative des entités, des variables et des règles de calcul issues de la réglementation. Étant donné que par variable, il faut écrire une classe et que des dizaines de variables peuvent facilement entrer en jeu dans un article de loi complexe, on se retrouve avec une pile de code qui s&#8217;accumule rapidement et qui est difficile à organiser de manière claire. En outre, le développement d&#8217;une interface graphique nécessite également beaucoup de travail supplémentaire. Le projet manque encore de <em>tooling </em>nécessaire pour atténuer ces problèmes récurrents. (Bien sûr, cela n&#8217;aide pas lorsque l&#8217;<a href="https://openfisca.org/en/about/">administration publique</a>, qui semble considérer que les projets open source peuvent par définition s&#8217;autofinancer, décide soudainement de fermer les vannes en 2020.</p>



<p>Enfin, nous pouvons ajouter que cette expérience a été à la fois un <em>reality check</em> utile et instructif sur ce que les LLM peuvent apporter, et gâcher, à un environnement de travail de développeur. Le meilleur conseil reste de garder les rênes fermement en main et de travailler par petites étapes incrémentielles. Certains outils d&#8217;IA seront plus performants que d&#8217;autres dans divers domaines. Donner des réponses négatives ou détecter des erreurs dans les questions reste un défi pour les LLM, ce qui comporte certains risques. Cependant, l&#8217;assistance IA dans les IDE évolue rapidement, et une expérience similaire se déroulera sans doute différemment l&#8217;année prochaine.</p>



<p>Rules As Code ne signifie certainement pas qu&#8217;aujourd&#8217;hui, nous pouvons fournir un texte de loi à une IA pour qu&#8217;elle déploie un programme. Cependant, dans les années à venir, les <a href="https://rules-as-code.yellenge.nl/">forums spécialisés</a> accorderont sans aucun doute une grande attention à l&#8217;interaction entre la loi, la mise en œuvre et les outils d&#8217;IA. Pour l&#8217;instant, la complexité de la réglementation elle-même, même avec une IA de plus en plus performante, reste le principal obstacle aux projets Rules As Code.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rules as Code: lessen uit een experiment</title>
		<link>https://www.smalsresearch.be/rules-as-code-deel2-nl/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 30 Jan 2026 18:57:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[AI4GOV]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=25971</guid>

					<description><![CDATA[Wat gebeurt er als een leek zich waagt aan een Rules as Code project met een AI-powered IDE?]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible&nbsp;<a href="/rules-as-code-partie2-fr/" data-type="post" data-id="24294">en français</a>.</em></p>



<p><a href="/rules-as-code-nl/">In een vorig artikel</a> fileerden we <a href="https://interoperable-europe.ec.europa.eu/collection/eugovtech/news/rules-code-rac">Rules as Code</a>, een aanpak die erop gericht is om de kloof tussen regelgeving en software te verkleinen. We illustreerden daarbij dat er heel wat praktische obstakels te overkomen zijn, niettegenstaande het lovenswaardige doel. De uniforme encodering van regels met hun geschiedenis, verwevenheden en afhankelijkheden is een uitdaging die een aanzienlijke investering van mensen en middelen kan vergen. Permanent actief beheer is daarenboven nodig om elke wijziging aan de regels op te vangen. Zelfs op kleine schaal is een nauwe samenwerking tussen juristen en ontwikkelaars onontbeerlijk, want regelmatig zullen gemotiveerde beslissingen genomen moeten worden over interpretatie. Omdat industriestandaarden nog ontbreken en best practices nog volop in ontwikkeling zijn, riskeer je als <em>early adopter</em> de zogenaamde <a href="https://terryu.substack.com/p/bridging-the-gap-between-early-and">pioneer tax</a> te moeten betalen. De complexe lasagna van overheidsbevoegdheden maakt een eventuele toepassing in België niet eenvoudiger.</p>



<p>Mede onder impuls van het uitgebreide <a href="https://www.oecd.org/en/publications/cracking-the-code_3afe6ba5-en.html">rapport van de OESO uit 2020</a>, hebben enkele overheden toch al volop ingezet op het uitwerken van, soms vrij grootschalige, proof-of-concepts. Er bestaan vandaag dan ook enkele frameworks die relatief matuur zijn. Ongetwijfeld is Frankrijk het voortrekkersland; het initiatief dat we hieronder zullen toelichten komt van Franse bodem. Ook <a href="https://regels.overheid.nl/">in Nederland</a> beweegt er wel wat: de Nederlandse fiscus gebruikt al enige tijd haar eigen domeintaal <a href="https://regels.overheid.nl/docs/methods/REGELSPRAAK">RegelSpraak</a> die zij met de <em>rule engine</em> <a href="https://regels.overheid.nl/docs/methods/ALEF">ALEF</a> interpreteert en verwerkt, echter lijkt de daarover <a href="https://gitlab.com/normativesystems">gepubliceerde broncode</a> vooralsnog meer op methodologie dan op applicaties te focussen.</p>



<h1 class="wp-block-heading">OpenFisca</h1>



<p>OpenFisca is <a href="https://openfisca.org/en/about/">ontstaan in 2011</a> als open-source <a href="https://en.wikipedia.org/wiki/Microsimulation">microsimulatie</a>-motor om belasting- en uitkeringsregels (“tax &amp; benefit system”) om te zetten naar uitvoerbare code. De effecten van die regelgeving, en eventuele wijzigingen, kunnen dan gesimuleerd worden voor zowel individuele cases als hele populaties. Websites met OpenFisca in de achtergrond zijn onder andere <a href="https://leximpact.an.fr/">LexImpact</a> (simulatie van wijzigingen in socio-fiscale wetgeving), <a href="https://www.mesdroitssociaux.gouv.fr/">Mes droits sociaux</a> (simulatie van sociale rechten), en <a href="https://mes-aides.1jeune1solution.beta.gouv.fr/">1jeune1solution</a> (allerhande steunmaatregelen). Buitenlandse voorbeelden zijn <a href="https://benefitme.nz/">BenefitMe</a> (Nieuw-Zeeland), <a href="https://lesmevesajudes.barcelona.cat/">Les meves ajudes</a> (Barcelona), of <a href="https://www.policyengine.org/">PolicyEngine</a> (UK/USA) &#8211; deze laatsten wel met <a href="https://github.com/PolicyEngine">grondige aanpassingen</a> aan de engine.</p>



<p>Om ons eigen belasting- en/of sociale-zekerheidsstelsel te modelleren, moeten we een fork maken van het generieke <a href="https://github.com/openfisca/country-template">OpenFisca country-template</a>. Verschillende andere landen hebben er tenminste al mee geëxperimenteerd, zo vinden we in de <a href="https://github.com/orgs/openfisca/repositories">lijst van repositories</a> o.a. Senegal, Paraguay en Tunesië. Regionale of lokale wetgeving kan middels <a href="https://openfisca.org/doc/contribute/extensions.html">plugin-extensies</a> toegevoegd worden aan een nationaal systeem, zoals <a href="https://github.com/openfisca/openfisca-paris">deze voor Parijs</a>. Eens de repository geïnitialiseerd, kunnen we beginnen werken aan wat misschien ooit <em>openfisca-belgium</em> kan worden. De modellering in OpenFisca gebeurt door het schrijven van Python-klassen en -methodes, die de entiteiten, variabelen en berekeningsformules uit de regelgeving vertegenwoordigen.</p>



<p>Helaas houdt het gemakkelijke deel daar ongeveer op. De <em>country-template</em> repository is minimalistisch en hoewel er wel <a href="https://openfisca.org/doc/index.html">documentatie</a>, met een kleine tutorial, beschikbaar is om een eigen versie uit te bouwen, focust deze vooral op de eerste stappen. Richtlijnen over hoe we onze eigen fork best zouden structureren zodra het aantal variabelen en parameters groeit, ontbreken grotendeels. De repository van moederproject <a href="https://github.com/openfisca/openfisca-france/tree/master">openfisca-france</a> kan weliswaar als voorbeeld dienen, maar is dan weer erg groot, en het waarom van hun structurele of architecturale keuzes is er niet echt uit af te leiden.</p>



<p>Ook het aspect van een GUI of webinterface blijft onderbelicht. Nochtans is de interface van bijvoorbeeld de <a href="https://socio-fiscal.leximpact.an.fr/?parameters=irpp_economique&amp;waterfall=brut_to_disponible">LexImpact simulator van de Franse inkomstenbelasting</a>, net een sterk punt. Als leidraad voor bouwen van een webinterface verwijst men naar <a href="https://github.com/redte-ch/ReDistributeMe/tree/main">tutorials en slides van een workshop</a>, waar men de eerste stappen toont in <a href="https://svelte.dev/">Svelte</a>, <a href="https://react.dev/">React</a> en <a href="https://vuejs.org/">VueJS</a>. Het is echter een extra barrière voor adoptie, dat een GUI of webapp nog <em>from scratch</em> zelf te bouwen is bovenop een eigen OpenFisca-instantie. Het bouwen van een GUI is immers tijdrovend. Het zou nuttig zijn om OpenFisca-GUI-libraries te hebben met herbruikbare componenten voor de belangrijkste web frameworks, zodat een OpenFisca server misschien met een generieke <em>default</em> webinterface gebundeld kan worden. Een <a href="https://www.drupal.org/project/webform_openfisca">Drupal-plugin</a> lijkt momenteel het enige project dat enigszins in die richting gaat.</p>



<h1 class="wp-block-heading">AI to the rescue?</h1>



<p>Gezien OpenFisca, Svelte, React en Vue allen nieuw zijn voor de auteur, en AI-tooling belooft om developers sneller te laten onboarden, grijpen we de kans om de AI-powered IDE <a href="https://cursor.com/download">Cursor</a> tegelijk uit te testen. Deze kloon van <a href="https://code.visualstudio.com/">Visual Studio Code</a> is verrijkt met de mogelijkheid tot het aanroepen van (in ons geval public-cloud-gebaseerde) LLMs. Daarbij kunnen selecties uit bestanden in het project worden gemarkeerd als context bij de vraag. Cursor kan <a href="https://cursor.com/docs">suggesties geven</a> voor toevoegingen of wijzigingen aan bestanden die, eens goedgekeurd, direct geïntegreerd kunnen worden in de codebase.</p>



<p>Interageren met AI-modellen <a href="https://news.stanford.edu/stories/2025/10/ai-chatbot-privacy-concerns-risks-research">houdt privacy-risico&#8217;s in</a>. Dit experiment vooral mogelijk omdat we werken met open-source code, gepubliceerde regelgeving, en de eveneens openbare documentatie daarvan, wat niet gevoelig is. Maar gezien alles wat zich in de IDE bevindt naar het taalmodel gestuurd kan worden, moeten we er nog steeds op letten dat we geen bestanden openen in de IDE die credentials, API keys of persoonlijke informatie bevatten. Dat blijft de verantwoordelijkheid van de individuele developer. Sowieso is het goede praktijk om voorbereid te zijn op het roteren van API keys of credentials, want in het heetst van een debugging-strijd is <em>oversharing</em> met een LLM snel gebeurd.</p>



<p>Tot slot moeten we vermelden dat dit experiment nog werd uitgevoerd met Cursor versies 1.6 en 1.7 in september-oktober 2025, met OpenAI&#8217;s GPT-4.5 en later GPT-5.0 als achterliggend taalmodel, gebruikt met een eigen API key (niet via Cursor). Latere versies hebben heel wat nieuwere features (waaronder meer <em>agentic</em> workflows) en het zou kunnen dat de ervaring vandaag (januari 2026) al heel anders zou zijn. De belangrijkste lessen blijven echter algemeen gelden voor alle AI-powered development, of dat nu via IDE, command line of beide gebeurt (vb. Anthropic <a href="https://code.claude.com/docs/en/overview">Claude Code</a>).</p>



<p>Als eerste stap voegen we de nodige documentatie toe aan ons project. Als case nemen we de <a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel">Wet op de Maatschappelijke Integratie van 26 mei 2002</a>. Samen met alle andere relevante wetten, koninklijke besluiten en omzendbrieven is die overzichtelijk geïnventariseerd op de website van de <a href="https://www.mi-is.be/nl/wetgeving">POD Maatschappelijke Integratie</a>. Om de tekst gemakkelijk doorzoekbaar en interpreteerbaar te maken voor een LLM in een IDE, slaan we hem op als plat tekstbestand zonder opmaak, en dat voegen we toe aan een nieuw mapje voor relevant bronmateriaal in de source tree van het project. Of dat optimaal is, daar hebben we het raden naar, maar we moeten ergens beginnen.</p>



<h2 class="wp-block-heading">Entiteiten</h2>



<p>Entiteiten in OpenFisca drukken uit voor wie we de berekening maken. Dat kunnen individuen, gezinnen of andere groeperingen van mensen zijn (bedrijven, organisaties, &#8230;). Het zijn de basisbouwstenen waarvoor we later variabelen zullen kunnen specifiëren die samen een &#8220;situatie&#8221; vormen waarvoor we een berekening zullen kunnen doen. <em>Person </em>en <em>Household </em>zijn al aanwezig <a href="https://github.com/openfisca/country-template/blob/main/openfisca_country_template/entities.py">in de code</a>. Een logische vraag is dus of we, op basis van de gegeven wettekst, andere entiteiten kunnen definiëren die nuttig zouden zijn.</p>



<p>Na het stellen van de vraag aan GPT-5 in Cursor, met de wettekst geselecteerd als context, wordt voorgesteld de volgende entiteiten toe te voegen: </p>



<ul class="wp-block-list">
<li>Eligible Person for Societal Integration</li>



<li>Living Wage Recipient</li>



<li>Employment Project Participant</li>
</ul>



<p>De voorgestelde aanpassingen aan de code zijn syntactisch correct. Geen van deze 3 zijn echter nuttig of noodzakelijk: het gaat in alledrie de gevallen om varianten van <em>Person</em>. De eigenschappen die maken dat ze bijvoorbeeld een leefloon zouden ontvangen, zijn veeleer variabelen toegevoegd aan de reeds bestaande <em>Person </em>entiteit. De waarde van die variabelen hangt bovendien af van andere variabelen die eveneens aan datzelfde individu gebonden zijn, zoals een inkomen uit werk of een handicapstatus. Entiteiten, die vooral dienen voor op zichzelf staande concepten, zijn hiervoor niet de juiste keuze.</p>



<p>Daarnaast lijkt GPT-5 het concept van een &#8220;rol&#8221; binnen een OpenFisca groepsentiteit verkeerd te hebben begrepen. Hij probeert &#8220;Eligible Person for Societal Integration&#8221; op te bouwen met verschillende &#8220;rollen&#8221; als onderdelen: &#8220;Belgian National&#8221;, &#8220;EU Citizen&#8221;, &#8220;Foreigner&#8221;, &#8220;Stateless&#8221;, &#8220;Refugee&#8221;&#8230; Dit ongetwijfeld omdat deze mogelijkheden verschijnen in <a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel#Art.3">Art.3, 3° lid, van de wet</a>. In OpenFisca is een groepsentiteit echter samengesteld uit Personen die elk een rol krijgen. Een <em>Household </em>bevat zo <em>Adult </em>en <em>Child </em>rollen. Het is vrij nonsensicaal dat een EligiblePerson meerdere Foreigners zou kunnen bevatten. Nationaliteit of herkomst, of andere voorwaarden die gesteld worden in deze wet, zijn ook hier variabelen die gebonden zijn aan de persoon, geen entiteit op zich.</p>



<p>Op een ander moment werd nog een aparte entiteit gecreëerd voor het OCMW. Hoewel het logisch lijkt om de OCMWs te modelleren en als een entiteit te beschouwen &#8211; ze worden immers vermeld in de wet &#8211; is het dat hier (nog) niet. Er zijn immers geen verschillende types OCMWs met verschillende eigenschappen of rollen, waarvoor we telkens andere berekeningen moeten maken. In de context van deze wet, waarbij het de burger is voor wie we het recht op maatschappelijke steun berekenen, is het OCMW vooral een constant, invariant gegeven. In OpenFisca kunnen we dat dus vooralsnog overslaan. (Een entiteitstype &#8220;instituut&#8221; is ook niet voorzien.)</p>



<p>We merken hier dus dat Cursor niet &#8220;nee&#8221; kan antwoorden op de vraag of er nuttige andere entiteiten kunnen toegevoegd worden. Het kan de denkrichting achter die vraag niet bekritiseren of corrigeren uit eigen beweging. Doorheen het hele experiment bleken Cursor en GPT-5 ook een neiging te vertonen tot onnodige complexiteit. Dit is voor developers die met onbekende code of frameworks werken een groot risico:  indien men te snel te ver meegaat met zulke suggesties, dreigt men later de pedalen te verliezen en achteraf erg moeilijke correcties te moeten aanbrengen aan de fundamenten van het project. Eens een verkeerde route is ingeslagen, blijkt het ook moeilijk om op de stappen terug te keren en deze weer te doen vergeten. Zeker als men ze eerst onwetend heeft toegelaten, komen ze terecht in de context en wordt er in vervolgvragen op verdergebouwd. Deze sluipende &#8220;<a href="https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html">context rot</a>&#8221; is ondertussen een bekend probleem en een belangrijke oorzaak van tijdverlies met AI-enabled coding.</p>



<h2 class="wp-block-heading">Variabelen</h2>



<p>De kern van het model zit in de variabelen die de rechten en voorwaarden uit de wet voorstellen. <a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel#Art.2">Artikel 2</a> van de wet somt de verschillende vormen van maatschappelijke integratie op waarop iemand recht kan hebben (o.a. tewerkstelling, leefloon, geïndividualiseerd project). <a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel#Art.2">Artikel 3</a> bevat de voorwaarden waaraan een persoon moet voldoen om van dat recht gebruik te maken. We hebben deze bepalingen stap voor stap in code omgezet.</p>



<p>Recht op maatschappelijke integratie betekent in de praktijk dat een OCMW een persoon moet ondersteunen via (1) een job of opleiding, (2) een leefloon, of (3) een geïndividualiseerd project voor maatschappelijke integratie. Dit kan vertaald worden naar drie boolean variabelen op de Persoon-entiteit, bijvoorbeeld <em>employment_right</em>, <em>living_wage_right </em>en <em>individualized_project_right</em>. Cursor geeft hier een goede code-suggestie, en voorziet een eenvoudige <em>placeholder</em>-formule: zolang iemand “in aanmerking komt voor integratie” (een andere variabele) zou het recht gelden. We bekomen een definitie van <em>employment_right</em> als volgt:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>class employment_right(Variable):
  value_type = bool
  entity = Person
  definition_period = MONTH
  def formula(person, period, parameters):
    return person("eligible_for_integration", period)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">employment_right</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">Variable</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">  value_type = </span><span style="color: #4EC9B0">bool</span></span>
<span class="line"><span style="color: #D4D4D4">  entity = Person</span></span>
<span class="line"><span style="color: #D4D4D4">  definition_period = MONTH</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">formula</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">person</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">period</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">parameters</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> person(</span><span style="color: #CE9178">&quot;eligible_for_integration&quot;</span><span style="color: #D4D4D4">, period)</span></span></code></pre></div>



<p>De invulling van deze placeholder-formule komt aan bod in het daaropvolgende Artikel 3. Die modelleert de volgende voorwaarden om in aanmerking te komen:</p>



<ul class="wp-block-list">
<li><strong>Verblijf in België </strong>(volgens de regels nader te bepalen bij KB).</li>



<li><strong>Leeftijd:</strong> De persoon is <strong>meerderjarig</strong> (18+), of als minderjarige <strong>gelijkgesteld</strong> aan een meerderjarige volgens de uitzonderingen in deze wet.</li>



<li><strong>Nationaliteit of verblijfsstatuut:</strong> De persoon is Belg, EU-burger (na 3 maanden verblijf), ingeschreven vreemdeling, staatloze, vluchteling of subsidiair beschermde. </li>



<li><strong>Onvoldoende bestaansmiddelen</strong></li>



<li><strong>Werkbereidheid </strong>(tenzij onmogelijk om gezondheidsredenen of billijkheidsredenen).</li>



<li><strong>Rechten uit andere stelsels uitgeput</strong></li>
</ul>



<p>Al deze voorwaarden komen samen in één centrale boolean variabele <em>societal_integration_right</em>. Die variabele geeft aan of iemand, gegeven zijn persoonlijke situatie, recht <strong>kan</strong> hebben op maatschappelijke integratie. In feite is dit de vertaalslag van <em>“voldoet de persoon aan alle voorwaarden van art.3?”</em>. De formule combineert alle subvoorwaarden:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>class societal_integration_right(Variable):
  value_type = bool
  entity = Person
  definition_period = MONTH
  label = "Right to societal integration"
  def formula(person, period, parameters):
    residency = person("residency_status", period)
    is_major = person("is_major", period)
    nationality = person("nationality_status", period) in &#91;"belgian", "eu_citizen", "registered_foreigner", "stateless", "refugee"&#93;
    insufficient_income = not person("has_sufficient_income", period)
    willing_to_work = person("willing_to_work", period)
    claiming_benefits = person("claiming_benefits", period)
    return (residency and is_major and nationality and insufficient_income and willing_to_work and claiming_benefits)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">societal_integration_right</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">Variable</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">  value_type = </span><span style="color: #4EC9B0">bool</span></span>
<span class="line"><span style="color: #D4D4D4">  entity = Person</span></span>
<span class="line"><span style="color: #D4D4D4">  definition_period = MONTH</span></span>
<span class="line"><span style="color: #D4D4D4">  label = </span><span style="color: #CE9178">&quot;Right to societal integration&quot;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">formula</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">person</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">period</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">parameters</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">    residency = person(</span><span style="color: #CE9178">&quot;residency_status&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    is_major = person(</span><span style="color: #CE9178">&quot;is_major&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    nationality = person(</span><span style="color: #CE9178">&quot;nationality_status&quot;</span><span style="color: #D4D4D4">, period) </span><span style="color: #569CD6">in</span><span style="color: #D4D4D4"> &#91;</span><span style="color: #CE9178">&quot;belgian&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;eu_citizen&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;registered_foreigner&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;stateless&quot;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&quot;refugee&quot;</span><span style="color: #D4D4D4">&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">    insufficient_income = </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> person(</span><span style="color: #CE9178">&quot;has_sufficient_income&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    willing_to_work = person(</span><span style="color: #CE9178">&quot;willing_to_work&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    claiming_benefits = person(</span><span style="color: #CE9178">&quot;claiming_benefits&quot;</span><span style="color: #D4D4D4">, period)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> (residency </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> is_major </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> nationality </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> insufficient_income </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> willing_to_work </span><span style="color: #569CD6">and</span><span style="color: #D4D4D4"> claiming_benefits)</span></span></code></pre></div>



<p>Let hier vooral op enkele vreemde lacunes in de suggestie van Cursor. Zo is de naam van de variabele <code>societal_integration_right</code> niet gelijk aan de eerder gedefinieerde placeholder <code>eligible_for_integration</code>, hoewel dat wel de bedoeling is. Daarnaast wordt in de nationaliteitsvoorwaarde de mogelijkheid van subsidiair beschermden simpelweg vergeten! Tot slot is de zesde voorwaarde, dat men eerst zijn rechten laat gelden op eventuele sociale uitkeringen, wel erg rudimentair benoemd als <code>claiming_benefits</code> &#8211; een variabelenaam die niet echt dekt wat bedoeld wordt.</p>



<p>We kunnen deze suggestie dus wel aanvaarden, maar we zijn al direct verplicht om 3 correcties door te voeren. De niet-overeenkomst van de variabelenaam kunnen we daarbij nog gemakkelijk detecteren&nbsp;omdat de tests niet zullen werken als er nog ongedeclareerde variabelen in de code zitten. Een mankerend element in de formule, zoals een vergeten voorwaarde, is echter veel gemakkelijker over het hoofd gezien, en leidt wanneer dat ongedetecteerd blijft gegarandeerd tot fouten in de uitvoering. Hier merken we dus echt wel de noodzaak om terug te koppelen naar de wettekst om te verifiëren dat de gegenereerde code wel degelijk overeenkomt met wat de wettekst zegt. Deze terugkoppeling moet aandachtig genoeg gebeuren om ook ongelukkige benamingen of subtiele misinterpretaties van te tekst te kunnen identificeren.</p>



<p>Eventuele correcties kunnen daarnaast ook best zo snel mogelijk gebeuren. Als foutieve code in de editor aanwezig blijft, gaat ze immers deel uitmaken van de context die het AI-model gebruikt en dient ze zelf als fundament voor daaropvolgende suggesties. Dit kan leiden tot een situatie waarbij men suggesties blijft ontvangen waarin steeds dezelfde fouten terugkomen, die men dus ook telkens weer moet corrigeren, wat niet bevorderlijk is voor de productiviteit.</p>



<p>De variabelen gebruikt in de <code>formula()</code> methode van <code>societal_integration_right</code> hierboven, moeten uiteraard op hun beurt ook gedefinieerd worden: voor elk van deze variabelen moeten we een klasse schrijven. Dit kan aanleiding geven tot complexe kettingen van afhankelijkheden. Zo zou <code>is_major</code> een eenvoudige booleaanse inputvariabele kunnen zijn, maar we kunnen dat ook berekenen op basis van de datum van vandaag en weer een nieuwe variabele <code>birthdate</code>. De berekening van de formule van de variabelen kan daarnaast ook gebruik maken van de parameters van een wet &#8211; zo is de meerderjarigheid in België pas vanaf 18 jaar <a href="https://www.ejustice.just.fgov.be/eli/wet/1990/01/19/1990009050/justel">sinds 1 mei 1990</a>. Dat zou ons dan weer bij het Burgerlijk Wetboek brengen, en haar geschiedenis &#8211; om het beknopt te houden gaan we daar nu niet verder op in.</p>



<p>Laatste opmerking: het model zoals hier gebouwd is uiteraard een vereenvoudigde weerspiegeling. Merk wel op dat we zelfs dan, slechts 3 artikels ver in een wet, al snel 10 Python-klassen hebben gedefinieerd hebben, met potentieel voor meer als we echt in de diepte zouden willen gaan. Cursor en GPT-5 schrijven daarbij relatief <em>verbose </em>code, met vele hulpvariabelen en -methodes, die soms echt wel eenvoudiger kan. Sommige details uit de wet, zoals de 3-maanden wachttijd voor EU-burgers, of de uitzonderingen die bestaan voor bepaalde categorieën van minderjarigen (<a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel#Art.7">Art. 7</a>), zouden in een volwaardig model nog heel wat extra variabelen of condities vergen. </p>



<h1 class="wp-block-heading">AI en code: enkele valkuilen</h1>



<p>Wat betreft <em>best practices</em> voor de inzet van AI-hulp bij zulke projecten, identificeren we nog enkele valkuilen, naast diegene die we tot nu toe al genoemd hebben.</p>



<p>Teveel documentatie toevoegen in het begin leidt snel tot &#8220;<a href="https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html">context confusion</a>&#8220;, waarbij de suggesties of de antwoorden van de LLM gebaseerd gaan zijn op stukken informatie die (nog) niet relevant zijn. Het is beter de documentatie geleidelijk toe te voegen, in gelijke tred met de functionaliteit, in plaats van de volledige analyse en achtergrond op voorhand toe te voegen aan de IDE. In het geval van regelgeving: voeg de regels artikel per artikel toe aan de IDE, naarmate de projectontwikkeling vordert, en weersta de verleiding om de hele wettekst op voorhand als &#8220;encyclopedische referentie&#8221; te integreren in de IDE.</p>



<p>Context rot of context poisoning ontstaat dan weer wanneer de AI een verkeerde weg is ingeslagen,&nbsp; daarop voortboomt, en uiteindelijk relevantere informatie vergeet zodat het ook moeilijker wordt om ervan te herstellen. &#8220;<a href="https://www.anthropic.com/engineering/multi-agent-research-system">Context quarantining</a>&#8220;, het opdelen van het probleem in kleinere deelproblemen elk met hun eigen context, is daarvoor een logische remedie. Dit is ook de weg die de meeste &#8220;deep research&#8221; of &#8220;<a href="https://www.anthropic.com/engineering/multi-agent-research-system">multi-agentic</a>&#8221; systemen inslaan. In een IDE zou dat impliceren dat een AI-systeem de codebase en de documentatie vanaf een zekere grootte zou moeten segmenteren. Hoe dat technisch uitgewerkt kan worden achter de schermen lijkt een uitdaging van formaat, en verschillende IDEs zullen daar in de nabije toekomst waarschijnlijk hun eigen <em>approach </em>voor ontwikkelen.</p>



<p>Een andere frustratie was dat de AI soms code of bestanden verkeerd plaatste of aannam dat bepaalde dingen bestonden. Zo refereerden gegenereerde formules naar variabelen die nog helemaal niet gedefinieerd waren. Dit zorgt bij het testen natuurlijk voor foutmeldingen. We moesten de AI dan bijsturen of zelf extra variabelen invoegen om die referenties af te dekken. Ook kleine zaken, zoals de formattering van documentatie of het wel/niet aanmaken van noodzakelijk imports, vergden manuele correctie. Dit soort inconsistenties tonen aan dat je AI-suggesties niet blindelings kunt vertrouwen. Een developer moet voortdurend valideren of de code die gegenereerd wordt strookt met de bedoeling, en zo niet, onmiddellijk ingrijpen.</p>



<h1 class="wp-block-heading">publi.codes</h1>



<p>We willen ook nog wijzen op het bestaan van <a href="https://publi.codes/">publi.codes</a> als eventueel alternatief voor OpenFisca. Recenter en moderner, moeten de regels daar gecodeerd worden in een YAML-formaat, wat veel hanteerbaarder is dan het schrijven van subklassen in Python, en veel leesbaarder voor niet-developers. Men is in ruil daarvoor echter wel beperkt tot de <a href="https://publi.codes/docs/mecanismes">bewerkingen die zijn toegelaten</a> door de achterliggende motor. Pas vanaf de <a href="https://github.com/orgs/publicodes/projects/5">nog in ontwikkeling zijnde versie 2</a> komen daar mogelijkheden bij om <a href="https://github.com/publicodes/publicodes/issues/707">barema&#8217;s</a> te encoderen, of <a href="https://github.com/publicodes/publicodes/issues/705">abattementen</a> (vrijgestelde bedragen), die in België erg veelvuldig voorkomen. </p>



<p>De huidige versie van publi.codes is bovendien afhankelijk van het NPM ecosysteem dat tegenwoordig regelmatig geplaagd wordt door <a href="https://about.gitlab.com/blog/gitlab-discovers-widespread-npm-supply-chain-attack/">supply chain aanvallen</a>. Publi.codes v2 zou dan weer <a href="https://publi.codes/blog/publicodes-v2">gecompileerd worden naar OCaml</a>, een programmeertaal die we bij Smals niet gebruiken. Gezien de kans klein is dat Smals deze programmeertaal zou willen introduceren in haar portfolio (en een ondersteunend team ervoor zou willen uitbouwen), leek het weinig nuttig om voor deze oefening ook publi.codes in de diepte te bekijken. Het valt echter wel op dat op het vlak van UI-componenten, publi.codes wel <a href="https://publi.codes/docs/api/react-ui">enkele libraries</a> heeft klaarliggen.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Zowel OpenFisca als publi.codes zijn als platform vooral sterk wanneer je regels kunt modelleren als expliciete, testbare berekeningen. Minder ideaal is het voor regels die vooral draaien op discretionaire beslissingen, vrije interpretatie, bewijswaardering, uitzonderingen zonder heldere parameters, of “case management”-workflows. Het zijn primair reken- en regelsystemen, geen dossierbehandelingsplatformen. Daarmee zijn ze eventueel wel geschikt als motor voor apps die belastingen of uitkeringen op niveau van persoon/huishouden kunnen berekenen (recht op iets + bedrag), of om beleidsimpact te simuleren van eventuele wijzigingen (&#8220;wat kost deze hervorming?&#8221;, &#8220;wie wint/verliest?&#8221;). Dat kan voor beleidsmakers én burgers interessant zijn.</p>



<p>Toch is een OpenFisca-project niet snel even opgezet. Conceptueel is OpenFisca enigszins verwarrend voor een developer: hoewel OpenFisca gebruikmaakt van Python-klassen, dienen deze niet om objecten te modelleren, maar om entiteiten, variabelen en berekeningsregels uit de regelgeving declaratief vast te leggen. Gegeven dat er 1 klasse per variabele moet geschreven worden, en er vlotjes tientallen variabelen kunnen meespelen in een fijnmazig wetsartikel, zit men met een snel groeiende stapel code die een uitdaging is om overzichtelijk georganiseerd te krijgen. Daarnaast vergt ook de ontwikkeling van een GUI veel extra werk. Het project mist nog de nodige <em>tooling</em> om deze recurrente problematieken te verlichten. (Het helpt natuurlijk niet wanneer de <a href="https://openfisca.org/en/about/">opdrachtgevende overheid in 2020 plots de kraan dichtdraait</a>, schijnbaar van mening dat open-source projecten per definitie zelfbedruipend kunnen zijn.)</p>



<p>Tot slot kunnen we nog zeggen dat dit experiment tegelijk een nuttige en leerzame <em>reality check</em> was over wat LLMs kunnen bijdragen, en kunnen verknoeien, aan een developer-werkomgeving. Zelf de regie stevig in handen blijven houden en werken met kleine incrementele stapjes, blijft de beste raad. De ene AI tool zal daarbij al wat minder steken laten vallen dan de andere op allerlei vlakken. Het geven van negatieve antwoorden of het detecteren van fouten in de vraagstelling blijft erg uitdagend voor LLMs en dat brengt wat risico met zich mee. AI-assistentie in IDEs evolueert echter razendsnel, en een gelijkaardig experiment zal volgend jaar ongetwijfeld anders verlopen. </p>



<p>Rules As Code betekent zeker niet dat we vandaag een wettekst aan een AI kunnen geven om er een programma te laten uitrollen. Wel zal er op <a href="https://rules-as-code.yellenge.nl/">gespecialiseerde fora</a> de komende jaren ongetwijfeld veel aandacht gaan naar de interactie tussen wet, implementatie, en AI-tooling. Vooralsnog blijft de complexiteit van de regelgeving zelf, ook met steeds betere AI, de grootste hinderpaal voor Rules As Code projecten. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rules as Code, un parcours semé d&#8217;embûches ?</title>
		<link>https://www.smalsresearch.be/rules-as-code-fr/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Sun, 02 Nov 2025 21:04:39 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[AI4GOV]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=24294</guid>

					<description><![CDATA[Un lien étroit entre la réglementation et sa mise en œuvre logicielle : cela semble séduisant, mais est-ce réalisable ?]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar <a href="/rules-as-code-nl/" data-type="post" data-id="22734">in het Nederlands</a>.</em></p>



<p><em><em>Sauf indication contraire, cet article fait référence à la législation belge en vigueur au 15 octobre 2025. Les interprétations des textes législatifs dans cet article sont fournies à titre indicatif uniquement et ne font en aucun cas autorité.</em></em></p>



<p>Dans une utopie administrative, le parlement vote une loi ou le gouvernement prend une décision qui modifie quelque chose, et le logiciel utilisé pour sa mise en œuvre pratique peut être adapté presque automatiquement à la modification. Le concept d&#8217;un lien étroit entre la réglementation et sa mise en œuvre logicielle est également connu sous le nom de <em>Rules as Code</em>, ou <em>RaC</em>.</p>



<p>Au départ, il a surtout été exploré dans le monde juridique, dans les milieux <a href="https://law.stanford.edu/codex-the-stanford-center-for-legal-informatics/">universitaires</a>, dans les <a href="https://www.incubateurbxl.eu/">incubateurs</a> du secteur, parmi les <a href="https://smartlawhub.eu/">professionnels du droit</a> ou chez les <a href="https://www.legaltechmap.nl/">innovateurs</a> intéressés par la <a href="https://fr.wikipedia.org/wiki/LegalTech">LegalTech</a>. Un nouvel élan est apparu en 2020 lorsque l&#8217;OCDE <a href="https://www.oecd.org/fr/publications/dechiffrer-le-code_027bac0e-fr.html">a publié un rapport volumineux</a> dans lequel elle fait le point sur la situation du point de vue des pouvoirs publics, en se référant à des preuves de concept provenant de différents pays. Cela venait à point nommé, car la pandémie de COVID-19 cette même année avait confronté les gouvernements et leurs fournisseurs informatiques à des directives et des mesures en constante évolution à mesure que les connaissances scientifiques sur la maladie progressaient, et à une pression temporelle sans précédent pour mettre en œuvre chaque update le plus rapidement possible. Une technologie capable de faciliter la mise en œuvre harmonieuse de nouvelles réglementations est donc la bienvenue.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/07/2025-05-26_09h09_25.png"><img fetchpriority="high" decoding="async" width="1024" height="736" src="/wp-content/uploads/2025/07/2025-05-26_09h09_25-1024x736.png" alt="" class="wp-image-22779" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25-1024x736.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25-300x216.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25-768x552.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25.png 1359w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">(c) Tim De Sousa, <em><a href="https://timdesousa.medium.com/towards-a-definition-of-rules-as-code-4a5617d96175">Towards a definition of Rules as Code</a></em>, 25/03/2021, CC-BY</figcaption></figure>



<p>Certains pays sont donc passés à la vitesse supérieure. La France est en tête en matière de preuves de concept fonctionnelles, notamment avec les simulateurs <a href="https://www.mesdroitssociaux.gouv.fr/">Mes Droits Sociaux</a>, <a href="https://socio-fiscal.leximpact.an.fr/">LexImpact</a> et divers <a href="https://publi.codes/realisations">projets basés sur des <em>publicodes</em></a>. Des initiatives sont également en cours au <a href="https://www.fwd50.com/fr-FR/session/267/policy-difference-engine">Canada</a>, en <a href="https://datalex.org/">Australie</a>, en <a href="https://serviceinnovationlab.github.io/projects/legislation-as-code/">Nouvelle-Zélande</a> et aux <a href="https://regels.overheid.nl/">Pays-Bas</a>. L&#8217;UE a publié un <a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/news/rules-code-rac">article thématique informatif sur sa plateforme GovTech Connect</a>, mentionnant plusieurs autres sources, et <a href="https://digitalgovernmenthub.org/library/government-briefing-ai-powered-rules-as-code/">aux États-Unis également, des voix s&#8217;élèvent</a> pour attirer l&#8217;attention sur ce sujet. Enfin, une <a href="https://regels.overheid.nl/blog/8/onderzoek-naar-regels-als-code-methoden">étude néerlandaise approfondie</a> nous fournit un aperçu pratique et récent des solutions <em>Rules as Code.</em></p>



<h2 class="wp-block-heading">Domaines d&#8217;application</h2>



<p>Ce serait bien de pouvoir convertir une loi de manière semi-automatique en un logiciel (de préférence correct). Cependant, les <a href="https://hamish.dev/research/lac/executive-summary">expériences menées en Nouvelle-Zélande</a> nous ramènent à la réalité et démontrent de manière convaincante qu&#8217;une correspondance parfaite entre la loi et le logiciel correspondant, si tant est qu&#8217;elle soit réalisable, est même indésirable dans de nombreux cas.</p>



<p>L&#8217;application des règles nécessite en effet une interprétation. Ainsi, la formulation de nombreuses lois est délibérément maintenue quelque peu abstraite, afin de les rendre largement applicables ou d&#8217;éviter que des lacunes n&#8217;apparaissent trop rapidement lorsque la société évolue. Pour chaque application pratique, ces concepts abstraits doivent être concrétisés. Ce n&#8217;est pas toujours facile&nbsp;: quand les petites réparations d&#8217;une maison louée sont-elles &#8220;de nature structurelle&#8221; (et donc à la charge du propriétaire)&nbsp;? Quand les mesures RGDP sont-elles &#8220;suffisantes&#8221;&nbsp;? Une dépense est-elle ou non une &#8220;dépense professionnelle déductible&#8221;&nbsp;? Et qui sont exactement ces vagues &#8220;autorités compétentes&#8221; auxquelles le texte de loi fait référence&nbsp;? Tout cela fait l&#8217;objet de discussions.</p>



<p>Les circulaires ou les décisions administratives permettent parfois aux autorités publiques de clarifier l&#8217;interprétation souhaitée, mais il est rare d&#8217;aboutir à un ensemble complet et cohérent de règles. En cas d&#8217;ambiguïté, une différence minime d&#8217;interprétation peut faire toute la différence. Si nous imaginons une conversion entièrement automatique du texte de loi en logiciel, nous risquons de sauter ces étapes d&#8217;interprétation ou de les laisser remplir sans beaucoup de finesse par des valeurs par défaut préprogrammées. Tout juriste frémirait à cette idée, et à juste titre.</p>



<p><em>Rules as Code </em>n&#8217;est donc pas la panacée et trouve surtout des applications lorsque les règles sont sans ambiguïté et ne nécessitent que peu d&#8217;interprétation, ou lorsque les imprécisions sont acceptables et peuvent être conservées dans le résultat final. L&#8217;exemple classique est un ensemble de règles qui peuvent être réduites à un arbre de décision basé sur des critères objectivement calculables. Les applications associées sont, par exemple, les formulaires de demande, les simulateurs ou les modules de calcul. Les réglementations de nature plutôt normative, telles que les règlements de l&#8217;UE qui utilisent fréquemment des termes vagues tels que &#8220;suffisant&#8221;, &#8220;adéquat&#8221;, &#8220;approprié&#8221;, &#8220;pertinent&#8221;, etc. ne s&#8217;y prêtent pas, ce que certains universitaires ont judicieusement formulé ainsi&nbsp;: &#8220;<a href="https://www.sciencedirect.com/science/article/abs/pii/S0267364921000406?via%3Dihub">la justice ne peut être automatisée</a>&#8220;.</p>



<h2 class="wp-block-heading">Obstacles</h2>



<p>Dès que l&#8217;on commence à transposer la réglementation en code, on se heurte rapidement à la complexité des liens internes entre toutes sortes de lois et de décisions. Un bon exemple est l&#8217;<a href="https://regels.overheid.nl/docs/lab/AOW">âge de la retraite aux Pays-Bas</a>&nbsp;: bien que défini de manière assez simple à l&#8217;<a href="https://wetten.overheid.nl/jci1.3:c:BWBR0002221&amp;hoofdstuk=III&amp;paragraaf=1&amp;z=2023-01-01&amp;g=2023-01-01">article 7a de la loi concernée</a>, il affecte ou est cité dans <a href="https://regels.overheid.nl/docs/assets/files/AOW-Leeftijd-vindplaatsten-in-wetgeving-6f21171f35f6fb99bf580601f64a5c51.pdf">au moins 100 autres lois ou statuts néerlandais</a>. Si l&#8217;on y touche, on risque donc rapidement de provoquer un effet domino important.</p>



<p>En outre, le législateur fait preuve de créativité lorsqu&#8217;il s&#8217;agit de trouver des solutions à certaines situations rares.&nbsp;Il est courant de revoir ou d&#8217;élargir les définitions, ou d&#8217;ajouter des exceptions ou des conditions supplémentaires. Chaque amendement peut à son tour renvoyer à d&#8217;autres règles ou lois, ce qui entraîne toute une série de dépendances.</p>



<p>Prenons le concept de majorité. En théorie, c&#8217;est une règle simple&nbsp;: toute personne âgée de 18 ans ou plus est majeure et donc capable d&#8217;exercer ses droits civils (<a href="https://www.ejustice.just.fgov.be/eli/loi/1804/03/21/1804032150/justel#Art.488">art. 488 de l&#8217;ancien Code civil</a>). Cependant, ce tout petit article est suivi d&#8217;une série d&#8217;articles beaucoup plus longs sur les exceptions à cette règle (<a href="https://www.ejustice.just.fgov.be/eli/loi/1804/03/21/1804032150/justel#Art.488/1">art. 488/1</a> et suivants), jusqu&#8217;à l&#8217;administration (art. <a href="https://www.ejustice.just.fgov.be/eli/loi/1804/03/21/1804032150/justel#Art.494">494</a>&#8211;<a href="https://www.ejustice.just.fgov.be/eli/loi/1804/03/21/1804032150/justel#Art.502">502</a>). Si cela ne suffit pas, le juge de paix peut également intervenir (<a href="https://www.ejustice.just.fgov.be/eli/loi/1804/03/21/1804032150/justel#Art.492/1">art. 492</a>) et statuer sur une longue liste de capacités qui, au moment de la rédaction du présent document, comprend déjà 42 éléments distincts (<a href="https://www.ejustice.just.fgov.be/eli/loi/1804/03/21/1804032150/justel#Art.492/1">art. 492/1</a> §2 + §3) .</p>



<p>Supposons qu&#8217;un service public soit autorisé à octroyer des subventions sur la base d&#8217;un règlement qui impose la majorité comme condition et que nous souhaitions créer un site web permettant aux citoyens de vérifier leur éligibilité. Dans ce cas, programmer<em> if (x≥18)</em> n&#8217;est pas toujours suffisant. Une personne sous tutelle qui n&#8217;est pas autorisée à gérer ses propres finances peut devoir obtenir une autre réponse. Cela n&#8217;est pas nécessairement explicitement mentionné dans le règlement relatif aux subventions, mais découle de l&#8217;application de la définition de la majorité civile telle qu&#8217;elle figure dans le code civil.</p>



<p>Mais ce n&#8217;est pas tout&nbsp;: les lois peuvent étendre ou modifier les définitions antérieures. Ainsi, le concept de majorité est élargi dans la <a href="https://www.ejustice.just.fgov.be/eli/loi/2002/05/26/2002022559/justel">loi sur l&#8217;intégration sociale</a>&nbsp;: les personnes mineures mariées, enceintes ou ayant des enfants à charge sont assimilées à des personnes majeures <a href="https://www.ejustice.just.fgov.be/eli/loi/2002/05/26/2002022559/justel#Art.7">(art. 7)</a>, mais uniquement pour l&#8217;application de cette loi. En résumé&nbsp;: toute personne majeure a plus de 18 ans, mais toutes les personnes âgées de plus de 18 ans ne sont pas pleinement indépendantes, et la notion de majorité peut en outre varier selon le domaine d&#8217;application.</p>



<p>L&#8217;aspect temporel introduit une dimension de complexité supplémentaire. En effet, toutes ces règles n&#8217;ont pas toujours été en vigueur. En Belgique, la majorité à 18 ans n&#8217;est entrée en vigueur que le 1er mai 1990 (loi du 19 janvier 1990, publiée au <a href="https://www.ejustice.just.fgov.be/eli/loi/1990/01/19/1990009050/staatsblad">Moniteur belge le 30 janvier 1990</a>). Auparavant, il fallait avoir 21 ans. La tutelle générale mentionnée ci-dessus a été précédée par différents statuts spéciaux, dont la &#8220;minorité prolongée&#8221; et la &#8220;tutelle provisoire&#8221;. Ces derniers ont été <a href="https://www.ejustice.just.fgov.be/eli/loi/2013/03/17/2013009163/justel#Art.27">supprimés en 2014</a>, mais en raison d&#8217;une <a href="https://www.ejustice.just.fgov.be/eli/loi/2013/03/17/2013009163/justel#Art.228">disposition transitoire</a>, ils n&#8217;ont disparu dans la pratique que le 1er septembre 2019. Des changements surviennent également en raison de fusions communales, de réformes de l&#8217;État, de pays qui n&#8217;existent plus, de règles temporaires telles que les mesures de soutien COVID, etc.</p>



<p>Même si une ancienne législation a été abrogée depuis des années, ses effets peuvent encore se faire sentir longtemps. Nous voyons ainsi sur <a href="https://fin.belgium.be/fr/particuliers/declaration-impot/rentrer-declaration/declaration-impot/explications-annees-anterieures">notre déclaration d&#8217;impôts</a> de 2025 une déduction pour &#8220;<em>cotisations spéciales de sécurité sociale des années 1982 à 1988</em>&#8221; (cadre VIII, code 1388-67). Les droits sociaux acquis dans le cadre de statuts ou de régimes qui n&#8217;existent plus aujourd&#8217;hui continuent également de compter. Si un calcul dépend d&#8217;une situation passée et de la législation en vigueur à l&#8217;époque, il peut donc être nécessaire d&#8217;implémenter dans un logiciel non seulement la réglementation actuelle, mais aussi tout son historique.</p>



<p>Toute cette complexité, même dans des concepts simples, ne peut que donner lieu à des lacunes ou des incohérences. Le Conseil d&#8217;État a fort à faire pour <a href="https://www.raadvst-consetat.be/?page=avis_recent_e_adviezen&amp;lang=fr">conseiller le législateur</a> et corrige régulièrement les erreurs dans les projets de texte. Même dans ce cas, le Moniteur belge doit souvent publier des errata. Le gouvernement est parfois chargé de définir les détails du contenu, mais les arrêtés royaux ou ministériels se font attendre, ce qui crée un vide pendant un certain temps. D&#8217;autres fois, la formulation n&#8217;est pas assez précise&nbsp;: par exemple, on ne précise pas s&#8217;il s&#8217;agit de jours calendaires ou de jours ouvrables.</p>



<p>Lorsque des lacunes, des contradictions apparentes ou des interprétations donnent lieu à des discussions, la <a href="https://hofvancassatie.be/Arr%C3%AAts.html%23%23%23">Cour de cassation</a> doit parfois clarifier certaines choses. Bien que cela ne garantisse pas une réduction de la confusion linguistique à l&#8217;avenir, comme en témoigne ce <a href="https://hofvancassatie.be/pdf/arresten-arrets/P.25.0771.N.pdf">récent arrêt</a> dans lequel il est précisé qu&#8217;un <em>véhicule à moteur</em> au sens de la <a href="https://www.ejustice.just.fgov.be/eli/loi/1968/03/16/1968031601/justel">loi sur la circulation routière</a> ne doit pas être compris comme un <em>véhicule à moteur</em> tel que défini dans le <a href="https://www.ejustice.just.fgov.be/eli/arrete/1975/12/01/1975120109/justel">code de la route</a>&#8230;</p>



<p>Enfin, il existe des cas où le texte de loi lui-même est grammaticalement ambigu. Ainsi, dans l&#8217;arrêté d&#8217;exécution du Gouvernement de la Région de Bruxelles-Capitale relatif aux travaux exemptés de permis d&#8217;urbanisme, il est mentionné à l&#8217;<a href="https://www.ejustice.just.fgov.be/eli/arrete/2008/11/13/2008031599/justel#Art.21">article21/1, 3°&nbsp;</a>: &#8220;<em>[&#8230;] la pose d&#8217;isolation [&#8230;] sur un mur mitoyen ou une façade non visible depuis l&#8217;espace public [&#8230;]&#8221;</em>. Il n&#8217;est pas clair ici si la phrase subordonnée (&#8220;non visible depuis l&#8217;espace public&#8221;) se rapporte uniquement à la façade ou à la fois à la façade et au mur mitoyen. Sans doute au grand dam de <a href="https://homegrade.brussels/">homegrade.brussels</a>, qui doit conseiller les particuliers à ce sujet et qui doit admettre dans sa <a href="https://homegrade.brussels/wp-content/uploads/2024/04/Homegrade_ficheinfo_isolation_exterieur-mur-mitoyen_FR.pdf">fiche d&#8217;information</a> sur le sujet&nbsp;: &#8220;Cet article est sujet à diverses interprétations&#8221;.</p>



<p>Cela représente déjà un défi de taille dans le cadre du développement d&#8217;applications classiques. La tâche serait-elle plus simple si nous construisions notre application autour d&#8217;un framework <em>Rules as Code</em>&nbsp;? Pas vraiment&nbsp;: un framework <em>RaC</em> peut fournir une méthodologie ou une approche fixe, mais cela ne suffit pas à éliminer la complexité&nbsp;: la même quantité d&#8217;informations doit toujours être programmée, et les ambiguïtés continuent de poser les mêmes problèmes. Certains moteurs<em> RaC</em> permettent de <a href="https://medium.com/computational-law-diary/how-rules-as-code-makes-laws-better-115ab62ab6c4">détecter les lacunes dans les règles</a>, mais il faut encore décider quoi en faire. Bien définir le projet et fixer des limites reste nécessaire pour éviter d&#8217;être submergé par une avalanche de dépendances, de références et d&#8217;historique des modifications.</p>



<h2 class="wp-block-heading">La base&nbsp;: l&#8217;analyse législative</h2>



<p>Supposons que nous voulions créer un logiciel qui mette en œuvre une certaine législation et qui calcule, par exemple, si vous avez droit à une subvention spécifique et, si oui, à quel montant.</p>



<p>Tout d&#8217;abord, il faut trouver un moyen de convertir cette loi en une forme structurée qui facilite la conversion en code.&nbsp;Grâce à une analyse législative, nous essayons de décomposer chaque règle de cette loi en ses différents éléments. Le schéma d&#8217;analyse ci-dessous, provenant du <a href="https://minbzk.github.io/wetsanalyse/">ministère néerlandais de l&#8217;Intérieur</a>, est générique et prévoit une division en 15 classes&nbsp;:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="566" src="/wp-content/uploads/2025/07/juridisch-analyseschema-1024x566.png" alt="" class="wp-image-22781" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema-1024x566.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema-300x166.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema-768x425.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema.png 1346w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Schéma d&#8217;analyse juridique (en NL). (c) Anouschka Ausems, John Bulles, Mariette Lokin, <a href="https://minbzk.github.io/wetsanalyse/"><em>Wetsanalyse met het juridisch analyseschema v1.0.10</em></a>, 29/11/2024, CC-0 Public Domain</figcaption></figure>



<p>Les <em>variables </em>sont des caractéristiques qui peuvent varier pour chaque sujet de droit (personne ou entité)&nbsp;: pour une personne, il s&#8217;agit par exemple du sexe, du lieu de résidence, du nom, de l&#8217;état civil. Les <em>paramètres</em>, en revanche, sont les caractéristiques de la règle qui sont identiques pour tout le monde&nbsp;: un champ d&#8217;application, une date de début, une valeur d&#8217;indice, etc. Ainsi, une circulaire aura souvent pour objectif d&#8217;adapter des <em>paramètres</em> tels que la valeur de l&#8217;indice, tandis qu&#8217;une loi définira quelles <em>variables</em> peuvent être prises en compte dans l&#8217;application d&#8217;une règle et dans quelles <em>conditions</em>. Il est parfois difficile de déterminer si un terme relève des variables ou des paramètres. Les créateurs de cette méthode fournissent pour chaque catégorie une <a href="https://minbzk.github.io/wetsanalyse/#Éléments du schéma d'analyse">description et des exemples</a> qui clarifient la manière dont ils peuvent être exprimés dans un texte législatif.</p>



<p>Prenons l&#8217;exemple du droit au congé de maternité, régi par le chapitre IV, <a href="https://www.ejustice.just.fgov.be/eli/loi/1971/03/16/1971031602/justel#Art.39">art.39 et suivants</a> de la loi sur le travail. En résumé, la règle de base est qu&#8217;une femme enceinte a droit à ce congé à partir de 6 semaines avant la date prévue de l&#8217;accouchement estimée par le médecin (8 semaines en cas de grossesse multiple), plus 9 semaines après l&#8217;accouchement. Une analyse rudimentaire de cette règle selon le schéma ci-dessus peut être commencée comme suit&nbsp;:</p>



<ul class="wp-block-list">
<li>La femme, son employeur et son médecin sont tous des <em>sujets de droit</em>, liés entre eux par une relation de travail ou une relation médecin-patient qui sont des <em>relations juridiques</em>.</li>



<li>L&#8217;une des<em> conditions</em> de cette loi est que la date de l&#8217;accouchement soit estimée par un médecin dans un certificat médical remis à l&#8217;employeur. Ce certificat est ici un <em>objet juridique</em>.</li>



<li>Les <em>variables</em> applicables à la femme sont notamment&nbsp;: le nombre d&#8217;enfants qu&#8217;elle attend, son lieu de résidence, son lieu de travail, la date prévue pour l&#8217;accouchement&#8230; Elles sont différentes pour chaque femme.</li>



<li>Les <em>paramètres</em> de cette loi sont notamment les délais minimaux et maximaux mentionnés&nbsp;: 6 semaines, 8 semaines, 9 semaines&#8230; Ils sont identiques pour toutes les femmes.</li>



<li><em>L&#8217;indication de la durée et du lieu</em> précise où et quand la règle s&#8217;applique&nbsp;: sur le territoire belge, et depuis les dernières modifications législatives, c.à.d. à partir du 1er juillet 2004 pour la partie prénatale et du 1er mars 2009 pour la partie postnatale du congé de maternité. L&#8217;historique des paramètres peut également être consigné. Les variables peuvent également comporter des indications temporelles si elles évoluent dans le temps.</li>
</ul>



<p>La réglementation effective prévoit notamment des situations exceptionnelles pour les enfants prématurés, malades ou mort-nés, etc. En tenir compte dans l&#8217;analyse peut conduire à l&#8217;ajout de nombreux paramètres et variables supplémentaires afin de couvrir toutes ces exceptions.</p>



<p>La <em>règle de déduction</em> prend alors la forme d&#8217;un calcul, dans lequel&nbsp;:</p>



<ul class="wp-block-list">
<li>l&#8217;input consiste en une &#8220;situation&#8221; décrite comme un ensemble de <em>variables</em>,</li>



<li>les <em>conditions</em> permettent d&#8217;activer ou non certains composants du calcul,</li>



<li>les <em>paramètres</em> donnent un poids aux composants du calcul,</li>



<li>l&#8217;output peut être une valeur catégorielle ou numérique,</li>



<li>le calcul peut s&#8217;appuyer sur d&#8217;autres<em> règles de déduction</em> avec leurs propres paramètres, conditions et variables.</li>
</ul>



<p>Nous sommes libres de choisir le niveau de granularité ou la profondeur de notre analyse. Nous pouvons pinailler et essayer d&#8217;encoder chaque détail de la réglementation, mais nous pouvons tout aussi bien nous contenter de faire quelques généralisations, ne serait-ce que pour éviter que le logiciel final ait plus de boutons qu&#8217;un cockpit d&#8217;avion. Nous avons donc pris la femme comme point de départ ci-dessus, mais en réalité, la loi parle d&#8217;employée. Cela implique un contrat de travail valide. Nous pouvons intégrer cela avec des variables et des conditions supplémentaires, et même avec des règles supplémentaires sur les contrats de travail, mais cela apporte-t-il une valeur ajoutée&nbsp;? Il peut suffire de laisser les choses telles quelles et d&#8217;indiquer dans une clause de non-responsabilité que l&#8217;application ne s&#8217;applique qu&#8217;aux employées.</p>



<p>Traduire correctement la législation en code n&#8217;est donc pas chose aisée et nécessite de prendre en compte certains éléments. Il est utile à cet égard d&#8217;établir une collaboration étroite entre les juristes, qui peuvent expliquer clairement les règles, et les développeurs de logiciels qui doivent les traduire en code informatique, avec ou sans approche <em>RaC</em>. Il en résulte également de nouveaux profils combinant des compétences juridiques et techniques&nbsp;: nous assistons progressivement à l&#8217;émergence de &#8220;legal engineers&#8221; et de &#8220;programmateurs politiques&#8221;.&nbsp;</p>



<h2 class="wp-block-heading">L&#8217;approche <em>Rules as Code</em></h2>



<p>L&#8217;objectif d&#8217;une approche <em>Rules as Code</em> est de traduire les lois, les règles, les politiques, etc. dans un format structuré compréhensible par une machine. Cela peut ensuite être directement intégré dans des applications ou des sites web. L&#8217;idée est que ces applications puissent ainsi être plus facilement adaptées à une réglementation en constante évolution et que les utilisateurs puissent compter sur une plus grande transparence grâce au lien direct avec la législation.</p>



<p>Il n&#8217;existe pas de normes internationalement reconnues pour l&#8217;analyse législative, ni pour l&#8217;encodage des textes législatifs. L&#8217;exemple néerlandais ci-dessus est applicable de manière générique, mais cette initiative est encore jeune. Les moteurs <em>Rules as Code</em> existants utilisent d&#8217;autres conventions, qui peuvent varier considérablement les unes des autres. Ils définissent généralement leur propre encodage, sous la forme d&#8217;un <a href="https://fr.wikipedia.org/wiki/Langage_d%C3%A9di%C3%A9">Domain-Specific Language</a> ou d&#8217;un <a href="https://fr.wikipedia.org/wiki/Langue_contr%C3%B4l%C3%A9e">Controlled Natural Language</a>, dans lequel la réglementation doit d&#8217;abord être convertie. Ce n&#8217;est qu&#8217;une fois cette étape franchie que d&#8217;autres applications peuvent être développées.</p>



<p>L&#8217;absence de formats, de modèles et d&#8217;ontologies standardisés rend difficile l&#8217;adoption de <em>Rules as Code</em>. Entre les différents preuves de concept dans différents pays, parfois même au sein d&#8217;un même pays, l&#8217;<a href="https://interoperable-europe.ec.europa.eu/collection/eugovtech/document/rules-code-open-approach">interopérabilité</a> reste encore assez faible. Chaque pays ou chaque département risque ainsi d&#8217;utiliser son propre langage, approche ou méthodologie, ce qui entraîne une fragmentation et une duplication des efforts. Idéalement, il faudrait viser un vocabulaire standardisé et des règles publiées dans un format uniforme, afin qu&#8217;elles puissent être réutilisées et échangées entre différents systèmes et services publics.</p>



<p>Parmi les outils <em>Rules as Code</em> existants d&#8217;une certaine importance, on trouve <a href="https://openfisca.org/en/">OpenFisca</a>, <a href="https://publi.codes/">PubliCodes</a>, <a href="https://catala-lang.org/">Català</a> et <a href="https://wendbarewetsuitvoering.pleio.nl/page/view/ba938b8f-0668-4451-a7e6-81de78bbe66a/regelspraak">RegelSpraak</a>. Nous nous tenons délibérément à distance des <a href="https://fr.wikipedia.org/wiki/Business_process_model_and_notation">BPMN</a>, <a href="https://en.wikipedia.org/wiki/CMMN">CMMN</a>, <a href="https://fr.wikipedia.org/wiki/Programmation_logique">langages de programmation logiques</a> et <a href="https://en.wikipedia.org/wiki/Business_rules_engine">rule engines</a> classiques, qui ne sont pas adaptés aux textes juridiques. Dans un prochain article, nous approfondirons notre analyse en nous focalisant sur les outils spécialement conçus pour la législation, et nous en choisirons un pour l&#8217;étudier en détail sur le plan technique.</p>



<h2 class="wp-block-heading">Conclusion provisoire</h2>



<p>Les frameworks <em>Rules as Code</em> fournissent une méthode uniforme et générique pour analyser la législation. Ils offrent aux programmeurs une bibliothèque contenant les éléments de base nécessaires pour mettre en œuvre la réglementation et créer des scénarios de test, quel que soit le domaine dans lequel ils travaillent. En analysant la réglementation et en la convertissant en un <em>domain-specific language</em>, celle-ci peut être traitée par un <em>rule engine</em> ou un <em>interpreter</em>. Il est important de noter que cette conversion nécessite pour l&#8217;instant un travail humain minutieux et analytique, car elle implique une interprétation. (L&#8217;externalisation de cette étape à de grands modèles de langage ne donne pas de résultats entièrement positifs, mais nous y reviendrons dans un prochain article).</p>



<p>Le niveau de détail de nombreuses réglementations rend l&#8217;analyse et la conversion vers un format <em>Rules as Code</em> rarement aisée. Si l&#8217;on souhaite aboutir à un système complet et cohérent qui tienne compte de nombreuses dépendances et situations exceptionnelles, on se retrouve confronté à une quantité impressionnante de paramètres et de variables. Si les calculs doivent pouvoir être rétroactifs et que l&#8217;historique de la législation joue également un rôle, cela ajoute une dimension supplémentaire. Les interdépendances internes entre toutes les règles font que, pour mettre en place une application <em>Rules as Code</em>, il faut rapidement s&#8217;attendre à un effort initial important.</p>



<p>L&#8217;un des arguments en faveur du <em>Rules as Code</em> est qu&#8217;il permettrait de développer certains types d&#8217;applications de manière générique pour n&#8217;importe quel domaine&nbsp;: eligibility checkers, compliance tools, tax/benefit calculators, formulaires web, simulateurs de calcul, gestion de dossiers, etc. Tant que la législation sous-jacente est suffisamment claire et concrète, une même application<em> template</em> pourrait être utilisée sans trop de modifications dans tous les départements gouvernementaux. Cette idée louable se heurte toutefois à des difficultés pratiques liées à la législation elle-même, qui se réinvente presque dans chaque domaine&nbsp;: il est ainsi difficile de développer des composants communs pour la majorité ou les véhicules à moteur lorsque ces termes ont des définitions différentes dans différentes lois.</p>



<p>Une autre promesse de <em>Rules as Code</em> est que les applications développées sur la base de tels frameworks restent étroitement liées à la législation, ce qui peut également être rendu visible. Ce lien doit offrir des garanties plus transparentes qu&#8217;une application est bien conforme à la législation et qu&#8217;elle le restera si cette législation venait à changer demain. En outre, il existe un potentiel pour aider à l&#8217;élaboration de règles. Un processus itératif dans lequel une version <em>RaC</em> des règles est élaborée parallèlement à la version préliminaire du texte peut permettre de détecter et de combler rapidement les lacunes, voire de faciliter l&#8217;analyse politique <em>ex ante</em> en simulant d&#8217;abord l&#8217;impact de modifications législatives hypothétiques (voir également le <a href="https://www.oecd.org/fr/publications/dechiffrer-le-code_027bac0e-fr.html">rapport de l&#8217;OCDE</a> à ce sujet). Il n&#8217;en reste pas moins que, même avec le framework <em>RaC</em>, la mise en œuvre de ce processus nécessite les mêmes investissements importants.</p>



<p>Pour rassurer ceux qui craignent que les ordinateurs ne prennent bientôt le contrôle du système judiciaire, nous en sommes encore très loin. Rappelons également que le RGPD, dans son <a href="https://eur-lex.europa.eu/legal-content/FR/TXT/PDF/?uri=CELEX:32016R0679#art_22">article 22</a>, fixe des limites claires à la prise de décision automatique. En outre, une version codifiée d&#8217;une loi n&#8217;a pour l&#8217;instant aucun statut juridique ni aucune validité légale&nbsp;: seul le texte original de la loi est contraignant. En d&#8217;autres termes, même si nous convertissons la réglementation en code, le contrôle humain reste indispensable et le Moniteur belge a toujours le dernier mot.</p>



<p>Affaire à suivre&#8230;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rules as Code, een hindernissenparcours?</title>
		<link>https://www.smalsresearch.be/rules-as-code-nl/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Mon, 20 Oct 2025 09:29:27 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[AI4GOV]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22734</guid>

					<description><![CDATA[Een nauwe koppeling tussen regelgeving en de softwarematige implementatie ervan: klinkt mooi, maar is het ook haalbaar?]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/rules-as-code-fr/" data-type="post" data-id="24294">en français</a>.</em></p>



<p><em>Noot: dit artikel refereert naar Belgische wetgeving zoals deze gold op 15 oktober 2025, tenzij waar anders aangeduid. De interpretaties van wetteksten in dit artikel dienen slechts ter illustratie en zijn in geen geval autoritatief. </em></p>



<p>In een administratief utopia stemt het parlement een wet, of neemt de regering een besluit, dat iets wijzigt, en kan de software gebruikt voor de praktische uitwerking ervan haast automatisch aangepast worden aan de wijziging. Het concept van een nauwe koppeling tussen regelgeving en de softwarematige implementatie ervan, staat ook bekend onder de naam <em>Rules as Code</em>, afgekort <em>RaC</em>.</p>



<p>Initieel werd het vooral verkend in de juridische wereld, in <a href="https://law.stanford.edu/codex-the-stanford-center-for-legal-informatics/">academia</a>, in <a href="https://www.incubateurbxl.eu/">incubatoren</a> in de sector, <a href="https://smartlawhub.eu/">onder juridische professionals</a>, of bij <a href="https://www.legaltechmap.nl/">innovatoren</a> met interesse in <a href="https://en.wikipedia.org/wiki/Legal_technology">LegalTech</a>. Een hernieuwd elan kwam er in 2020 toen de OESO <a href="https://www.oecd.org/en/publications/cracking-the-code_3afe6ba5-en.html">een lijvig rapport publiceerde</a> waarin ze een stand van zaken geeft vanuit overheidsperspectief, daarbij refererend naar proof-of-concepts uit verschillende landen. Goed getimed, want de COVID-pandemie in datzelfde jaar had overheden en hun IT-leveranciers geconfronteerd met snel wijzigende richtlijnen en maatregelen naarmate de wetenschappelijke kennis over de ziekte toenam, en een ongeziene tijdsdruk om elke update zo snel mogelijk in de praktijk om te zetten. Technologie die een soepele implementatie van nieuwe regulering kan faciliteren, klinkt dan als muziek in de oren.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/07/2025-05-26_09h09_25.png"><img decoding="async" width="1024" height="736" src="/wp-content/uploads/2025/07/2025-05-26_09h09_25-1024x736.png" alt="" class="wp-image-22779" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25-1024x736.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25-300x216.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25-768x552.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-05-26_09h09_25.png 1359w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">(c) Tim De Sousa, <em><a href="https://timdesousa.medium.com/towards-a-definition-of-rules-as-code-4a5617d96175">Towards a definition of Rules as Code</a></em>, 25/03/2021, CC-BY</figcaption></figure>



<p>Sindsdien zijn enkele landen dan ook een versnelling hoger geschakeld. Frankrijk loopt op kop wat betreft werkende proof-of-concepts, waaronder simulatoren op <a href="https://www.mesdroitssociaux.gouv.fr/">Mes Droits Sociaux</a>, <a href="https://socio-fiscal.leximpact.an.fr/">LexImpact</a>, en verscheidene <a href="https://publi.codes/realisations">projecten gebaseerd op <em>publicodes</em></a>. Ook in <a href="https://www.fwd50.com/session/267/policy-difference-engine">Canada</a>, <a href="https://datalex.org/">Australië</a>, <a href="https://serviceinnovationlab.github.io/projects/legislation-as-code/">Nieuw-Zeeland</a> en <a href="https://regels.overheid.nl/">Nederland</a> lopen er initiatieven. De EU publiceerde een informatief <a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/news/rules-code-rac">thema-artikel op haar GovTech Connect platform</a> met vermelding van verschillende andere bronnen, en <a href="https://digitalgovernmenthub.org/library/government-briefing-ai-powered-rules-as-code/">ook in de VS gaan stemmen op</a> om er aandacht aan te besteden. Een <a href="https://regels.overheid.nl/blog/8/onderzoek-naar-regels-als-code-methoden">diepgaande Nederlandse studie</a> tenslotte voorziet ons van een handig en recent overzicht van <em>Rules as Code</em> oplossingen.</p>



<h2 class="wp-block-heading">Toepassingsdomein</h2>



<p>Het klinkt mooi om een wet semi-automatisch te kunnen omzetten in (liefst correcte) software. <a href="https://hamish.dev/research/lac/executive-summary">Ervaringen uit Nieuw-Zeeland</a> zetten ons echter met de voeten op de grond en tonen overtuigend aan dat een 1-op-1 mapping tussen wet en bijhorende software, als dat al haalbaar is, in veel gevallen zelfs onwenselijk is.</p>



<p>De toepassing van regels vereist immers interpretatie. Zo wordt de verwoording van veel wetgeving met opzet enigszins abstract gehouden, om ze breed toepasbaar te maken, of om te voorkomen dat er te snel mazen ontstaan wanneer de samenleving evolueert. Voor elke praktische toepassing moeten die abstracte concepten concreet ingevuld worden. Dat is niet altijd gemakkelijk: wanneer zijn kleine reparaties aan een huurhuis &#8220;structureel van aard&#8221; (dus voor rekening van de huisbaas)? Wanneer zijn GDPR-maatregelen &#8220;voldoende&#8221;? Is een uitgave wel of niet een &#8220;aftrekbare beroepskost&#8221;? En wie zijn nu exact die vage &#8220;bevoegde instanties&#8221; waar de wettekst naar verwijst? Allemaal voer voor discussie.</p>



<p>Via omzendbrieven of rulings wordt de gewenste interpretatie soms wel verder verduidelijkt van overheidswege, maar dan nog kom je zelden tot een volledige en sluitende verzameling regels. Is er onduidelijkheid, dan kan een miniem verschil in interpretatie een zaak maken of kraken. Beelden we ons een volautomatische omzetting van wettekst naar software in, dan riskeren we deze interpretatieve stappen over te slaan of zonder veel finesse te laten invullen door voorgeprogrammeerde <em>default</em>-waarden. Elke jurist zal huiveren bij dat idee, en terecht.</p>



<p><em>Rules as Code</em> is dus niet zaligmakend en vindt vooral toepassingen waar regels ondubbelzinnig zijn en weinig interpretatie behoeven, of wanneer vaagheden aanvaardbaar zijn en behouden kunnen blijven in het eindresultaat. Het klassieke voorbeeld is een set regels die te herleiden zijn tot een beslisboom op basis van objectief berekenbare criteria. Applicaties die daarmee gepaard gaan zijn bijvoorbeeld aanvraagformulieren, simulatoren of rekenmodules. Regelgeving die eerder normatief van aard is, zoals EU-verordeningen met hun veelvuldig gebruik van vage termen zoals &#8220;voldoende&#8221;, &#8220;adequaat&#8221;, &#8220;geschikt&#8221;, &#8220;relevant&#8221;, &#8230; leent zich er niet toe &#8211; wat enkele academici gevat verwoord hebben als: <a href="https://www.sciencedirect.com/science/article/abs/pii/S0267364921000406?via%3Dihub">&#8220;rechtvaardigheid kan men niet automatiseren&#8221;</a>.</p>



<h2 class="wp-block-heading">Hindernissen</h2>



<p>Eens men begint aan de oefening om regelgeving om te zetten in code, botst men al snel op de complexe interne verwevenheden tussen allerlei wetten en besluiten. Een mooie illustratie is de  <a href="https://regels.overheid.nl/docs/lab/AOW">Nederlandse pensioenleeftijd</a>: zelf vrij rechttoe rechtaan gedefinieerd in <a href="https://wetten.overheid.nl/jci1.3:c:BWBR0002221&amp;hoofdstuk=III&amp;paragraaf=1&amp;z=2023-01-01&amp;g=2023-01-01">artikel 7a van de betreffende wet</a>, heeft ze impact op, of wordt ernaar verwezen in, <a href="https://regels.overheid.nl/docs/assets/files/AOW-Leeftijd-vindplaatsten-in-wetgeving-6f21171f35f6fb99bf580601f64a5c51.pdf">minstens 100 andere Nederlandse wetten</a> of statuten. Als daaraan gemorreld wordt, riskeer je dus al snel grote domino-effecten.</p>



<p>Daarnaast komt de wetgever creatief uit de hoek als er oplossingen gevonden moeten worden voor bepaalde zeldzame situaties.&nbsp;Het herbekijken of uitbreiden van definities, of toevoegen van uitzonderingsbepalingen of extra voorwaarden, is courante praktijk. Elk amendement kan op zijn beurt verwijzen naar weer andere regels of wetten, wat een hele keten aan afhankelijkheden met zich meebrengt.</p>



<p>Neem het concept van meerderjarigheid. In theorie is dat een eenvoudige regel: wie 18 is of ouder, is meerderjarig en bijgevolg handelingsbekwaam (<a href="https://www.ejustice.just.fgov.be/eli/wet/1804/03/21/1804032150/justel#Art.488">art. 488 oud B.W.</a>). Dat piepkleine artikeltje wordt echter gevolgd door een resem veel langere artikels over de uitzonderingen daarop (<a href="https://www.ejustice.just.fgov.be/eli/wet/1804/03/21/1804032150/justel#Art.488/1">art.488/1</a> e.v.), tot en met bewindvoering (art. <a href="https://www.ejustice.just.fgov.be/eli/wet/1804/03/21/1804032150/justel#Art.494">494</a>&#8211;<a href="https://www.ejustice.just.fgov.be/eli/wet/1804/03/21/1804032150/justel#Art.502">502</a>). Als dat niet voldoet, kan ook de vrederechter ingrijpen (<a href="https://www.ejustice.just.fgov.be/eli/wet/1804/03/21/1804032150/justel#Art.492/1">art.492</a>) en oordelen over een waslijst aan bekwaamheden die op moment van schrijven al 42 afzonderlijke items bevat (<a href="https://www.ejustice.just.fgov.be/eli/wet/1804/03/21/1804032150/justel#Art.492/1">art.492/1</a> §2 + §3).</p>



<p>Stel dat een overheidsdienst subsidies mag uitdelen op basis van een reglement dat meerderjarigheid als voorwaarde stelt, en we willen een website bouwen waar burgers een <em>eligibility check</em> kunnen doen, dan is <code><em>if (x≥18)</em></code> programmeren niet altijd voldoende. Iemand die onder bewindvoering staat en zijn eigen geldzaken niet mag beheren, moet mogelijk alsnog een ander antwoord krijgen. Dat staat niet noodzakelijk expliciet in dat subsidiereglement, maar is een gevolg van het hanteren van de definitie van meerderjarigheid uit het burgerlijk wetboek.</p>



<p>Daarmee is de kous nog niet af: wetten kunnen eerdere definities uitbreiden of wijzigen. Zo wordt het concept van meerderjarigheid in de <a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel">wet op de Maatschappelijke Integratie</a> verruimd: minderjarigen die gehuwd zijn, zwanger zijn, of kinderen ten laste hebben worden gelijkgesteld aan meerderjarig <a href="https://www.ejustice.just.fgov.be/eli/wet/2002/05/26/2002022559/justel#Art.7">(Art. 7)</a> &#8211; maar enkel voor de toepassing van die wet. Samengevat: elke meerderjarige is 18+, maar niet elke 18+er is ten volle zelfstandig meerderjarig, en wat begrepen mag worden onder meerderjarigheid kan bovendien per toepassingsgebied nog verschillen.</p>



<p>Het temporele aspect voegt daar nog een hele dimensie van complexiteit aan toe. Niet al deze regels golden immers altijd. De meerderjarigheid op 18 jaar is in België pas in werking getreden op 1 mei 1990 (wet van 19 januari 1990, gepubliceerd in het <a href="https://www.ejustice.just.fgov.be/eli/wet/1990/01/19/1990009050/staatsblad">Belgisch staatsblad op 30 januari 1990</a>). Voordien moest men 21 zijn. De hierboven aangehaalde algemene bewindvoering werd dan weer voorafgegaan door verschillende speciale statuten, waaronder &#8220;verlengde minderjarigheid&#8221; en &#8220;voorlopige bewindvoering&#8221;. Deze werden <a href="https://www.ejustice.just.fgov.be/eli/wet/2013/03/17/2013009163/justel#Art.27">afgeschaft in 2014</a>, maar door een <a href="https://www.ejustice.just.fgov.be/eli/wet/2013/03/17/2013009163/justel#Art.228">overgangsbepaling</a> doofden ze pas uit in de praktijk op 1 september 2019. Wijzigingen gebeuren ook door gemeentelijke fusies, staatshervormingen, landen die niet meer bestaan, tijdelijke regels zoals de COVID-steunmaatregelen, &#8230;</p>



<p>Al is oude wetgeving al jaren opgeheven, de effecten ervan kunnen nog lang nazinderen. Zo zien we op <a href="https://fin.belgium.be/nl/particulieren/belastingaangifte/indienen/aangifte/toelichting-voorgaande-jaren">onze belastingaangifte</a> in 2025 nog een aftrekpost voor <em>&#8220;bijzondere bijdragen voor de sociale zekerheid van de jaren 1982 tot 1988&#8221;</em> (vak VIII, code 1388-67). Ook sociale rechten opgebouwd in statuten of regimes die vandaag niet meer bestaan, tellen nog steeds mee. Als een berekening afhangt van een situatie uit het verleden en de destijds geldende wetgeving, kan het dus nodig zijn om in een applicatie naast de huidige regelgeving ook de hele voorgeschiedenis ervan te implementeren.</p>



<p>Met al deze complexiteit in zelfs eenvoudige concepten, kan het niet anders of er duiken onvolledigheden of inconsistenties op. De Raad van State heeft haar handen vol met het <a href="https://www.raadvst-consetat.be/?lang=nl&amp;page=avis_recent_e_adviezen">adviseren van de wetgever</a>, en haalt regelmatig fouten uit ontwerpteksten. Zelfs dan moet het Staatsblad vaak nog errata publiceren. Soms wordt de invulling van inhoudelijke details overgelaten aan de regering, maar laten de Koninklijke of ministeriële besluiten lang op zich wachten, waardoor er een tijd lang een vacuüm ontstaat. Andere keren is men niet exact genoeg in de verwoording: men verduidelijkt bijvoorbeeld niet of men spreekt over kalenderdagen of werkdagen.</p>



<p>Daar waar onvolledigheid, ogenschijnlijke tegenspraak of interpretatie voor discussie zorgt, moet het <a href="https://hofvancassatie.be/nl/Arr%C3%AAts.html">Hof van Cassatie</a> soms één en ander ophelderen. Al is dat geen garantie op minder spraakverwarring in de toekomst, getuige <a href="https://hofvancassatie.be/pdf/arresten-arrets/P.25.0771.N.pdf">dit recente arrest</a> waarin ze aanstippen dat een <em>motorvoertuig</em> in de <a href="https://www.ejustice.just.fgov.be/eli/wet/1968/03/16/1968031601/justel">Wegverkeerswet</a>, niet begrepen mag worden als een <em>motorvoertuig </em>zoals gedefinieerd in de <a href="https://www.ejustice.just.fgov.be/eli/besluit/1975/12/01/1975120109/justel">Wegcode</a>&#8230;</p>



<p>Tot slot zijn er nog gevallen waar de wettekst zelf grammaticaal ambigu is. Zo wordt in het uitvoeringsbesluit van de Brusselse Hoofdstedelijke Regering over werken die vrijgesteld zijn van stedenbouwkundige vergunning, vermeld in <a href="https://www.ejustice.just.fgov.be/eli/besluit/2008/11/13/2008031599/justel#Art.21">art. 21/1, 3° lid</a>: <em>&#8220;[&#8230;] de plaatsing van isolatie [&#8230;] op een mandelige muur of een gevel die niet zichtbaar is vanaf de openbare ruimte [&#8230;]&#8221;</em>. Het is hier onduidelijk of de bijzin (aangevat met <em>die</em>) enkel betrekking heeft op de gevel, of zowel op de gevel als op de gedeelde muur. Ongetwijfeld tot ergernis van <a href="https://homegrade.brussels/nl">homegrade.brussels</a>, dat particulieren hierover moet adviseren, en in <a href="https://homegrade.brussels/wp-content/uploads/2024/04/Homegrade_infofiche_isolatie_buitenzijde-gemene-muur_NL.pdf">haar informatiefiche</a> over het onderwerp moet toegeven: &#8220;Dit artikel is voor verschillende interpretaties vatbaar&#8221;.</p>



<p>Dit alles is bij klassieke applicatie-ontwikkeling al een hele kluif. Wordt het dan eenvoudiger als we onze app bouwen rond een <em>Rules as Code</em>-framework? Niet echt: een <em>RaC</em>-framework reikt misschien een vaste methodiek of werkwijze aan, maar dat neemt de complexiteit niet weg: dezelfde karrevracht informatie moet er nog steeds ingeprogrammeerd worden, en ambiguïteiten blijven voor dezelfde problemen zorgen. Sommige <em>RaC</em>-engines zullen toelaten om <a href="https://medium.com/computational-law-diary/how-rules-as-code-makes-laws-better-115ab62ab6c4">lacunes in de regels te detecteren</a>, maar dan nog moet je beslissen wat je ermee doet. Het project goed afbakenen en grenzen stellen is nog steeds noodzakelijk, om te vermijden overdonderd te worden door een lawine van afhankelijkheden, verwijzingen, en wijzigingshistoriek.</p>



<h2 class="wp-block-heading">De basis: wetsanalyse</h2>



<p>Stel dat we een app willen maken die een bepaalde wetgeving implementeert, en bijvoorbeeld berekent of je recht hebt op een specifieke subsidie en zo ja, hoeveel. </p>



<p>Allereerst is dan een manier nodig om die wet om te zetten in een gestructureerde vorm die de omzetting naar code faciliteert.&nbsp;Via een <em>wetsanalyse</em> trachten we elke regel uit die wet te ontleden in haar onderdelen. Het analyseschema hieronder, afkomstig van het <a href="https://minbzk.github.io/wetsanalyse/">Nederlands ministerie van Binnenlandse Zaken</a>, is generiek toepasbaar en voorziet een opdeling in 15 klassen:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="566" src="/wp-content/uploads/2025/07/juridisch-analyseschema-1024x566.png" alt="" class="wp-image-22781" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema-1024x566.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema-300x166.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema-768x425.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/07/juridisch-analyseschema.png 1346w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Juridisch Analyseschema. (c) Anouschka Ausems, John Bulles, Mariette Lokin, <a href="https://minbzk.github.io/wetsanalyse/"><em>Wetsanalyse met het juridisch analyseschema v1.0.10</em></a>, 29/11/2024, CC-0 Public Domain</figcaption></figure>



<p>De <em>variabelen</em> zijn eigenschappen die voor elk rechtssubject (persoon of entiteit) kunnen verschillen: voor een persoon zijn dat bijvoorbeeld het geslacht, de woonplaats, de naam, de burgerlijke staat. De <em>parameters </em>daarentegen zijn de eigenschappen van de regel die gelijk zijn voor iedereen: een toepassingsgebied, een startdatum, een indexwaarde, &#8230; Zo zal een omzendbrief vaak tot doel hebben om <em>parameters </em>zoals de indexwaarde aan te passen, en zal een wet definiëren welke <em>variabelen </em>onder welke <em>voorwaarden </em>bij de toepassing van een regel in rekening gebracht mogen worden. Het is soms moeilijk te beoordelen of een term nu onder de variabelen of de parameters valt. De makers van deze methode geven bij elke klasse een <a href="https://minbzk.github.io/wetsanalyse/#elementen-uit-het-jas">omschrijving en voorbeelden</a> die verduidelijken hoe ze uitgedrukt kunnen worden in een wettekst. </p>



<p>Nemen we als voorbeeld het recht op het moederschapsverlof, geregeld in hoofdstuk IV, <a href="https://www.ejustice.just.fgov.be/eli/wet/1971/03/16/1971031602/justel#Art.39">art. 39 e.v.</a> van de Arbeidswet. De basisregel daarvan is, bondig samengevat, dat een zwangere vrouw recht heeft op dit  verlof vanaf 6 weken vóór de door de arts geschatte datum van de bevalling (8 weken bij meerlingen), plus 9 weken na de bevalling. Een rudimentaire analyse van deze regel volgens bovenstaand schema kunnen we als volgt aanvangen:</p>



<ul class="wp-block-list">
<li>De vrouw, haar werkgever en haar arts zijn allen <em>rechtssubjecten</em>, met elkaar verbonden door een arbeidsrelatie resp. arts-patiëntrelatie die <em>rechtsbetrekkingen</em> zijn.</li>



<li>Een van de <em>voorwaarden </em>in deze wet is dat de bevallingsdatum is ingeschat door een arts in een geneeskundig attest dat aan de werkgever wordt overgemaakt. Dat attest is hier een <em>rechtsobject</em>.</li>



<li>De <em>variabelen </em>van toepassing op de vrouw zijn onder andere: hoeveel kinderen ze verwacht, haar woonplaats, arbeidsplaats, bevallingsdatum&#8230; dit is voor elke vrouw anders.</li>



<li><em>Parameters </em>van deze wet zijn o.a. de minimum- en maximumtermijnen waarvan sprake: 6 weken, 8 weken, 9 weken, &#8230; die zijn gelijk voor elke vrouw.</li>



<li><em>Tijds</em>&#8211; en <em>plaatsaanduiding </em>zeggen waar en wanneer de regel geldt: op Belgisch grondgebied, en sinds de laatste wetswijzigingen vanaf 1 juli 2004 voor het prenatale en 1 maart 2009 voor het postnatale deel van het moederschapsverlof. De voorgeschiedenis van parameters kan ook worden vastgelegd. V<em>ariabelen </em>kunnen ook tijdsaanduidingen hebben als ze evolueren doorheen de tijd.</li>
</ul>



<p>De eigenlijke regelgeving voorziet o.a. nog in uitzonderingssituaties voor kinderen die te vroeg, ziek, of levenloos geboren worden,&#8230; Dat meenemen in de analyse kan leiden tot de toevoeging van vele extra parameters en variabelen om al deze uitzonderingen te vatten.</p>



<p>De <em>afleidingsregel</em> neemt dan de vorm aan van een berekening, waarbij:</p>



<ul class="wp-block-list">
<li>de input bestaat uit een &#8220;situatie&#8221; die beschreven wordt als een verzameling <em>variabelen</em>,</li>



<li>de <em>voorwaarden </em>toelaten om bepaalde componenten van de berekening te activeren of niet,</li>



<li>de <em>parameters </em>aan componenten van de berekening een gewicht geven,</li>



<li>de output zowel een categorische als numerieke waarde kan zijn,</li>



<li>de berekening kan steunen op andere <em>afleidingsregels </em>met hun eigen parameters, voorwaarden en variabelen.</li>
</ul>



<p>Het staat ons vrij om te kiezen hoe granulair we daarin willen zijn, of hoe diep we willen gaan in onze analyse. We kunnen pietje precies zijn en elk detail van de regelgeving proberen encoderen, maar even goed kunnen we vrede nemen met het maken van enkele veralgemeningen, al was het maar om te vermijden dat de uiteindelijke app meer knopjes heeft dan een vliegtuigcockpit. Zo namen we hierboven de <em>vrouw </em>als startpunt, maar eigenlijk spreekt de wet van <em>werkneemster</em>. Dat impliceert een geldig arbeidscontract. Dat kunnen we integreren met extra variabelen en voorwaarden, en zelfs met extra regels over arbeidscontracten, maar biedt dat ook meerwaarde? Het kan voldoende zijn om het zo te laten en in een disclaimer te zeggen dat de app enkel van toepassing is voor werkneemsters.</p>



<p>Wetgeving correct in code vertalen is dus niet eenvoudig, en vergt de nodige afwegingen. Het is daarbij nuttig om een nauwe samenwerking op te zetten tussen juristen, die de regels helder kunnen uitleggen, en de software-ontwikkelaars die dat in code moeten gieten, met of zonder <em>RaC</em>-framework. Daaruit komen ook nieuwe profielen voort met zowel juridische als technische vaardigheden: we zien stilaan &#8220;legal engineers&#8221; en &#8220;beleidsprogrammeurs&#8221; opduiken.&nbsp;</p>



<h2 class="wp-block-heading">de <em>Rules as Code</em> aanpak</h2>



<p>Het opzet van een <em>Rules as Code</em> benadering is om wetten, regels, policies, &#8230; te hertalen in een gestructureerd formaat dat door een machine begrepen kan worden. Dit kan dan op zijn beurt direct geïntegreerd worden in applicaties of websites. Het idee is dat deze applicaties zo gemakkelijker kunnen aangepast worden aan snel evoluerende regelgeving, en dat ook gebruikers ervan door de directe link met de wetgeving op meer transparantie kunnen rekenen.</p>



<p>Er bestaan geen internationaal aanvaarde standaarden voor wetsanalyse, noch voor encodering van wettekst. Het Nederlandse voorbeeld hierboven is generiek toepasbaar, maar is nog een jong initiatief. Bestaande <em>Rules as Code</em> engines hanteren andere conventies, die sterk van elkaar kunnen verschillen. Ze definiëren meestal hun eigen encodering, in de vorm van een <a href="https://en.wikipedia.org/wiki/Domain-specific_language">Domain-Specific Language</a> of <a href="https://en.wikipedia.org/wiki/Controlled_natural_language">Controlled Natural Language</a>, waarin de regelgeving eerst omgezet moet worden. Pas als die stap is gebeurd, kunnen er verder applicaties op worden gebouwd.</p>



<p>Het gebrek aan gestandaardiseerde formaten, modellen en ontologieën bemoeilijkt de adoptie van <em>Rules as Code</em>. Tussen de verschillende proof-of-concepts in verschillende landen, soms ook binnen hetzelfde land, is de <a href="https://interoperable-europe.ec.europa.eu/collection/eugovtech/document/rules-code-open-approach">interoperabiliteit</a> nog steeds vrij laag. Ieder land of ieder departement dreigt zo een eigen taal, aanpak of methodiek te gaan hanteren, wat leidt tot fragmentatie en dubbel werk. Idealiter zou gestreefd moeten worden naar een gestandaardiseerd vocabularium, en regels gepubliceerd in een uniform formaat, zodat ze hergebruikt en uitgewisseld kunnen worden tussen verschillende systemen en overheidsdiensten.</p>



<p>Onder de bestaande <em>Rules as Code</em> tools van enige grootte vinden we <a href="https://openfisca.org/en/">OpenFisca</a>,&nbsp;<a href="https://publi.codes/">PubliCodes</a>, <a href="https://catala-lang.org/">Català </a>en <a href="https://wendbarewetsuitvoering.pleio.nl/page/view/ba938b8f-0668-4451-a7e6-81de78bbe66a/regelspraak">RegelSpraak</a>. We houden met opzet wat afstand van <a href="https://nl.wikipedia.org/wiki/Business_Process_Model_and_Notation">BPMN</a>, <a href="https://en.wikipedia.org/wiki/CMMN">CMMN</a>, <a href="https://en.wikipedia.org/wiki/Logic_programming">logische programmeertalen</a> en klassieke <a href="https://en.wikipedia.org/wiki/Business_rules_engine">rule engines</a>, die niet toegespitst zijn op juridische teksten. In een volgend artikel verdiepen we onze analyse met een focus op tools die wel specifiek gebouwd zijn voor wetgeving, waarbij we er eentje zullen kiezen om technisch in detail te bekijken.</p>



<h2 class="wp-block-heading">Tussentijdse conclusie</h2>



<p><em>Rules as Code</em> frameworks voorzien in een uniforme, generieke manier om aan wetsanalyse te doen. Voor programmeurs bieden ze een library met fundamentele bouwblokken om regelgeving te implementeren en testscenario&#8217;s op te zetten, ongeacht het domein waarin men actief is. Door de regelgeving te analyseren en om te zetten naar een <em>domain-specific language</em>, kan die door een <em>rule engine</em> of <em>interpreter</em> verwerkt worden. Belangrijk te noteren is dat deze omzetting vooralsnog minutieus analytisch mensenwerk vergt, omdat er interpretatie bij komt kijken. (Deze stap uitbesteden aan Large Language Models leidt niet tot onverdeeld positieve resultaten, maar daarover meer in een volgend artikel). </p>



<p>De mate van detail in veel regelgeving, maakt een analyse en omzetting naar een <em>Rules as Code</em>-formaat zelden een sinecure. Wil men tot een compleet en sluitend systeem komen dat rekening houdt met vele afhankelijkheden en uitzonderingssituaties, dan wordt men geconfronteerd met overdonderende hoeveelheden parameters en variabelen. Als berekeningen retroactief moeten kunnen zijn en ook de voorgeschiedenis van de wetgeving een rol speelt, komt daar nog een extra dimensie bij. De interne verwevenheden tussen alle regels maken dat men, om een <em>Rules as Code</em>-app van de grond te krijgen, al snel aankijkt tegen een grote initiële inspanning.</p>



<p>Eén van de argumenten voor <em>Rules as Code </em>is dat men bepaalde soorten apps generiek zou kunnen ontwikkelen voor eender welk domein: eligibility checkers, compliance tools, tax/benefit calculators, webformulieren, rekensimulatoren, dossierbeheer,&#8230; Zolang de onderliggende wetgeving maar duidelijk en concreet genoeg is, zou dan eenzelfde <em>template</em>-app zonder veel aanpassingen over de grenzen van overheidsdepartementen heen benut kunnen worden. Dit lovenswaardige idee stuit in de praktijk echter op moeilijkheden door de wetgeving zelf, die zichzelf haast heruitvindt in elk domein: zo kan je moeilijk gedeelde componenten ontwikkelen voor <em>meerderjarigheid</em> of <em>motorvoertuigen</em> als die termen verschillende definities hebben in verschillende wetten.</p>



<p>Een andere belofte van <em>Rules as Code</em> is dat apps ontwikkeld op basis van zulke frameworks een nauwe koppeling behouden met de wetgeving, die ook zichtbaar gemaakt kan worden. Deze koppeling moet transparantere garanties bieden dat een app wel degelijk conformeert aan de wetgeving, en dat dat ook zo blijft als die wetgeving morgen wijzigt. Daarnaast is er potentieel om te helpen bij het opstellen van regels. Een iteratief proces waarbij een <em>RaC</em>-versie van de regels wordt ontwikkeld in parallel met de ontwerpversie van de tekst, kan het mogelijk maken om vroegtijdig lacunes op te sporen en te verhelpen, of kan zelfs <em>ex ante</em> beleidsanalyse faciliteren door de impact van hypothetische wetswijzigingen eerst te simuleren (zie daarvoor ook het <a href="https://www.oecd.org/en/publications/cracking-the-code_3afe6ba5-en.html">OESO-rapport</a>). Maar ook hier komt men er niet onderuit dat de uitwerking daarvan, ook mét <em>RaC</em>-framework, dezelfde grote investeringen vergt.</p>



<p>Wie vreest dat computers het rechtssysteem binnenkort gaan overnemen kunnen we dus geruststellen, daar zijn we nog heel ver van weg. We herinneren ook nog even aan de GDPR, die in <a href="https://eur-lex.europa.eu/legal-content/NL/TXT/HTML/?uri=CELEX:32016R0679#art_22">art.22</a> duidelijke grenzen stelt aan automatische besluitvorming. Daarnaast heeft een gecodeerde versie van een wet vooralsnog geen juridische status of rechtsgeldigheid &#8211; alleen de oorspronkelijke geschreven wettekst is bindend. Met andere woorden, zelfs al zetten we regelgeving om in code, is behoud van menselijk overzicht nog steeds een must, en heeft het Staatsblad nog steeds het laatste woord.</p>



<p>Wordt vervolgd!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Souveraineté numérique</title>
		<link>https://www.smalsresearch.be/souverainete-numerique/</link>
					<comments>https://www.smalsresearch.be/souverainete-numerique/#comments</comments>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 18 Apr 2025 12:00:27 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[G-Cloud]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[open standards]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22369</guid>

					<description><![CDATA[Nous assistons une fois de plus à l’émergence de questions fondamentales d’indépendance, de sécurité et d’autonomie stratégique : la souveraineté numérique est tendance.]]></description>
										<content:encoded><![CDATA[
<p><em><em>Dit artikel is ook beschikbaar in het</em> <a href="/digitale-soevereiniteit/">Nederlands</a>.</em></p>



<p>Les services numériques doivent non seulement être rentables, mais également robustes&nbsp;: ils doivent continuer à fonctionner si certains fournisseurs ou éléments de base font défaut pour une raison quelconque. Il ne s’agit pas uniquement d’une question purement technique, d’un enfermement propriétaire (<a href="https://fr.wikipedia.org/wiki/Enfermement_propri%C3%A9taire">vendor lock-in</a>) ou d’<a href="https://www.ibm.com/think/topics/multicloud">architecture multicloud</a>. Nous assistons une fois de plus à <a href="https://foreignpolicy.com/2025/03/31/europe-digital-sovereignty-colony-trump-asml-ai-eurostack/">l’émergence de questions fondamentales </a>d’indépendance, de sécurité et d’autonomie stratégique&nbsp;: la <em>souveraineté numérique</em> est tendance.</p>



<p>On comprend aisément pourquoi&nbsp;: avec un revirement politique d’une ampleur sans précédent, la réputation des États-Unis en tant que partenaire commercial fiable s’est volatilisée en un temps record. Du jour au lendemain, un <a href="https://www.reuters.com/world/us-aerospace-firm-maxar-disables-satellite-photos-ukraine-2025-03-07/">service peut être interrompu</a> ou des <a href="https://www.reuters.com/world/us/trump-tariffs-updates-world-braces-us-announce-duties-2025-04-01/">droits de douane peuvent être introduits</a> sans raison valable. Quiconque développe ou gère des infrastructures IT critiques en tremble rien qu’à l’idée. Et l’autonomie vaut soudain à nouveau son pesant d’or.</p>



<h2 class="wp-block-heading">Piliers stratégiques</h2>



<p>Le cœur de la souveraineté numérique réside dans la capacité à choisir, déployer et gérer des solutions technologiques sans dépendances externes étendues. Ces dépendances sont souvent plus profondes que nous ne le pensons, comme l’a démontré une expérience intéressante du<a href="https://www.youtube.com/watch?v=Rxuf1598bjc"> journaliste de Gizmodo, Kashmir Hill</a>, il y a quelques années. La dépendance technologique représente toujours un risque. Afin de le minimiser, nous pouvons entre autres&nbsp;:</p>



<ul class="wp-block-list">
<li>Investir dans le développement local et <em>open source</em> des technologies</li>



<li>Construire nous-même des infrastructures robustes et décentralisées</li>



<li>Développer nos propres compétences et capacités technologiques</li>



<li>Inclure des conditions d’interopérabilité, de migration de données, de flexibilité, d’interruption, etc. dans des clauses contractuelles et les marchés publics.</li>



<li>&#8230;</li>
</ul>



<p>En matière de développement logiciel pratique également, les choix qui favorisent l’agilité technologique présentent un avantage&nbsp;:</p>



<ul class="wp-block-list">
<li>Choisir des normes ouvertes et des API robustes et standardisées</li>



<li>Développer des solutions non seulement modulaires et évolutives, mais également agnostiques vis-à-vis du cloud</li>



<li>Implémenter des middleware capables de relier différentes technologies</li>



<li>Prêter attention à la portabilité, à la compatibilité multiplateforme et à la compatibilité entre navigateurs</li>



<li>…</li>
</ul>



<p><a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC138657">La souveraineté sur les données</a> est également très importante. Une souveraineté numérique exige de conserver un contrôle maximal sur la collecte, le stockage, le traitement et la protection des données. Cela peut se faire en organisant le stockage et le traitement des données localement, de préférence en appliquant des mécanismes solides de <a href="https://fr.wikipedia.org/wiki/Gouvernance_des_donn%C3%A9es">gouvernance des données</a>, ou en les confiant à un tiers qui offre les garanties nécessaires et opère dans le cadre d’une <a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en">législation compatible</a>.</p>



<p>La Belgique se débrouille plutôt bien en matière d’autonomie infrastructurelle, avec le <a href="https://gcloud.belgium.be">cloud gouvernemental G-Cloud</a> et le réseau <a href="https://www.belnet.be/">Belnet</a>, entre autres.</p>



<h2 class="wp-block-heading">Le rôle de l’<em>open source</em></h2>



<p>Les technologies <em>open source</em>, en tant que <em>vecteurs</em> d’indépendance technologique, sont des éléments fondamentaux de la souveraineté numérique. Elles offrent une totale transparence du code, permettent la modification ou le propre développement, et diminuent la dépendance vis-à-vis des géants technologiques étrangers.</p>



<p>Cependant, cela a également un coût. L’utilisation de logiciels <em>open source</em> et de normes ouvertes implique de fournir soi-même l’ensemble du support, de la formation, des mises-à-jour, de la compatibilité, du débogage, etc. En échange de l’autonomie, il faut inclure un éventail de tâches connexes. Cela implique notamment un investissement dans la gestion active, ainsi que la maintenance et le développement des connaissances. Les acteurs commerciaux proposant des solutions propriétaires s’en chargent généralement.</p>



<p>Devenir totalement autonome est donc généralement impossible. Il existe un cas d’étude bien connu, celui de la ville de Munich, qui a ambitieusement <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/document/munichs-long-history-open-source-public-administration">basculé en 2006 vers un environnement Linux développé en interne</a>, mais qui, en raison de problèmes persistants de compatibilité et de l’augmentation des coûts de gestion qui en découle, a mis fin au programme en 2017 pour revenir à un environnement Microsoft standardisé.</p>



<h2 class="wp-block-heading">Chez nos voisins</h2>



<p>L’Allemagne est une fervente partisane de la souveraineté numérique depuis longtemps. L’<em><a href="https://osb-alliance.de/ueber-uns/was-ist-die-osb-alliance">Open Source Business Alliance</a></em> allemande utilise même le terme dans son slogan. L’expérience munichoise a donné naissance à l’actuel <em><a href="https://opensource.muenchen.de/">Open Source Programme Office</a></em> de la ville. Le niveau fédéral allemand encourage également l’indépendance technique, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Des projets propres tels que <em><a href="https://scs.community/">Sovereign Cloud Stack</a></em> (actuellement <a href="https://www.sovereigncloudstack.org/">en transformation</a> après la fin du financement),</li>



<li>Le <em><a href="https://www.sovereign.tech/">Sovereign Tech Fund</a></em>, qui fournit des fonds pour maintenir les composants <em>open source</em> essentiels,</li>



<li>Le <em><a href="https://zendis.de/">Zentrum Digitale Souveränität</a></em> (ZenDis), qui aide les gouvernements à réduire leurs dépendances technologiques.</li>
</ul>



<p>Ce dernier investit également avec succès dans deux projets propres&nbsp;:</p>



<ul class="wp-block-list">
<li>La plateforme <a href="https://opencode.de/">OpenCode</a>, où les services publics peuvent publier et partager leur code avec d’autres,</li>



<li>L’environnement de travail administratif <a href="https://opendesk.eu/en/">OpenDesk</a>, qui inclut également des options typiques pour les entreprises telles que l’authentification unique et les intégrations entre les réunions, les «&nbsp;chats&nbsp;», le calendrier et les courriers électroniques.<br></li>
</ul>



<p>La France n’est pas en reste non plus. Plusieurs initiatives en faveur de la souveraineté numérique sont menées par la Direction interministérielle du Numérique (<a href="https://www.numerique.gouv.fr/dinum/">DINUM</a>). Ils comptent également leur propre dépôt sous la forme de <a href="https://code.gouv.fr/fr/">code.gouv.fr</a>. En outre, ils développent de manière proactive de nouvelles applications dans leur propre <a href="https://beta.gouv.fr/">incubateur</a>. Cela a donné naissance à des projets tels que <a href="https://lasuite.numerique.gouv.fr">La Suite Numérique</a>, une suite <em>enterprise level</em> de bureautique qui offre des fonctionnalités telles que le chat vidéo, les webinaires et le transfert de fichiers, et qui est en cours d’extension pour inclure des traitements de texte et des tableurs. La France s’est également engagée dans une <a href="https://www.economie.gouv.fr/securite-performance-souverainete-strategie-cloud">stratégie de cloud computing la plus indépendante possible</a> et, tout aussi important, elle s’efforce de motiver et de former ses fonctionnaires par le biais de la <a href="https://code.gouv.fr/fr/bluehats/">communauté des Blue Hats</a>. Du côté des entreprises, l’union des entreprises du logiciel libre et du numérique ouvert (<a href="https://cnll.fr/">CNLL</a>) s’est engagé en faveur de la souveraineté numérique.</p>



<p>Ce qui est frappant à la fois avec l’<a href="https://opendesk.eu/">OpenDesk</a> allemand et <a href="https://lasuite.numerique.gouv.fr">La Suite Numérique</a> française, c’est qu’ils sont tous deux également disponibles en anglais. Même dans le contexte gouvernemental, on prend de plus en plus conscience que les initiatives <em>open source</em> ont de meilleures chances de succès si l’on investit de manière proactive dans l’internationalisation. Plus prometteur encore, <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a> et <a href="https://zendis.de/">ZenDis</a> ont commencé une collaboration concrète avec une <a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6403-note-worthy-collaboration-co-developing-a-note-taking-application/">application de prise de notes développée conjointement</a>. Cette dernière a été présentée lors du dernier <a href="https://fosdem.org/">FOSDEM</a>, la grand-messe annuelle des développeurs <em>open source</em> à Bruxelles, où les <a href="https://fosdem.org/2025/schedule/track/government-collaboration/">collaborations gouvernementales étaient à l’honneur</a>.</p>



<p>Le tandem franco-allemand est un signe prometteur de la volonté de l’Europe de s’unir pour promouvoir la souveraineté numérique. Nous savons déjà que les <a href="https://www.numerique.gouv.fr/espace-presse/premiers-succes-cooperation-franco-allemande-administration-numerique-souveraine-collaboration-trilaterale-avec-royaume-des-pays-bas-signature-nouvelle-declaration-dintention-commune/">Pays-Bas souhaitent se joindre</a> à cette collaboration. En effet, le <a href="https://ibestuur.nl/artikel/actie-nodig-om-de-digitale-soevereiniteit-van-nederland-en-europa-te-versterken/">débat social</a> y est également bien vivant, même à la Seconde Chambre, avec des discussions sur les <a href="https://ecp.nl/argumentenkaart-niet-europese-clouddiensten-overhandigd-aan-tweede-kamer/">services cloud</a> ou le <a href="https://tweakers.net/nieuws/233008/tweede-kamer-wil-unaniem-dat-sidn-nl-domeininfrastructuur-niet-naar-aws-overzet.html">DNS</a>. L’Organisation néerlandaise pour la recherche scientifique appliquée (<a href="https://www.tno.nl/en/importance-digital-sovereignty/">TNO</a>) a publié un <a href="https://publications.tno.nl/publication/34642268/o5remY/TNO-2024-R10300.pdf">long rapport sur la souveraineté numérique</a>, les <a href="https://www.uu.nl/sites/default/files/Moerel%2C%20Timmers%20%282.0%29%20-%20Preadvies%20Staatsrechtconferentie%202020.pdf">universités en font un sujet de discussion</a> et le <a href="https://dutchcloudcommunity.nl/digitale-soevereiniteit/">monde des affaires</a> y prête également attention. La souveraineté numérique est à l’ordre du jour à <a href="https://www.binnenlandsbestuur.nl/digitaal/experts-slaan-alarm-over-soevereiniteit">tous les niveaux de gouvernement</a>.</p>



<h2 class="wp-block-heading">Le rôle de l’Europe</h2>



<p>L’Union européenne a un intérêt stratégique évident dans la souveraineté (numérique). Les éléments clés à cet égard sont le récent <a href="https://digital-markets-act.ec.europa.eu/index_en">Digital Markets Act (DMA)</a> et le <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA)</a>. Ces deux cadres législatifs visent à limiter le pouvoir des géants technologiques étrangers et à rendre le «&nbsp;terrain de jeu&nbsp;» plus équitable et transparent pour les entreprises européennes. L’UE souhaite ainsi renforcer son autonomie stratégique en établissant des règles claires en matière de gestion des données et des plateformes, rendant les États membres européens moins vulnérables aux dépendances extérieures. Le <a href="https://digital-strategy.ec.europa.eu/en/policies/cybersecurity-act">Cybersecurity Act</a> et la <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/">directive NIS2</a> devraient garantir que la sécurité et la fiabilité ne soient pas compromises.</p>



<p class="has-text-align-left">L’UE entreprend également de <a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI(2020)651992_EN.pdf">nombreuses initiatives pertinentes</a>, mais toutes ne décollent pas tout aussi facilement. La fragmentation européenne est une vieille plaie. Les petits projets restent souvent petits et, une fois le financement terminé, ils se transforment en <em><a href="https://fr.wikipedia.org/wiki/Logiciel_abandonn%C3%A9">abandonware</a></em>. Par exemple, il est impossible de savoir si la nouvelle <em><a href="https://europeanopensource.academy/">European Open Source Academy</a></em> survivra à la fin de son cycle de financement en 2027. D’autre part, les consortiums à grande échelle ont de nombreux problèmes de coordination et de contrôle. Le projet <a href="https://gaia-x.eu/">GAIA-X</a> a ainsi acquis la réputation d’être <a href="https://blog.okfn.org/2025/02/11/open-source-policy-and-europes-digital-sovereignty-key-takeaways-from-the-eu-open-source-policy-summit/">plus une histoire de mémos que de démos</a>, si bien que les nouveaux projets tels qu’<a href="https://openeurollm.eu/">OpenEuroLLM</a> sont également accueillis avec un certain scepticisme. Le déploiement des <em><a href="https://digital-strategy.ec.europa.eu/en/policies/data-spaces">European Data Spaces</a></em> dans divers domaines devrait favoriser la souveraineté sur les données. Cela <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/european-health-data-space-regulation-ehds_en">deviendra obligatoire</a> pour la santé (EHDS), qui pourrait insuffler un nouvel élan. Cela ne suffit cependant pas à apaiser les inquiétudes&nbsp;: le <a href="https://www.euro-stack.info/">rapport complet EuroStack</a> de la <em>Bertelsmann Stiftung</em> présente même à l’UE une vision plus ambitieuse sur un plateau d’argent.</p>



<p>Sous l’égide de l’<a href="https://interoperable-europe.ec.europa.eu/">Europe Interopérable</a>, on retrouve l’<em>Open Source Observatory and Repository</em> (<a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">OSOR</a>), en plus de <em><a href="https://interoperable-europe.ec.europa.eu/collection/public-sector-tech-watch">Public Sector Techwatch</a></em> et <em><a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/">GovTech Connect</a></em>. Ils surveillent l’utilisation de l’<em>open source</em> dans les administrations gouvernementales européennes depuis plus de 15 ans maintenant, et encouragent les partenariats et la réutilisation. L’<em><a href="https://interoperable-europe.ec.europa.eu/eu-oss-catalogue/solutions">Open Source Solutions Catalogue</a></em> récemment lancé devrait permettre aux pays de réutiliser plus facilement les solutions des uns et des autres. Ils publient également des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/reports-and-guidelines">rapports</a>, des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/case-studies">études de cas</a>, des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories">catalogues nationaux</a> (dans lesquels nous trouvons <a href="https://www.ict-reuse.be/">ict-reuse.be</a>) et une <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/osor-newsletters">lettre d’information</a>. Les gouvernements qui souhaitent mettre en place leur propre <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/ospos-oss-governance"><em>Open Source Program Office</em> (OSPO)</a> afin de contribuer activement aux projets <em>open source</em> tels que <a href="https://interoperable-europe.ec.europa.eu/collection/ec-ospo">celui de l’UE</a>, y trouvent le soutien nécessaire. Les <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/dutch-digitalisation-minister-announces-ospo-creation">Pays-Bas</a> sont déjà convaincus. Si les autorités belges veulent contribuer visiblement à la souveraineté numérique, voilà une excellente occasion.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La souveraineté numérique est plus qu’un choix technique. C’est une stratégie continue pour retrouver un pouvoir d’agir dans un monde numérique hautement interconnecté où les éléments fondamentaux peuvent soudainement changer. Nous ne voulons pas nous contenter de consommer la technologie, mais aussi la façonner, la comprendre et la contrôler activement. Cela nous permettrait de réduire les dépendances externes et les risques qui en découlent. La pensée et la coopération européennes offrent des possibilités de synergies.</p>



<p><a id="_msocom_1"></a>L’autonomie technologique nécessite un écosystème technologique sain. Une attention constante au capital humain et au développement des connaissances est indispensable. Pour y parvenir de manière durable, les initiatives de soutien doivent bénéficier des ressources nécessaires&nbsp;:</p>



<ul class="wp-block-list">
<li>Développer de manière proactive des alternatives technologiques, qui anticipent la demande,</li>



<li>Participer à l’échange de connaissances, à des évènements et réseauter, avec des pairs, des institutions du savoir, des pays voisins, avec l’UE, etc.</li>



<li>Investir ou participer activement aux solutions <em>open source</em> existantes que l’on réutilise,</li>



<li>Construire des communautés autour de projets propres,</li>



<li>Investir dans un design attrayant et l’intuitivité des solutions propres,</li>



<li>Rendre sa propre solution disponible en dehors de ses murs&nbsp;: publier en <em>open source</em>, <a href="https://yml.publiccode.tools">intégrer dans des catalogues</a>, ajouter une documentation et une traduction anglaise, etc.</li>



<li>Travailler sur la notoriété de la marque&nbsp;: sites web, promotion, marketing, salons professionnels, médias (sociaux), etc.</li>



<li>&#8230;</li>
</ul>



<p>Les personnes intéressées par ce thème peuvent suivre les organisations et les initiatives mentionnées dans cet article sur les médias sociaux ou à travers leurs lettres d’information. Pour une analyse approfondie, le <a href="https://www.euro-stack.info/">rapport EuroStack</a> mentionné ci-dessus est intéressant. Si vous cherchez des alternatives pour les dépendances dans vos propres projets, <a href="https://european-alternatives.eu/">european-alternatives.eu</a>, <a href="https://euro-stack.com/">euro-stack.com</a> ou <a href="https://alternativeto.net/">alternativeto.net</a> sont de bons points de départ. Enfin, la souveraineté numérique est un effort d’équipe, n’hésitez donc surtout pas à partager d’autres sources, projets ou liens intéressants dans les commentaires ci-dessous&nbsp;!</p>



<p>______________________</p>



<p><em>Ce post est une contribution de Joachim Ganseman, consultant IT chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>


]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/souverainete-numerique/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Digitale Soevereiniteit</title>
		<link>https://www.smalsresearch.be/digitale-soevereiniteit/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 04 Apr 2025 14:39:21 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[G-Cloud]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[open standards]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22224</guid>

					<description><![CDATA[We zien vandaag fundamentele kwesties rond onafhankelijkheid, veiligheid en strategische autonomie opnieuw ter sprake komen: Digitale Soevereiniteit is hot.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/souverainete-numerique/">en français</a>.</em></p>



<p>Digitale dienstverlening moet niet alleen kostenefficiënt zijn, maar ook robuust: het moet blijven werken als bepaalde toeleveranciers of bouwblokken het laten afweten, om welke reden dan ook. Dat is niet alleen een louter technisch vraagstuk van <a href="https://nl.wikipedia.org/wiki/Vendor_lock-in">vendor lock-in</a> of <a href="https://www.ibm.com/think/topics/multicloud">multicloud architectuur</a>. We zien fundamentele kwesties rond onafhankelijkheid, veiligheid en strategische autonomie <a href="https://foreignpolicy.com/2025/03/31/europe-digital-sovereignty-colony-trump-asml-ai-eurostack/">opnieuw ter sprake komen</a>: <em>Digitale Soevereiniteit</em> is hot.</p>



<p>De aanleiding is niet ver te zoeken: met een beleidsomslag van jewelste is de reputatie van de VS als betrouwbare handelspartner in recordtempo verdampt. Zonder aanleiding kan van de ene dag op de andere een <a href="https://www.reuters.com/world/us-aerospace-firm-maxar-disables-satellite-photos-ukraine-2025-03-07/">dienstverlening stopgezet</a>, of een <a href="https://www.reuters.com/world/us/trump-tariffs-updates-world-braces-us-announce-duties-2025-04-01/">handelstarief ingevoerd</a> worden. Wie kritische infrastructuur en IT ontwikkelt of beheert, trekt lijkbleek weg van het idee alleen al. En zo is zelfredzaamheid plots weer goud waard.</p>



<h2 class="wp-block-heading">Strategische pijlers</h2>



<p>De kern van digitale soevereiniteit ligt in het kunnen kiezen, implementeren en beheren van technologische oplossingen zonder verregaande externe afhankelijkheden. Die afhankelijkheden zitten dieper dan we vaak denken, zoals enkele jaren geleden nog gedemonstreerd in een interessant <a href="https://www.youtube.com/watch?v=Rxuf1598bjc">experiment van Gizmodo journaliste Kashmir Hill</a>. Technologische afhankelijkheid vormt altijd een risico. Om dat te minimaliseren kunnen we onder andere:</p>



<ul class="wp-block-list">
<li>Investeren in lokale en open-source technologie-ontwikkeling</li>



<li>Zelf robuuste, gedecentraliseerde infrastructuren opbouwen</li>



<li>Eigen technologische vaardigheden en capaciteiten uitbouwen</li>



<li>Voorwaarden qua interoperabiliteit, data-migratie, flexibiliteit, stopzetting, … opnemen in contractuele clausules en openbare aanbestedingen</li>



<li>&#8230;</li>
</ul>



<p>Ook bij praktische software-ontwikkeling hebben keuzes die technologische wendbaarheid bevorderen een streepje voor:</p>



<ul class="wp-block-list">
<li>Verkies open standaarden en robuuste, gestandaardiseerde APIs</li>



<li>Ontwikkel niet alleen modulair en schaalbaar maar ook cloud-agnostisch</li>



<li>Implementeer eventueel middleware die verschillende technologieën kan overbruggen</li>



<li>Besteed aandacht aan portabiliteit, cross-platform en cross-browser compatibiliteit</li>



<li>…</li>
</ul>



<p>Daarnaast is ook <a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC138657">data-autonomie</a> van groot belang. Zo vereist digitale soevereiniteit dat men maximale controle over data-verzameling, -opslag, -verwerking en -bescherming behoudt. Dat kan door de data-opslag en -verwerking lokaal te organiseren, liefst met toepassing van degelijke <a href="https://en.wikipedia.org/wiki/Data_governance">data governance</a> mechanismes, of door ze bij een derde partij onder te brengen die de nodige garanties biedt en tenminste onder een <a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en">compatibele wetgeving</a> opereert.</p>



<p>Het mag gerust gezegd worden dat België het op het vlak van infrastructurele autonomie, met onder andere de <a href="https://gcloud.belgium.be">overheidscloud Gcloud</a> en <a href="https://www.belnet.be/">Belnet</a>, best goed doet.</p>



<h2 class="wp-block-heading">De rol van open-source</h2>



<p>Open-source technologieën zijn, als <em>enablers</em> van technologische onafhankelijkheid, fundamentele bouwstenen voor digitale soevereiniteit. Ze bieden volledige transparantie van code, geven de mogelijkheid tot aanpassing of eigen ontwikkeling, en ze verminderen de afhankelijkheid van buitenlandse technologiereuzen.</p>



<p>Dat heeft echter ook een kostenplaatje. Wie in eigen beheer open-source software en open standaarden wil aanwenden, moet ook zelf voorzien in alle ondersteuning, opleiding, upgrades, compatibiliteit, eventueel debuggen, etc. In ruil voor autonomie moet je een heel takenpakket mee opnemen in de marge. Dat impliceert dat je moet willen investeren in actief beheer, onderhoud en kennisopbouw. Commerciële spelers met bedrijfseigen oplossingen ontzorgen je daar meestal van.</p>



<p>“All the way” zelfvoorzienend worden is daarom meestal onhoudbaar. Een bekende case studie is die van de stad München, die vanaf 2006 ambitieus <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/document/munichs-long-history-open-source-public-administration">overschakelde naar een zelf ontwikkelde Linux-omgeving</a>, maar omwille van aanslepende compatibiliteitsproblemen en de daarmee gepaard gaande oplopende beheerskosten, in 2017 de stekker uit het programma trok en opnieuw voor een gestandaardiseerde Microsoft-omgeving koos.</p>



<h2 class="wp-block-heading">In de buurlanden</h2>



<p>Duitsland draagt het idee van digitale soevereiniteit dus al langer een warm hart toe. De Duitse <a href="https://osb-alliance.de/ueber-uns/was-ist-die-osb-alliance">Open Source Business Alliance</a> zet de term zelfs in hun slogan. De ervaring van München evolueerde naar het huidige <a href="https://opensource.muenchen.de/">Open Source Programme Office</a> van de stad. Het Duitse federale niveau moedigt technische onafhankelijkheid ook aan, met onder andere:</p>



<ul class="wp-block-list">
<li>Eigen projecten zoals <a href="https://scs.community/">Sovereign Cloud Stack</a> (lijkt momenteel <a href="https://www.sovereigncloudstack.org/">in transformatie</a> na afloop financiering),</li>



<li>Het <a href="https://www.sovereign.tech/">Sovereign Tech Fund</a>, dat financiering voorziet om kritische open-source componenten te onderhouden,</li>



<li>Het <a href="https://zendis.de/">Zentrum Digitale Souveränität</a> (ZenDis), dat overheden ondersteunt bij de afbouw van technologische afhankelijkheden.</li>
</ul>



<p>Die laatste investeert ook met succes in 2 eigen projecten:</p>



<ul class="wp-block-list">
<li>Het platform <a href="https://opencode.de/">OpenCode</a> waar overheidsdiensten hun code kunnen publiceren en delen met anderen,</li>



<li>De administratieve werkomgeving <a href="https://opendesk.eu/en/">OpenDesk</a> , die ook typische enterprise-opties omvat zoals Single Sign-on en integraties tussen meetings, chats, kalender, en email.</li>
</ul>



<p>Frankrijk zit evenmin stil. Verschillende initiatieven voor digitale soevereiniteit worden bij onze zuiderburen getrokken door <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a>, de centrale interministeriële dienst voor digitalisering. Met <a href="https://code.gouv.fr/fr/">code.gouv.fr</a> hebben zij ook hun eigen code repository. Daarnaast ontwikkelen ze zelf proactief nieuwe toepassingen in een eigen <a href="https://beta.gouv.fr/">incubator</a>. Dat resulteerde onder andere in <a href="https://lasuite.numerique.gouv.fr/en">La Suite Numérique</a>, een <em>enterprise-level</em> kantoorsuite die functionaliteiten zoals videochat, webinars, en file transfer aanbiedt, en nu wordt uitgebreid met tekstverwerkers en spreadsheets. Frankrijk zet eveneens in op een <a href="https://www.economie.gouv.fr/securite-performance-souverainete-strategie-cloud">maximaal onafhankelijke cloud-strategie</a>, en minstens zo belangrijk, werken ze aan motivatie en kennis bij hun overheidsmedewerkers via de <a href="https://code.gouv.fr/fr/bluehats/">Blue Hats community</a>. Vanuit het bedrijfsleven zet <a href="https://cnll.fr/">CNLL</a> zich in voor digitale soevereiniteit.</p>



<p>Opvallend aan zowel het Duitse <a href="https://opendesk.eu/">OpenDesk</a> als het Franse <a href="https://lasuite.numerique.gouv.fr/en">La Suite Numérique</a>, is dat beide ook beschikbaar zijn in het Engels. Zelfs in overheidscontext is dus ondertussen het bewustzijn gegroeid dat open-source initiatieven betere slaagkansen hebben als men proactief investeert in internationalisering. Nog hoopgevender is dat <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a> en <a href="https://zendis.de/">ZenDis</a> concreet zijn beginnen samenwerken. Op het laatste <a href="https://fosdem.org/">FOSDEM</a> evenement, de jaarlijks weerkerende hoogmis voor open-source developers in Brussel, stonden <a href="https://fosdem.org/2025/schedule/track/government-collaboration/">overheidssamenwerkingen in de kijker</a> en presenteerden ze een <a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6403-note-worthy-collaboration-co-developing-a-note-taking-application/">tesamen ontwikkelde notitie-app</a>.</p>



<p>Deze Duits-Franse tandem is een veelbelovend teken dat, als het gaat over het bevorderen van digitale soevereiniteit, de wil alleszins bestaat om Europese krachten wat te bundelen. Er is alvast bekend dat <a href="https://www.numerique.gouv.fr/espace-presse/les-premiers-succ%C3%A8s-de-la-coop%C3%A9ration-franco-allemande-en-faveur-dune-administration-num%C3%A9rique-souveraine-ouvrent-la-voie-%C3%A0-une-collaboration-trilat%C3%A9rale-avec-le-royaume-des-pays-bas-%C3%A0-travers-la-signature-dune-nouvelle-d%C3%A9claration-dintention-commune/">Nederland wil aansluiten</a> bij hun samenwerking. Daar leeft de <a href="https://ibestuur.nl/artikel/actie-nodig-om-de-digitale-soevereiniteit-van-nederland-en-europa-te-versterken/">maatschappelijke discussie</a> immers ook, tot in de Tweede Kamer, met debatten over <a href="https://ecp.nl/argumentenkaart-niet-europese-clouddiensten-overhandigd-aan-tweede-kamer/">clouddiensten</a> of <a href="https://tweakers.net/nieuws/233008/tweede-kamer-wil-unaniem-dat-sidn-nl-domeininfrastructuur-niet-naar-aws-overzet.html">DNS</a>. Het onderzoeksinstituut <a href="https://www.tno.nl/nl/digitale-soevereiniteit/">TNO</a> publiceerde er een <a href="https://publications.tno.nl/publication/34642268/o5remY/TNO-2024-R10300.pdf">lijvig rapport over digitale soevereiniteit</a>, de <a href="https://www.uu.nl/sites/default/files/Moerel%2C%20Timmers%20%282.0%29%20-%20Preadvies%20Staatsrechtconferentie%202020.pdf">universiteiten agenderen het</a>, en ook het <a href="https://dutchcloudcommunity.nl/digitale-soevereiniteit/">bedrijfsleven</a> besteedt er aandacht aan. Op <a href="https://www.binnenlandsbestuur.nl/digitaal/experts-slaan-alarm-over-soevereiniteit">alle bestuursniveaus</a> ligt digitale soevereiniteit er op tafel.</p>



<h2 class="wp-block-heading">De rol van Europa</h2>



<p>De EU heeft een evident strategisch belang bij (digitale) soevereiniteit. Centrale elementen hierin zijn de recente <a href="https://digital-markets-act.ec.europa.eu/index_en">Digital Markets Act (DMA)</a> en <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA)</a>. Beide wetgevende kaders hebben tot doel om de macht van buitenlandse technologiereuzen te beperken en het speelveld voor Europese bedrijven gelijkwaardiger en transparanter te maken. Hiermee wil Europa haar strategische autonomie versterken door duidelijke regels te stellen rondom data- en platformbeheer, waardoor Europese lidstaten minder kwetsbaar worden voor externe afhankelijkheden. De <a href="https://digital-strategy.ec.europa.eu/en/policies/cybersecurity-act">Cybersecurity Act</a> en de <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/">NIS2-richtlijn</a> moeten erover waken dat daarbij niet aan veiligheid en betrouwbaarheid wordt ingeboet.</p>



<p class="has-text-align-left">Ze onderneemt daarnaast <a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI(2020)651992_EN.pdf">tal van relevante initiatieven</a>, maar die komen niet allemaal even vlot van de grond. De Europese versnippering is een oud zeer. Kleine projecten blijven vaak klein, en eens de financiering afloopt, verworden ze tot <a href="https://en.wikipedia.org/wiki/Abandonware">abandonware</a>. Zo is het onvoorspelbaar of het net gestarte <a href="https://europeanopensource.academy/">European Open Source Academy</a> het einde van haar financieringsronde in 2027 zal overleven. Grootschalige consortia kennen dan weer heel wat problemen met coördinatie en sturing. Het <a href="https://gaia-x.eu/">GAIA-X</a> project heeft zo enigszins de reputatie gekregen als een verhaal van <a href="https://blog.okfn.org/2025/02/11/open-source-policy-and-europes-digital-sovereignty-key-takeaways-from-the-eu-open-source-policy-summit/">meer memo&#8217;s dan demo&#8217;s</a>, wat maakt dat ook nieuwe projecten zoals <a href="https://openeurollm.eu/">OpenEuroLLM</a> met enige scepsis onthaald worden. De uitrol van de <a href="https://digital-strategy.ec.europa.eu/en/policies/data-spaces">Europese Data Spaces</a> in verschillende domeinen moet data-autonomie bevorderen. Voor gezondheid (EHDS) <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/european-health-data-space-regulation-ehds_en">wordt deze verplicht</a>, wat misschien voor nieuw momentum kan zorgen. Maar dat is niet genoeg om de bezorgdheden weg te nemen: het lijvige <a href="https://www.euro-stack.info/">EuroStack rapport</a> van de Bertelsmann Stiftung stelt de EU zelfs op een dienblaadje een ambitieuzere visie voor.</p>



<p>Onder de paraplu van <a href="https://interoperable-europe.ec.europa.eu/">Interoperable Europe</a> vinden we naast <a href="https://interoperable-europe.ec.europa.eu/collection/public-sector-tech-watch">Public Sector Techwatch</a> en <a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/">GovTech Connect</a> ook <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">OSOR</a>, het Open Source Observatory and Repository, terug. Zij monitoren ondertussen al meer dan 15 jaar het gebruik van open-source in Europese overheidsadministraties, en moedigen samenwerkingsverbanden en hergebruik aan. Met de recent gelanceerde <a href="https://interoperable-europe.ec.europa.eu/eu-oss-catalogue/solutions">Open Source Solutions Catalogue</a> moet het gemakkelijker worden voor landen om elkaars oplossingen te hergebruiken. Daarnaast publiceren ze <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/reports-and-guidelines">rapporten</a>, <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/case-studies">case studies</a>, <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories">nationale catalogi</a> (waarin we <a href="https://www.ict-reuse.be/">ict-reuse.be</a> terugvinden) en een <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/osor-newsletters">nieuwsbrief</a>. Overheden die zelf een <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/ospos-oss-governance">Open Source Program Office (OSPO)</a> willen oprichten om actief bij te dragen aan open-source projecten, net zoals de <a href="https://interoperable-europe.ec.europa.eu/collection/ec-ospo">EU er een heeft</a>, vinden bij hen steun. <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/dutch-digitalisation-minister-announces-ospo-creation">Nederland</a> is alvast overtuigd. Als Belgische overheden zichtbaar willen bijdragen aan digitale soevereiniteit, ligt hier nog een uitgelezen kans.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Digitale soevereiniteit is meer dan een technische keuze. Het is een continue strategie om <em>agency </em>terug te winnen in een sterk geïnterconnecteerde digitale wereld waarvan fundamentele bouwblokken plots kunnen verschuiven. We willen niet alleen technologie consumeren, maar deze ook actief vormgeven, begrijpen en controleren. Zo beperken we externe afhankelijkheden en de risico&#8217;s die daarmee gepaard gaan. Europees denken en samenwerken biedt daarbij opportuniteiten voor synergieën.</p>



<p>Technologische autonomie vereist een gezond technologisch ecosysteem. Permanente aandacht voor menselijk kapitaal en kennisopbouw zijn een must. Om dat te doen slagen op een duurzame manier, verdienen ondersteunende initiatieven de nodige middelen:</p>



<ul class="wp-block-list">
<li>Proactief technologische alternatieven ontwikkelen, anticiperend op de vraag,</li>



<li>Participeren in kennisuitwisseling, evenementen en netwerken, met vakgenoten, kennisinstellingen, buurlanden, EU, &#8230;</li>



<li>Actief meewerken aan, of investeren in, bestaande open-source oplossingen die je zelf hergebruikt,</li>



<li>Communities uitbouwen rondom eigen projecten,</li>



<li>Investeren in aantrekkelijke vormgeving en gebruiksgemak van de eigen oplossingen,</li>



<li>Eigen oplossingen inzetbaar maken buiten de eigen muren: publiceren als open-source, <a href="https://yml.publiccode.tools">integreren in catalogi</a>, een Engelse vertaling en documentatie toevoegen,</li>



<li>Werken aan naambekendheid: websites, promotie, marketing, vakbeurzen, (social) media, &#8230;</li>



<li>&#8230;</li>
</ul>



<p>Wie interesse heeft om dit thema verder op te volgen, kan de in dit artikel vermelde organisaties en initiatieven volgen op sociale media of via hun nieuwsbrieven. Voor een <em>deep dive</em> is het bovenvermelde <a href="https://www.euro-stack.info/">EuroStack rapport</a> interessant. Om alternatieven te zoeken voor afhankelijkheden in je eigen projecten, zijn <a href="https://european-alternatives.eu/">european-alternatives.eu</a>, <a href="https://euro-stack.com/">euro-stack.com</a>, of <a href="https://alternativeto.net/">alternativeto.net</a> goede startpunten. Tot slot: digitale soevereiniteit is een <em>team effort</em>, voel je daarom vrij om andere bronnen, projecten, of interessante links te delen in de commentaren hieronder!</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PII Filtering &#8211; par ******* habitant *****</title>
		<link>https://www.smalsresearch.be/pii-filtering-fr/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Thu, 31 Oct 2024 16:24:12 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[gdpr]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=21300</guid>

					<description><![CDATA[Comment protéger les données personnelles communiquées sans méfiance avec des agents conversationnels ? Le filtrage automatique peut partiellement aider, mais il ne s'agit pas d'une solution miracle.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar <a href="/pii-filtering/" data-type="post" data-id="21217">in het Nederlands</a>.</em></p>



<p>Avec la popularité des applications d&#8217;IA dotées d&#8217;une interface conversationnelle, un &#8220;vieux casse-tête&#8221; refait surface : comment protéger les données personnelles communiquées, souvent sans méfiance, à un système automatisé de conversation ? Par extension, cette question se pose pour toute application où des données personnelles doivent être partagées avec des tiers. Les dépendances externes d&#8217;une application peuvent toutefois constituer un enchevêtrement complexe. Il n&#8217;est pas non plus toujours possible (ou économiquement viable) d&#8217;éviter les grands acteurs d&#8217;infrastructures informatiques d&#8217;IA &#8211; du moins pas si vous souhaitez rester à jour avec les dernières capacités de manière rentable.</p>



<p>Une solution possible est connue sous le nom de <em>PII Filtering</em>. En l&#8217;occurrence, PII est l&#8217;acronyme anglais de <em>Personal(ly) Identifiable/Identifying Information</em>, c&#8217;est-à-dire les informations par lesquelles une personne peut être identifiée. L&#8217;idée est assez simple&nbsp;: un filtre supplémentaire est placé devant l&#8217;application, qui élimine les informations à caractère personnel des données d&#8217;entrée, avant que celles-ci ne soient transmises à l&#8217;application. Si cela fonctionne bien, alors ce que l&#8217;application fait de ces données en coulisses n&#8217;a pas d&#8217;importance.</p>



<h2 class="wp-block-heading">PII vs. Personal Data</h2>



<p>Avant toute chose, il est crucial de comprendre que les PII ne peuvent être assimilées à des &#8220;Personal Data&#8221; telles que définies par le RGPD et d&#8217;autres législations européennes. Les PII sont un concept ancré dans le droit états-unien. Elles font généralement référence à un ensemble fini d&#8217;informations d&#8217;identification qui peuvent être utilisées dans le but de distinguer ou de confirmer l&#8217;identité d&#8217;un individu, comme les numéros de registre national, les adresses et les numéros de téléphone. Aux États-Unis, les réglementations sont souvent prescriptives à cet égard&nbsp;: par exemple, <a href="https://fr.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act">HIPAA</a> (réglementation sur la protection des données relatives à la santé) comprend <a href="https://www.luc.edu/its/aboutus/itspoliciesguidelines/hipaainformation/the18hipaaidentifiers/">une liste de 18 identifiants</a> définis comme PII. Cela présente le grand avantage d&#8217;être relativement facile à implémenter : une fois que la liste est entièrement cochée, il n&#8217;y a plus guère de débat juridique possible.</p>



<p>En revanche, la <a href="https://eur-lex.europa.eu/eli/reg/2016/679/oj">RGPD</a> européenne adopte une approche de principe : elle définit un concept plus large de <a href="https://gdpr-info.eu/art-4-gdpr/"><em>Personal Data</em></a> (données à caractère personnel). Ce concept englobe &#8220;toute information se rapportant à une personne physique identifiée ou identifiable&#8221;. Cela signifie que même des informations en apparence anodines, comme la couleur &#8220;rouge&#8221;, peuvent être considérées comme des données à caractère personnel si elles se rapportent, par exemple, à la couleur préférée d&#8217;une personne. Cette définition des données à caractère personnel dépendante du contexte rend toutefois pratiquement impossible le développement de détecteurs ou de filtres génériques et polyvalents pour ces données. Ce qui est considéré comme des données personnelles ou non doit être évalué au cas par cas. Les développeurs sont donc confrontés à une personnalisation plus importante qu&#8217;ils ne le souhaiteraient, mais les juristes, les DPO et les <a href="https://www.autoriteprotectiondonnees.be/">autorités de protection des données</a> ont également fort à faire avec de telles évaluations dans chaque pays de l&#8217;UE.</p>



<p>Ainsi, les solutions de filtrage des PII considérées comme conformes aux États-Unis risquent toujours de ne l&#8217;être que partiellement dans l&#8217;Union européenne. Étant donné que le terme <em>PII</em> semble s&#8217;être imposé sur le marché mondial, nous ferons dans le présent article uniquement référence aux PII. Gardez toujours à l&#8217;esprit que le <em>Personal Data</em> doit être le point de départ dans le contexte de l&#8217;UE.</p>



<h2 class="wp-block-heading"><strong>Détection et filtrage des PII</strong></h2>



<p>Afin de filtrer des informations textuelles, nous utilisons généralement des modèles techniques de <a href="https://fr.wikipedia.org/wiki/Reconnaissance_de_formes">reconnaissance de formes</a> et de <a href="https://fr.wikipedia.org/wiki/Traitement_automatique_des_langues">traitement automatique des langues (Natural Language Processing ou NLP)</a>. Ces modèles analysent les données non structurées, à la recherche de formes telles que des formats d&#8217;adresses e-mail ou des chaînes numériques similaires à un registre national ou encore à des numéros de téléphone, afin de les modifier ou de les anonymiser par la suite. En outre, des <a href="https://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re">formes d&#8217;expression régulières (regex)</a> personnalisées sont souvent ajoutées afin de reconnaître les formes d&#8217;informations sensibles spécifiques à l&#8217;application en question.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2024/10/image.png"><img loading="lazy" decoding="async" width="523" height="217" src="/wp-content/uploads/2024/10/image.png" alt="Een voorbeeld van PII Filtering met NER in het Nederlands. Bron: pii-filter library (c) &quot;HabaneroCake&quot;, MIT license" class="wp-image-21255" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/image.png 523w, https://www.smalsresearch.be/wp-content/uploads/2024/10/image-300x124.png 300w" sizes="auto, (max-width: 523px) 100vw, 523px" /></a><figcaption class="wp-element-caption">Filtrage PII basé sur NER en néerlandais. Source: <a href="https://github.com/HabaneroCake/pii-filter/">pii-filter library</a> (c) &#8220;HabaneroCake&#8221;, MIT license</figcaption></figure>



<p>Un filtrage efficace des PII repose en grande partie sur la <a href="https://fr.wikipedia.org/wiki/Reconnaissance_d%27entit%C3%A9s_nomm%C3%A9es">reconnaissance d&#8217;entités nommées (Named Entity Recognition ou NER)</a>, une méthode NLP qui identifie les entités telles que les noms, les dates et les lieux dans un texte. Nous avons déjà publié des articles plus détaillés à ce sujet &#8211; voir les articles sur <a href="/facetten-van-natural-language-processing-deel-2/">NLP</a> et <a href="/named-entity-recognition-une-application-du-nlp-utile/">NER</a>.  L&#8217;essor de l&#8217;IA générative n&#8217;a pas encore changé grand-chose à la conception des techniques de NER. Aujourd&#8217;hui encore, de nombreux outils de filtrage de PII utilisent des outils NLP sous-jacents bien développés tels que <a href="https://www.nltk.org/">NLTK</a>, <a href="https://spacy.io/">SpaCy</a> ou <a href="https://flairnlp.github.io/">Flair</a>.</p>



<p>Toutefois, les PII peuvent également apparaître dans des images&nbsp;: scans de documents, photos de visages ou de plaques d&#8217;immatriculation, &#8230; Le filtrage de ces images nécessite une approche plus sophistiquée, car les données sensibles peuvent apparaître sous diverses formes, de notes écrites à la main à des reflets sur des photos. La <a href="https://fr.wikipedia.org/wiki/Reconnaissance_optique_de_caract%C3%A8res">reconnaissance optique de caractères (Optical Character Recognition ou OCR)</a> permet d&#8217;extraire le texte des images et de le convertir dans un format qui peut être analysé de la même manière que des données textuelles. Une fois le texte extrait, il est soumis au même processus de filtrage des PII à l&#8217;aide de techniques NLP. Des algorithmes de <a href="https://fr.wikipedia.org/wiki/D%C3%A9tection_d%27objet">reconnaissance d&#8217;objets</a> sont utilisés pour reconnaître les éléments visuels sensibles (tels que des visages ou des documents personnels) contenus dans l&#8217;image elle-même.</p>



<p>Une fois identifiées, vous devez décider de ce qu&#8217;il convient de faire avec les PII détectées. Les options possibles sont les suivantes&nbsp;:</p>



<ul class="wp-block-list">
<li>Remplacement/substitution par une autre valeur. Celle-ci peut éventuellement être créée à l&#8217;aide d&#8217;un <a href="https://faker.readthedocs.io/en/master/">outil de génération de données synthétiques</a>, de sorte que l&#8217;original est remplacé par une alternative d&#8217;apparence réaliste.</li>



<li>Masquage / obfuscation : remplacement par un caractère ou une barre. Cela peut être partiel, afin de ne pas perdre des informations plus générales utiles : par exemple, nous pouvons toujours voir que +32********* est un numéro de téléphone belge.</li>



<li>Suppression</li>



<li><a href="https://fr.wikipedia.org/wiki/Fonction_de_hachage_cryptographique">Hashage</a> (mieux encore avec <a href="https://fr.wikipedia.org/wiki/Salage_(cryptographie)">salage</a> en prévention des attaques par force brute)</li>



<li>Chiffrement, éventuellement <a href="https://en.wikipedia.org/wiki/Format-preserving_encryption">préservant le format des données</a></li>



<li>&#8230;</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img loading="lazy" decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png"><img loading="lazy" decoding="async" width="722" height="410" data-id="21264" src="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png" alt="" class="wp-image-21264" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34.png 722w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34-300x170.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png"><img loading="lazy" decoding="async" width="736" height="374" data-id="21265" src="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png" alt="" class="wp-image-21265" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02.png 736w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02-300x152.png 300w" sizes="auto, (max-width: 736px) 100vw, 736px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Texte en néerlandais (à gauche) anonymisé par masquage (au centre) ou par substitution (à droite) à l&#8217;aide de <a href="https://language-tools.ec.europa.eu/NLPServices/NLP">l&#8217;outil UE NLP Service</a>. Notons que le texte anonymisé contient toujours des éléments de carrière uniques à partir desquels il est possible de déduire l&#8217;identité cachée. Texte source : <a href="https://pers.kortrijk.be/228363-kortrijk-rouwt-om-overlijden-martine-tanghe">Ville de Courtrai, communiqué de presse 23/07/2023</a></figcaption></figure>



<p>D&#8217;autres fonctions sont possibles pour les images, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Flouter (blurring) ou d&#8217;autres filtres. Il convient de noter ici que certains filtres sont <a href="https://github.com/Y-Vladimir/SmartDeblur?tab=readme-ov-file">réversibles</a>.</li>



<li>Couvrir ou écraser, par exemple avec un rectangle noir.</li>



<li>&#8230;</li>
</ul>



<p>Le remplacement par une valeur alternative du même type peut toutefois créer des effets étranges, parce que l&#8217;entité n&#8217;est pas toujours estimée correctement ou parce que trop peu ou pas de contexte peut être pris en compte. Certains outils peuvent ainsi ne pas tenir compte du genre si un nom aléatoire doit être choisi pour remplacer un nom réel, alors qu&#8217;il peut être nécessaire de rester cohérent sur le plan grammatical ou sur celui du contenu. Il arrive également que des noms de lieux comme Saint-Nicolas soient anonymisés en Saint-Kevin, par exemple, parce que Nicolas est considéré comme un prénom. Les modèles de langage utilisés pour la NER ne sont donc certainement pas sans faille.</p>



<p>En théorie, il devrait être possible d&#8217;obtenir de meilleurs résultats en activant des LLM modernes comme le GPT-4 avec des requêtes construites de manière intelligente. Des mesures dans ce sens verront probablement le jour sous peu, mais aujourd&#8217;hui, les besoins en puissance de calcul, la consommation d&#8217;énergie et le coût sont encore trop élevés, et le temps de réponse trop lent, pour que l&#8217;on puisse également faire évoluer cette méthode.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img loading="lazy" decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png"><img loading="lazy" decoding="async" width="793" height="364" data-id="21271" src="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png" alt="" class="wp-image-21271" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02.png 793w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-300x138.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-768x353.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Le même texte en néerlandais (à gauche) anonymisé par ChatGPT 4o (à droite). La requête demandait de &#8220;remplacer toutes les PII et les données personnelles, y compris les professions, les employeurs, les villes, les dates et les âges&#8221;. Notez que le texte résultant a également été réécrit. Pour y remédier, il faudrait développer et affiner la requête.</figcaption></figure>



<h2 class="wp-block-heading">Outils courants</h2>



<p>Les personnes qui recherchent des systèmes de filtrage de PII à grande échelle, et qui souhaitent pouvoir analyser des bases de données, des réseaux ou des systèmes de fichiers entiers, se retrouvent avec des outils du domaine de <a href="https://en.wikipedia.org/wiki/Data_loss_prevention_software"><em>Data Loss Prevention</em></a>. Ceux-ci devraient empêcher les PII de quitter l&#8217;entreprise sans les autorisations nécessaires. Vous trouverez une vue d&#8217;ensemble du marché en consultant <a href="https://www.gartner.com/reviews/market/data-loss-prevention">Gartner</a>. Les géants de l&#8217;internet proposent également des solutions à cette fin, telles que <a href="https://aws.amazon.com/fr/macie/">Amazon Macie</a>, <a href="https://cloud.google.com/security/products/sensitive-data-protection">Google SDP</a>, ou <a href="https://www.ibm.com/guardium">IBM Guardium</a>. Les techniques utilisées dans ces outils sont quelque peu liées à celles utilisées dans les enquêtes judiciaires &#8211; ce que l&#8217;on appelle l&#8217;eDiscovery, que nous avons <a href="/e-discovery/">déjà évoquée</a>.</p>



<p>Les créateurs d&#8217;applications sont plus susceptibles d&#8217;être intéressés par des outils sous forme de bibliothèques, de SDK ou d&#8217;API. Les projets intéressants sont les suivants&nbsp;:</p>



<ul class="wp-block-list">
<li>Pour le texte&nbsp;:
<ul class="wp-block-list">
<li><a href="https://microsoft.github.io/presidio/">Microsoft Presidio</a> (<a href="https://huggingface.co/spaces/presidio/presidio_demo">démo</a>) (également disponible sous la forme de <a href="https://microsoft.github.io/presidio/samples/docker/">Docker containers</a>), ou le service <a href="https://learn.microsoft.com/en-us/azure/ai-services/language-service/personally-identifiable-information/quickstart?tabs=windows&amp;pivots=rest-api">PII detection</a> sur Azure</li>



<li><a href="https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html">Amazon Comprehend</a> (<a href="https://ai-service-demos.go-aws.com/comprehend">démo</a>)</li>



<li>Les <a href="https://language-tools.ec.europa.eu/NLPServices">EU Language Services pour NLP</a> (login requis)&nbsp;: pour l&#8217;anonymisation des documents dans les langues de l&#8217;UE, basé sur le <a href="https://gitlab.com/MAPA-EU-Project/mapa_project">projet MAPA-EU</a>, qui peut également être utilisé via Docker Compose.</li>



<li><a href="https://github.com/tokern/piicatcher">PIICatcher</a> (pour les bases de données et les systèmes de fichiers)</li>
</ul>
</li>



<li>Pour les images&nbsp;:
<ul class="wp-block-list">
<li><a href="https://google.github.io/magritte/">Google Magritte</a>&nbsp;(pour les visages)</li>



<li><a href="https://github.com/facebookresearch/EgoBlur">Meta Research EgoBlur</a>&nbsp;(Pour les visages et les plaques d&#8217;immatriculation)</li>



<li><a href="https://github.com/redhuntlabs/Octopii">OctoPII</a> (Uniquement la détection, pas la modification. Pour les documents et les systèmes de fichiers, avec <a href="https://github.com/tesseract-ocr/tesseract">Tesseract</a> pour OCR engine)</li>
</ul>
</li>
</ul>



<figure class="wp-block-image aligncenter size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h36_03.png"><img loading="lazy" decoding="async" width="1024" height="401" src="/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png" alt="Gezichts-anonymisering met Meta EgoBlur. " class="wp-image-21260" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-300x117.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-768x300.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03.png 1268w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Anonymisation faciale avec Meta EgoBlur. Source&nbsp;: Nikhil Raina et.al.,&nbsp;<a href="https://arxiv.org/abs/2308.13093">“EgoBlur: Responsible Innovation in Aria”</a>, avec des illustrations du&nbsp;<a href="https://ai.meta.com/datasets/casual-conversations-v2-dataset/">CCV2 dataset</a> public.</figcaption></figure>



<p>De nouvelles recherches sont également en cours dans les universités. Par exemple, <a href="https://github.com/EdyVision/pii-codex">PII-Codex</a> est le résultat d&#8217;un <a href="https://joss.theoj.org/papers/10.21105/joss.05402">projet universitaire</a> qui présente une caractéristique intéressante : il utilise Presidio ou Comprehend, mais ajoute également son propre score de risque, qui devrait être en mesure d&#8217;indiquer dans quelle mesure la non modification des PII reconnues pourrait poser un risque (pour la protection de la vie privée). En outre, la plupart des outils permettent d&#8217;utiliser <a href="https://microsoft.github.io/presidio/analyzer/customizing_nlp_models/">vos propres modèles ou ceux des autres</a>. Vous pouvez éventuellement les <a href="https://huggingface.co/docs/transformers/training">peaufiner</a> vous-même pour la détection personnalisée d&#8217;entités, si vous disposez des données d&#8217;entraînement nécessaires à cet effet.</p>



<p>Si nous nous appuyons sur la NER ou la reconnaissance d&#8217;images pour la détection des PII, il est certain que certaines PII ne seront pas détectées et qu&#8217;à l&#8217;inverse, des éléments non PII pourraient également être classés à tort comme des PII. En effet, aucune de ces technologies ne garantit une précision de 100 %. Le taux de réussite variera également en fonction de la langue et du type d&#8217;entité que l&#8217;on tente de détecter. Il n&#8217;est jamais possible de garantir complètement le remplacement ou la suppression de chaque entité dans un document. Il est donc préférable de vérifier le résultat dans les cas où cela s&#8217;avère crucial.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Les solutions de filtrage de PII peuvent certainement contribuer à la protection de données à caractère personnel dans un contexte européen. Les techniques sont simples à comprendre et faciles à mettre en œuvre. Cependant, il n&#8217;y a jamais de garantie de détection totalement précise de toutes les données à caractère personnel et, dans la plupart des cas, leur utilisation devra donc faire partie d&#8217;un éventail plus large de mesures visant à promouvoir la conformité avec la RGPD et d&#8217;autres législations.</p>



<p>La technologie sous-jacente est &#8220;classique&#8221;, en ce sens que la NER et la reconnaissance d&#8217;images existent depuis longtemps et sont désormais bien développées. Aujourd&#8217;hui, elles bénéficient de l&#8217;attention portée à l&#8217;intelligence artificielle, et <a href="https://paperswithcode.com/task/named-entity-recognition-ner">toutes sortes d&#8217;étalons</a> leur permettent de rester à la pointe du progrès. Dans la pratique, nous constatons que le texte anonymisé qui en résulte peut parfois sembler un peu aliénant, car certains problèmes tout aussi classiques auxquels la NER est généralement confrontée ne sont pas encore totalement écartés.</p>



<p>______________________</p>



<p><em><em><em>Cette contribution a été soumise par Joachim Ganseman, consultant IT chez Smals Research. Elle a été rédigée en son nom propre et ne prend pas position au nom de Smals.</em></em></em></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PII Filtering &#8211; door ******* uit *****</title>
		<link>https://www.smalsresearch.be/pii-filtering/</link>
					<comments>https://www.smalsresearch.be/pii-filtering/#comments</comments>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Mon, 28 Oct 2024 15:37:54 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[gdpr]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=21217</guid>

					<description><![CDATA[Hoe beschermen we persoonsgegevens die nietsvermoedend via chat worden meegedeeld? PII filtering kan gedeeltelijk helpen, maar is geen mirakeloplossing.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/pii-filtering-fr">en français</a>.</em></p>



<p>De populariteit van AI-toepassingen met chat-interface, doet een &#8220;oud zeer&#8221; opnieuw bovendrijven: hoe beschermen we persoonsgegevens die, vaak nietsvermoedend, via chat worden meegedeeld aan een geautomatiseerd systeem? Bij uitbreiding stelt zich deze vraag voor elke toepassing waar persoonsgebonden gegevens gedeeld moeten worden met derde partijen. De externe afhankelijkheden van een toepassing kunnen echter een ingewikkeld kluwen zijn. Het is ook niet altijd mogelijk (of economisch haalbaar) om de grote spelers op het vlak van cloud- en AI-diensten te ontwijken &#8211; toch niet als je mee wil zijn met de nieuwste mogelijkheden op een kostenefficiënte manier.</p>



<p>Een mogelijke oplossing staat bekend als <em>PII Filtering</em>. PII is daarbij het Engels acroniem voor <em>Personal(ly) Identifiable/Identifying Information</em>, i.e. de informatie waarmee iemand geïdentificeerd kan worden. Het idee is eenvoudig genoeg: we plaatsen een extra filter voor de applicatie, die de persoonlijke gegevens uit de input filtert, voordat die input aan de applicatie wordt doorgegeven. Als dat goed lukt, dan maakt het in principe niet meer uit wat de applicatie achter de schermen met die gegevens doet.</p>



<h2 class="wp-block-heading">PII vs. Personal Data</h2>



<p>Het is allereerst cruciaal om te begrijpen dat &#8220;PII&#8221; niet gelijkgesteld kan worden aan &#8220;Personal Data&#8221; zoals de GDPR en andere Europese wetgeving die definieert. PII is een concept dat geworteld is in Amerikaanse wetgeving. Het doelt meestal op een eindige set identificatiegegevens die kunnen worden gebruikt om de identiteit van een individu te onderscheiden of te achterhalen, zoals rijksregisternummers, adressen en telefoonnummers. Amerikaanse regelgeving is op dat vlak vaak prescriptief van aard: zo bevat de <a href="https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act">HIPAA</a> (privacywetgeving m.b.t. gezondheidsgegevens) een <a href="https://www.luc.edu/its/aboutus/itspoliciesguidelines/hipaainformation/the18hipaaidentifiers/">lijst met 18 identifiers</a> die als PII worden gedefinieerd. Dat heeft als groot voordeel dat het relatief gemakkelijk te implementeren is: wanneer het lijstje helemaal afgevinkt kan worden, is er ook juridisch weinig discussie meer.</p>



<p>Daarentegen hanteert de Europese <a href="https://eur-lex.europa.eu/eli/reg/2016/679/oj">GDPR (AVG)</a> een principiële benadering: ze definieert een breder concept van <a href="https://gdpr-info.eu/art-4-gdpr/">Personal Data</a> (persoonsgegevens). Dat omvat &#8220;alle informatie met betrekking tot een geïdentificeerde of identificeerbare natuurlijke persoon&#8221;. Dit betekent dat zelfs schijnbaar onschuldige informatie, zoals de kleur &#8220;rood&#8221;, beschouwd kan worden als persoonsgegeven, als deze bijvoorbeeld betrekking heeft tot iemands lievelingskleur. Deze contextafhankelijke definitie van persoonsgegevens, maakt het echter ook nagenoeg onmogelijk om generieke, algemeen inzetbare detectoren of filters ervoor te ontwikkelen. Wat beschouwd wordt als persoonsgegeven of niet, moet geval per geval beoordeeld worden. Niet alleen ontwikkelaars worden daardoor geconfronteerd met meer maatwerk dan hen lief is, ook juristen, DPO&#8217;s en <a href="https://www.gegevensbeschermingsautoriteit.be/">Gegevensbeschermingsautoriteiten</a> hebben met zulke beoordelingen in elk EU-land de handen vol.</p>



<p>Oplossingen voor PII-filtering die voldoen voor gebruik in de VS, lopen dus altijd een risico om in de EU slechts gedeeltelijk tegemoet te komen aan de vereisten. Omdat de term <em>PII </em>echter algemeen ingang gevonden lijkt te hebben in de globale markt, spreken we verder in dit artikel enkel nog over PII. Houd wel permanent in het achterhoofd dat <em>Personal Data</em> altijd het uitgangspunt moet zijn in EU-context.</p>



<h2 class="wp-block-heading">PII Detectie en Filtering</h2>



<p>Om tekstuele input te filteren gebruiken we doorgaans <a href="https://en.wikipedia.org/wiki/Pattern_recognition">patroonherkenningstechnieken</a> en <a href="https://en.wikipedia.org/wiki/Natural_language_processing">Natural Language Processing (NLP)</a>-modellen. Deze modellen scannen ongestructureerde gegevens, op zoek naar patronen zoals e-mailformaten of numerieke reeksen die lijken op rijksregister- of telefoonnummers, om deze nadien te kunnen redigeren of anonimiseren. Daarnaast worden aangepaste <a href="https://en.wikipedia.org/wiki/Regular_expression">regex-patronen</a> vaak toegevoegd om vormen van gevoelige informatie te herkennen die specifiek zijn voor de betrokken toepassing.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2024/10/image.png"><img loading="lazy" decoding="async" width="523" height="217" src="/wp-content/uploads/2024/10/image.png" alt="Een voorbeeld van PII Filtering met NER in het Nederlands. Bron: pii-filter library (c) &quot;HabaneroCake&quot;, MIT license" class="wp-image-21255" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/image.png 523w, https://www.smalsresearch.be/wp-content/uploads/2024/10/image-300x124.png 300w" sizes="auto, (max-width: 523px) 100vw, 523px" /></a><figcaption class="wp-element-caption">PII Filtering op basis van NER in het Nederlands. Bron: <a href="https://github.com/HabaneroCake/pii-filter/">pii-filter library</a> (c) &#8220;HabaneroCake&#8221;, MIT license</figcaption></figure>



<p>Effectieve PII-filtering steunt sterk op <a href="https://en.wikipedia.org/wiki/Named-entity_recognition">Named Entity Recognition (NER)</a>, een NLP-methode die entiteiten zoals namen, data en locaties in een tekst identificeert. We publiceerden daar eerder al over in meer detail &#8211; zie deze artikels over <a href="/facetten-van-natural-language-processing-deel-2/">NLP</a> en <a href="https://itdaily.be/blogs/software/named-entity-recognition-een-praktische-toepassing-van-natural-language-processing/">NER</a>. De opkomst van generatieve AI heeft aan de opzet van NER-technieken nog niet veel veranderd. Ook vandaag gebruiken veel PII filtering tools achterliggend goed ontwikkelde NLP-toolkits zoals <a href="https://www.nltk.org/">NLTK</a>, <a href="https://spacy.io/">SpaCy</a> of <a href="https://flairnlp.github.io/">Flair</a>.</p>



<p>PII kan echter ook in afbeeldingen opduiken: scans van documenten, foto&#8217;s van gezichten of nummerplaten, &#8230; Om dat weg te filteren is een geavanceerdere aanpak vereist, omdat de gevoelige gegevens kunnen verschijnen in uiteenlopende vormen, van handgeschreven notities tot reflecties in foto&#8217;s. <a href="https://en.wikipedia.org/wiki/Optical_character_recognition">Optical Character Recognition (OCR)</a> wordt gebruikt om tekst uit afbeeldingen te extraheren en deze om te zetten in een formaat dat op dezelfde manier kan worden geanalyseerd als tekstuele gegevens. Zodra de tekst is geëxtraheerd, ondergaat deze hetzelfde PII-filterproces met behulp van NLP-technieken. In gevallen waarin de afbeelding zelf gevoelige visuele elementen bevat (zoals gezichten of persoonlijke documenten), worden algoritmen voor <a href="https://en.wikipedia.org/wiki/Object_detection">beeldherkenning</a> gebruikt om dergelijke inhoud te herkennen.</p>



<p>Eenmaal geïdentificeerd, moet je besluiten wat er dient te gebeuren met de gedetecteerde PII. Opties kunnen zijn:</p>



<ul class="wp-block-list">
<li>Vervanging / substitutie door een andere waarde. Deze kan eventueel aangemaakt worden met een <a href="https://faker.readthedocs.io/en/master/">synthetic data tool</a>, zodat het origineel vervangen wordt door een realistisch ogend alternatief.</li>



<li>Masking / obfuscation: vervang door een karakter of balkje. Dit kan eventueel gedeeltelijk, om nuttige algemenere info niet te verliezen: zo zien we nog dat +32********* een Belgisch telefoonnummer is.</li>



<li>Verwijdering</li>



<li><a href="https://en.wikipedia.org/wiki/Cryptographic_hash_function">Hashing</a> (best met <a href="https://en.wikipedia.org/wiki/Salt_(cryptography)">salt</a> ter preventie van brute-force attacks)</li>



<li>Encryptie, eventueel <a href="https://en.wikipedia.org/wiki/Format-preserving_encryption">formaat-behoudend</a></li>



<li>&#8230;</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img loading="lazy" decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png"><img loading="lazy" decoding="async" width="722" height="410" data-id="21264" src="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png" alt="" class="wp-image-21264" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34.png 722w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34-300x170.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png"><img loading="lazy" decoding="async" width="736" height="374" data-id="21265" src="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png" alt="" class="wp-image-21265" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02.png 736w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02-300x152.png 300w" sizes="auto, (max-width: 736px) 100vw, 736px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Nederlandstalige tekst (links) geanonymiseerd door maskeren (midden) of substitutie (rechts) met behulp van de <a href="https://language-tools.ec.europa.eu/NLPServices/NLP">EU NLP Service</a>. Merk op dat de geanonymiseerde tekst nog steeds unieke carrière-elementen vermeldt waaruit men de verborgen identiteit kan afleiden. Bron tekst: <a href="https://pers.kortrijk.be/228363-kortrijk-rouwt-om-overlijden-martine-tanghe">Stad Kortrijk, persbericht 23/07/2023</a> </figcaption></figure>



<p>Voor afbeeldingen zijn andere functies mogelijk, waaronder:</p>



<ul class="wp-block-list">
<li>Vervagen (blurring) of andere filters. Hierbij moet men er wel op letten dat sommige filters <a href="https://github.com/Y-Vladimir/SmartDeblur?tab=readme-ov-file">omkeerbaar</a> zijn.</li>



<li>Bedekken of overschrijven, bijvoorbeeld met een zwarte rechthoek.</li>



<li>&#8230;</li>
</ul>



<p>De vervanging door een alternatieve waarde van dezelfde soort kan echter soms ook voor vreemde effecten zorgen, omdat de entiteit niet altijd correct wordt ingeschat of omdat er te weinig of geen rekening gehouden kan worden met de context. Zo kan het zijn dat sommige tools geen acht slaan op het geslacht als een willekeurige naam moet worden gekozen om een echte naam te vervangen, terwijl dat wel nodig kan zijn om grammaticaal of inhoudelijk consistent te blijven. We zien soms ook plaatsnamen zoals Sint-Niklaas geanonymiseerd worden als pakweg Sint-Kevin, omdat Niklaas als naam werd aanzien. De taalmodellen gebruikt voor NER zijn dus zeker niet feilloos.</p>



<p>Het zou in theorie mogelijk moeten zijn om betere resultaten te halen door recente LLMs zoals GPT-4 in te schakelen met slim geconstrueerde prompts. Waarschijnlijk zullen er binnenkort wel stappen in die richting worden gezet, maar vandaag zijn de rekenkrachtvereisten, energieconsumptie en kostprijs daarvan nog te hoog, en de responstijd te traag, om dat ook schaalbaar te maken.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img loading="lazy" decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png"><img loading="lazy" decoding="async" width="793" height="364" data-id="21271" src="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png" alt="" class="wp-image-21271" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02.png 793w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-300x138.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-768x353.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Dezelfde Nederlandstalige tekst (links) geanonymiseerd door ChatGPT 4o (rechts). In de prompt werd gevraagd &#8220;vervang alle PII en persoonsgegevens, ook de beroepen, werkgevers, steden, datums en leeftijden.&#8221; Merk op dat de resulterende tekst ook herschreven werd. Om dat tegen te gaan zou verdere uitbreiding en verfijning van de prompt nodig zijn.</figcaption></figure>



<h2 class="wp-block-heading">Tools of the trade</h2>



<p>Wie op zoek gaat naar grootschalige PII Filtering systemen, en volledige databases, netwerken of filesystems wil kunnen scannen, komt terecht bij <a href="https://en.wikipedia.org/wiki/Data_loss_prevention_software">Data Loss Prevention</a> tools. Deze moeten verhinderen dat PII het bedrijf verlaat zonder de nodige toelatingen. Voor een marktoverzicht verwijzen we naar <a href="https://www.gartner.com/reviews/market/data-loss-prevention">Gartner</a>. Ook de internetgiganten bieden daarvoor oplossingen aan, zoals <a href="https://aws.amazon.com/macie/">Amazon Macie</a>, <a href="https://cloud.google.com/security/products/sensitive-data-protection">Google SDP</a>, of <a href="https://www.ibm.com/guardium">IBM Guardium</a>. De daarbij gebruikte technieken zijn enigszins verwant met diegene gebruikt bij forensisch onderzoek &#8211; de zogenaamde eDiscovery, waarover we ook al <a href="/e-discovery/">eerder schreven</a>.</p>



<p>Applicatiebouwers zijn waarschijnlijk eerder geïnteresseerd in tools in de vorm van bibliotheken, SDK&#8217;s of API&#8217;s. Interessante projecten zijn:</p>



<ul class="wp-block-list">
<li>Voor tekst:
<ul class="wp-block-list">
<li><a href="https://microsoft.github.io/presidio/">Microsoft Presidio</a> (<a href="https://huggingface.co/spaces/presidio/presidio_demo">demo</a>) (ook beschikbaar als <a href="https://microsoft.github.io/presidio/samples/docker/">Docker containers</a>), of de <a href="https://learn.microsoft.com/en-us/azure/ai-services/language-service/personally-identifiable-information/quickstart?tabs=windows&amp;pivots=rest-api">PII detection</a> dienst op Azure</li>



<li><a href="https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html">Amazon Comprehend</a> (<a href="https://ai-service-demos.go-aws.com/comprehend">demo</a>)</li>



<li>De <a href="https://language-tools.ec.europa.eu/NLPServices">EU Language Services voor NLP</a> (inloggen vereist): voor anonymisering van documenten in EU-talen, gebaseerd op het <a href="https://gitlab.com/MAPA-EU-Project/mapa_project">MAPA-EU project</a> dat ook via Docker Compose gebruikt kan worden.</li>



<li><a href="https://github.com/tokern/piicatcher">PIICatcher</a> (voor databases en filesystems)</li>
</ul>
</li>



<li>Voor afbeeldingen:
<ul class="wp-block-list">
<li><a href="https://google.github.io/magritte/">Google Magritte</a> (voor gezichten)</li>



<li><a href="https://github.com/facebookresearch/EgoBlur">Meta Research EgoBlur</a> (voor gezichten en nummerplaten)</li>



<li><a href="https://github.com/redhuntlabs/Octopii">OctoPII</a> (enkel detectie en geen redactie. Voor documenten en filesystems, met <a href="https://github.com/tesseract-ocr/tesseract">Tesseract</a> als OCR engine)</li>
</ul>
</li>
</ul>



<figure class="wp-block-image aligncenter size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h36_03.png"><img loading="lazy" decoding="async" width="1024" height="401" src="/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png" alt="Gezichts-anonymisering met Meta EgoBlur. " class="wp-image-21260" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-300x117.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-768x300.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03.png 1268w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Gezichts-anonymisering met Meta EgoBlur. Bron: Nikhil Raina et.al., <a href="https://arxiv.org/abs/2308.13093">&#8220;EgoBlur: Responsible Innovation in Aria&#8221;</a>, met foto&#8217;s uit de publieke <a href="https://ai.meta.com/datasets/casual-conversations-v2-dataset/">CCV2 dataset</a>.</figcaption></figure>



<p>Ook in academia wordt er verder onderzoek gedaan. Zo is <a href="https://github.com/EdyVision/pii-codex">PII-Codex</a> het resultaat van een <a href="https://joss.theoj.org/papers/10.21105/joss.05402">universitair project</a>, met een interessante feature: achterliggend maakt het gebruik van Presidio of Comprehend, maar het voegt ook een eigen risico-score toe, die moet kunnen aangeven in welke mate het niet-redigeren van de herkende PII een (privacy-)risico zou kunnen inhouden. Daarnaast laten de meeste tools ook toe om <a href="https://microsoft.github.io/presidio/analyzer/customizing_nlp_models/">andere of eigen modellen</a> in te pluggen. Deze kan je eventueel zelf <a href="https://huggingface.co/docs/transformers/training">gefinetuned</a> hebben voor detectie van custom entiteiten, als je daarvoor de nodige trainingsdata hebt.</p>



<p>Als we vertrouwen op NER of beeldherkenning voor PII-detectie, dan kunnen we er zeker van zijn dat sommige PII niet gedetecteerd zal worden, en dat ook andersom niet-PII foutief als PII aangemerkt kan worden. Geen van deze technologieën garandeert immers 100% accuraatheid. Het succespercentage zal ook variëren afhankelijk van de taal en het entiteitstype dat men probeert te detecteren. Volledige vervanging of verwijdering van elke entiteit in een document kan nooit worden gegarandeerd. Daar waar dat cruciaal is, wordt het resultaat achteraf dus best nog gecontroleerd.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Oplossingen voor PII-filtering kunnen in Europese context zeker bijdragen aan de bescherming van persoonsgegevens. De techniek is eenvoudig te begrijpen en gemakkelijk inzetbaar. Er is echter nooit een garantie op volledige accurate detectie van alle persoonsgegevens, en dus zal hun gebruik in de meeste gevallen een onderdeel moeten zijn van een ruimere waaier aan maatregelen om <em>compliance </em>met GDPR en andere wetgeving te bevorderen.</p>



<p>De achterliggende technologie is &#8220;klassiek&#8221;, in de zin dat NER en beeldherkenning al lang bestaan en ondertussen goed ontwikkeld zijn. Vandaag profiteren ze mee van de aandacht voor artificiële intelligentie, en <a href="https://paperswithcode.com/task/named-entity-recognition-ner">allerlei benchmarks</a> laten toe om de state-of-the-art op te volgen. In de praktijk merken we wel dat de resulterende geanonymiseerde tekst soms wat bevreemdend kan overkomen, omdat enkele al even klassieke problemen waar NER typisch mee kampt, nog altijd niet helemaal van de baan zijn.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>


]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/pii-filtering/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Premier tour d&#8217;horizon de l&#8217;AI Act</title>
		<link>https://www.smalsresearch.be/premier-tour-dhorizon-de-lai-act/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Wed, 17 Jul 2024 15:14:57 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[sustainability]]></category>
		<guid isPermaLink="false">/?p=20917</guid>

					<description><![CDATA[Nous vous en disons plus sur l'AI Act européen, dernière pierre angulaire d'une série d'initiatives législatives à grande échelle destinées à réglementer l'économie numérique en Europe.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar <a href="/een-eerste-kennismaking-met-de-ai-act/">in het Nederlands</a>.</em></p>



<p><em>Note&nbsp;: il s&#8217;agit d&#8217;un article de vulgarisation consacré à une réglementation future, basé sur la </em><a href="https://eur-lex.europa.eu/legal-content/FR/TXT/?uri=OJ%3AL_202401689"><em>publication officielle du 12/07/2024</em></a><em>. Adressez-vous toujours à un·e juriste pour obtenir un avis juridique professionnel.</em></p>



<p>L&#8217;<a href="https://digital-strategy.ec.europa.eu/fr/policies/regulatory-framework-ai">AI Act européen</a> (en français <em>le règlement sur l&#8217;intelligence artificielle</em>) est une des pierres angulaires d&#8217;une série d&#8217;initiatives législatives à grande échelle destinées à réglementer l&#8217;économie numérique en Europe. Il vient ainsi compléter la législation antérieure relative à certains aspects de l&#8217;intelligence artificielle, comme le <a href="https://eur-lex.europa.eu/eli/reg/2016/679/oj">RGPD</a>, le <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA) et le Digital Markets Act (DMA)</a>, le <a href="https://digital-strategy.ec.europa.eu/en/policies/data-act">Data Act</a>, le <a href="https://digital-strategy.ec.europa.eu/en/policies/data-governance-act">Data Governance Act</a>, le <a href="https://digital-strategy.ec.europa.eu/en/policies/european-chips-act">CHIPS Act</a> et le <a href="https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act">Cyber Resilience Act</a> en cours d&#8217;élaboration. Après de longues négociations, l&#8217;AI Act a été approuvé par le Parlement européen en mars 2024 et par le Conseil européen en mai 2024. La publication au Journal officiel de l&#8217;Union européenne, que l&#8217;on peut appeler Moniteur européen, a eu lieu le <a href="https://eur-lex.europa.eu/legal-content/FR/TXT/?uri=OJ%3AL_202401689">12 juillet 2024</a>. Les premières règles entreront en vigueur début 2025. Vous pouvez également consulter <a href="https://artificialintelligenceact.eu/developments/">cette chronologie</a>.</p>



<h2 class="wp-block-heading">Un RGPD bis&nbsp;?</h2>



<p>Le texte intégral de l&#8217;AI Act, y compris l&#8217;ensemble des préliminaires et annexes, comprend <a href="https://eur-lex.europa.eu/legal-content/FR/TXT/PDF/?uri=OJ:L_202401689">144 pages</a>. Fort heureusement, de <a href="https://artificialintelligenceact.eu/high-level-summary/">bons résumés</a> sont déjà disponibles <a href="https://www.stibbe.com/publications-and-insights/the-eu-artificial-intelligence-act-our-16-key-takeaways">ici et là</a>. Il est ainsi presque deux fois plus long que le <a href="https://eur-lex.europa.eu/legal-content/FR/TXT/PDF/?uri=CELEX:32016R0679">RGPD</a> qui ne fait, lui, &#8220;que&#8221; 88 pages. L&#8217;impact de ce dernier est énorme : toutes les organisations traitant des données à caractère personnel &#8211; il suffit d&#8217;avoir une administration du personnel ou un fichier de clients &#8211; se sont en effet vues confrontées aux exigences relatives aux délégués à la protection des données, aux registres de traitement et aux bases juridiques du traitement des données. Chaque pays a également dû mettre en place une  <a href="https://www.autoriteprotectiondonnees.be/">Autorité de protection des données</a> habilitée à <a href="https://www.dailybits.be/item/overzicht-gdpr-boetes-rechtszaken/#BE">infliger des amendes en cas d&#8217;infraction</a>.</p>



<p>Le RGPD s&#8217;est également accompagné d&#8217;une certaine confusion, notamment par son utilisation fréquente de termes ouverts à l&#8217;interprétation (&#8220;approprié&#8221;, &#8220;adéquat&#8221;, &#8220;adapté&#8221;, &#8220;suffisant&#8221;&#8230;).<br>La nécessité de les concrétiser à nouveau pour chaque cas d&#8217;espèce alimente ce que l&#8217;on peut aujourd&#8217;hui appeler une petite industrie juridique. L&#8217;AI Act vise à fournir un peu plus d&#8217;indications, en revêtant une forme plus technique. Il comporte ainsi une liste d&#8217;annexes avec des énumérations pratiques des attentes en matière de documentation, de conformité, de transparence, etc.</p>



<p>L&#8217;AI Act est parti d&#8217;une proposition plus compacte de <a href="https://eur-lex.europa.eu/legal-content/FR/TXT/?uri=CELEX%3A52021PC0206">125 pages (annexes incluses)</a>. Au cours des négociations cependant, on a assisté à l&#8217;essor fulgurant de l&#8217;IA générative et des grands modèles de langage. Cette nouvelle donne a nécessité la révision et l&#8217;ajout de certains éléments, tels qu&#8217;un nouveau chapitre (5) entièrement consacré aux modèles d&#8217;IA à usage général, parmi lesquels on compte les grands modèles de langage. Quant à certaines sections, on peut se demander ce qu&#8217;elles viennent faire dans l&#8217;AI Act, notamment un système de &#8220;bacs à sable réglementaires de l&#8217;IA&#8221; (article 57) qui doit permettre aux régulateurs de faciliter l&#8217;innovation. Certains articles sont formulés de manière plutôt énigmatique, comme la section dédiée aux &#8220;organismes d’évaluation de la conformité notifiés&#8221; (article 29), qui ne sont <a href="https://www.hiig.de/en/eu-ai-act/">ni plus ni moins que des auditeurs</a>. Des <a href="https://www.euractiv.com/section/digital/news/the-long-and-winding-road-to-implement-the-ai-act/">voix critiques</a> se font donc entendre, craignant que la somme de mesures qui en résulte ne débouche avant tout sur un véritable imbroglio.</p>



<h2 class="wp-block-heading">AI Act &#8211; Fondamentaux</h2>



<p>L&#8217;AI Act s&#8217;adresse aux développeurs et aux fournisseurs d&#8217;IA, et ce uniquement lorsqu&#8217;ils publient des systèmes d&#8217;IA et les mettent à la disposition de tiers. Tous les développements et tests internes préalables sont explicitement exemptés (article 2 §8). L&#8217;AI Act ne s&#8217;applique pas non plus aux activités personnelles auxquelles vous vous adonnez dans un contexte non professionnel (article 2 §10). De même, la recherche scientifique (article 2 §6) et les applications militaires (article 2 §3) ne sont pas concernées. Bien évidemment, cela ne signifie pas que tout est permis dans tous ces cas.<br>Il va de soi que d&#8217;autres législations existantes restent en vigueur. Les droits des citoyens étaient déjà protégés par <a href="https://gdpr-info.eu/art-22-gdpr/">l&#8217;article 22 du RGPD entre autres</a>, tandis que la législation sur les droits d&#8217;auteur continue de protéger les auteurs.</p>



<p>Par ailleurs, la définition de l&#8217;IA utilisée est particulièrement large et empruntée à l&#8217;<a href="https://oecd.ai/en/wonk/ai-system-definition-update">OCDE</a>&nbsp;: en résumé, &#8220;un système IA [&#8230;] déduit, à partir des entrées, la manière de générer des sorties [&#8230;]&#8221; (article 3 + considérant 12). La quasi-totalité de l&#8217;apprentissage automatique entre dans ce cadre. Dans d&#8217;autres définitions, on lit parfois que l&#8217;IA comporte un aspect cognitif (quelque chose doit être &#8220;reconnu&#8221;), mais il n&#8217;en est pas fait mention ici. Il n&#8217;est pas non plus fait mention de techniques spécifiques&nbsp;: tout ce qui apprend de manière adaptative ou peut réagir de manière quelque peu autonome à l&#8217;environnement est presque toujours inclus. Il s&#8217;agit donc également des systèmes que vous connaissez depuis des années, sans vous rendre compte qu&#8217;ils reposent sur l&#8217;intelligence artificielle, tels que les filtres antispam, les recommandations sur les sites web, voire les prévisions météorologiques.</p>



<p>L&#8217;AI Act définit d&#8217;abord et surtout une liste de pratiques interdites (article 5), qui prendra effet dès le début de l&#8217;année 2025. Cette liste est exhaustive, ce qui signifie en principe que tout ce qui n&#8217;est pas explicitement interdit est autorisé (sauf dispositions contraires prévues par d&#8217;autres lois). Aussi est-il intéressant d&#8217;examiner ce qui figure et ce qui ne figure pas dans cette liste d&#8217;interdictions, ainsi que les dispositions supplémentaires qui s&#8217;y rapportent. On découvre ainsi que&nbsp;:</p>



<ul class="wp-block-list">
<li>§1(f)&nbsp;: L&#8217;interdiction de la reconnaissance des émotions ne mentionne que le lieu de travail et l&#8217;enseignement.</li>



<li>§1(g)&nbsp;: L&#8217;interdiction des systèmes d&#8217;IA biométriques ne mentionne que la déduction automatique concernant la race, la sexualité, l&#8217;affiliation à une organisation syndicale, la religion, les convictions politiques et philosophiques.</li>



<li>§1(e)&nbsp;: L&#8217;interdiction de la reconnaissance faciale ne concerne que les systèmes basés sur ce qu&#8217;on appelle &#8220;moissonnage non ciblé&#8221;.</li>
</ul>



<p>Elle est donc plus nuancée qu&#8217;une liste d&#8217;interdictions générales, car le contexte et l&#8217;objectif interviennent également. La reconnaissance des émotions dans les jeux vidéo, par exemple, reste ainsi autorisée. Les considérants 15 à 17 précisent que l&#8217;IA biométrique reste autorisée pour la vérification d&#8217;identité et l&#8217;authentification. Parallèlement, des exceptions sont prévues entre autres pour l&#8217;assistance médicale et la lutte contre la criminalité, bien que ces exceptions soient soumises à un contrôle strict (article 5, §2-§7), y compris une liste des infractions pénales qui entrent en ligne de compte (annexe 2).</p>



<p>Les systèmes qui assurent la sécurité des utilisateurs ou qui sont énumérés à l&#8217;annexe 3 sont des systèmes à haut risque (article 6). Il s&#8217;agit principalement de systèmes susceptibles d&#8217;avoir un impact majeur sur les libertés, la vie, la carrière ou la santé d&#8217;un individu. Bien que cette section de l&#8217;AI Act n&#8217;entrera en vigueur qu&#8217;à l&#8217;été 2026, il convient de noter qu&#8217;il subsiste des lacunes à combler. Par exemple, la Commission doit encore fournir des lignes directrices précisant l&#8217;interprétation de cet article (article 6 §5) et se réserve le droit d&#8217;apporter des modifications même après coup (article 6 §6-§8, article 7).</p>



<h2 class="wp-block-heading">AI Act &#8211; Obligations</h2>



<p>Quiconque souhaite construire ou a construit un système à haut risque devra se conformer à une série d&#8217;obligations, qui doivent notamment permettre aux autorités compétentes d&#8217;intervenir en cas de non-respect. Les développeurs de systèmes à haut risque devront adopter certaines pratiques, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Un système itératif de gestion des risques (article 9), qui doit permettre d&#8217;identifier et d&#8217;évaluer les risques et d&#8217;atténuer les abus potentiels à l&#8217;avance. Le texte est relativement peu concret&nbsp;: il parle de &#8220;risques raisonnablement prévisibles&#8221; et de &#8220;mesures appropriées&#8221; sans autre précision. Ceci fera donc encore l&#8217;objet de discussions, mais dans la pratique, on peut déjà aujourd&#8217;hui se contenter en partie des normes récemment élaborées à cette fin, telles que la norme <a href="https://www.iso.org/standard/81230.html">ISO/IEC 42001</a>. Étant entendu qu&#8217;elle n&#8217;est pas explicitement conçue pour la loi sur l&#8217;IA Act, des mesures supplémentaires peuvent s&#8217;imposer.</li>



<li>La gestion de données de qualité (article 10), qui se résume en grande partie à la transparence sur l&#8217;origine, les limites, les marges d&#8217;erreur et la représentativité. L&#8217;utilisation de <a href="https://arxiv.org/abs/1803.09010">Data Sheets</a> (fiches de données), dont c&#8217;est l&#8217;objectif, est devenue populaire dans le secteur au cours des dernières années.</li>



<li>Fournir une documentation technique conforme aux exigences de l&#8217;annexe 4 (annexe 11 pour l&#8217;IA à usage général). Ceci est quelque peu analogue aux <a href="https://huggingface.co/docs/hub/model-cards">Model Cards</a> (cartes modèles) que l&#8217;on peut trouver sur le HuggingFace Hub, bien que la Commission européenne ne se contente pas de listes cochées et exige plus de détails, y compris sur la surveillance et le contrôle pendant la durée de vie du système.</li>



<li>L&#8217;enregistrement (article 12) ainsi que la transparence et la fourniture d’informations aux utilisateurs (article 13).</li>



<li>Le contrôle humain pendant la durée de vie du système (article 14). Si l&#8217;article 22 du RGPD en faisait déjà un droit civil, l&#8217;AI Act impose aux développeurs de prendre les mesures nécessaires à cette fin. Par exemple, il devra toujours être possible d’ignorer, de remplacer ou d&#8217;arrêter le système d&#8217;IA (article 14 §4 (d-e)).</li>



<li>Prendre des mesures &#8220;appropriées&#8221; en matière de cybersécurité, de robustesse et d&#8217;exactitude (article 15). Cet article reste lui aussi relativement vague à l&#8217;heure actuelle et fait référence à l&#8217;intention de la Commission de soutenir le développement des étalonnages nécessaires.</li>
</ul>



<p>Quiconque publie, met à disposition, incorpore dans son propre produit, importe ou distribue un système à haut risque devra prendre des mesures similaires, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Vérifier et prouver la conformité du système (article 16 §e-l, articles 40-47), établir une déclaration de conformité (annexe 5) et obtenir le marquage CE (article 48).&nbsp;</li>



<li>Utiliser un système de gestion de la qualité (article 17).</li>



<li>Conserver la documentation nécessaire pendant 10 ans après la mise en service (article 18).</li>



<li>Coopérer avec les autorités compétentes (article 21).</li>



<li>Enregistrer le système (article 49) dans une base de données européenne dédiée (article 71).</li>



<li>Désigner une personne de contact ou un représentant pour tout ce qui précède (article 22).</li>



<li>Mettre en place la surveillance nécessaire et agir en cas de problème (article 26 §5 et articles 72-73), notamment en informant l&#8217;autorité compétente.</li>
</ul>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759.jpg"><img loading="lazy" decoding="async" width="606" height="335" src="/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759.jpg" alt="" class="wp-image-20899" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759.jpg 606w, https://www.smalsresearch.be/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759-300x166.jpg 300w" sizes="auto, (max-width: 606px) 100vw, 606px" /></a><figcaption class="wp-element-caption">Cycle de vie des systèmes d&#8217;IA à haut risque dans le cadre de l&#8217;AI Act. Image (c) Union Européenne, CC-BY-4.0</figcaption></figure>



<p>Par analogie avec l&#8217;analyse d&#8217;impact relative à la protection des données du RGPD, certaines organisations, dont toutes les autorités publiques et les organisations de service public, devront réaliser une analyse d&#8217;impact sur les droits fondamentaux (<a href="https://www.technologyslegaledge.com/2024/03/fundamental-rights-impact-assessments-under-the-eu-ai-act-who-what-and-how/">Fundamental Rights Impact Assessment ou FRIA</a>) dont les résultats devront être communiqués aux <a href="https://single-market-economy.ec.europa.eu/single-market/goods/building-blocks/market-surveillance/organisation_en">régulateurs du marché compétents</a> (article 27). L&#8217;AI Office européen est déjà chargé de développer les questionnaires automatisés nécessaires à l&#8217;acquittement de cette obligation (article 27 §5).</p>



<p>On en oublierait presque que la grande majorité des systèmes d&#8217;IA sont simplement des systèmes à faible risque. À cet égard, l&#8217;AI Act est assez succinct&nbsp;: ils doivent satisfaire à des exigences minimales de transparence uniquement pour des applications spécifiques (article 50). Ainsi, l&#8217;utilisateur final doit toujours savoir qu&#8217;il interagit avec un système d&#8217;IA, et les résultats générés artificiellement doivent être clairement identifiés comme tels. La mainmise redoutée sur l&#8217;ensemble de l&#8217;industrie de l&#8217;IA est donc toute relative.</p>



<h2 class="wp-block-heading">IA à usage général</h2>



<p>Le développement récent de l&#8217;IA générative à usage général pour le texte et les images a nécessité l&#8217;ajout d&#8217;une catégorie distincte de systèmes, à savoir l&#8217;IA à usage général. La Commission européenne considère que ce type d&#8217;IA, indépendamment d&#8217;un éventuel risque élevé en matière de droits civils, peut également présenter un risque systémique (article 51). Le bien-fondé ou non de cette position fait l&#8217;objet d&#8217;un <a href="https://quillette.com/2024/07/02/superintelligence-10-years-on-nick-bostrom-ai-safety-agi/">débat acharné </a>dans les cercles techniques et philosophiques, mais l&#8217;UE adopte une approche prudente et prévoit un bâton juridique.</p>



<p>La Commission européenne se donne la liberté de déterminer les systèmes qui présentent un tel risque (article 51 §1). Bien qu&#8217;elle affirme appliquer des critères objectifs pour ce faire (annexe 13), il n&#8217;y a pas de véritable formule. Néanmoins, l&#8217;article 51 §2 fixe étonnamment une limite très concrète, à savoir qu&#8217;à partir du moment où son entraînement requiert une puissance de calcul de 10<sup>25</sup> FLOPS, un modèle d’IA à usage général est par définition considéré comme présentant un risque systémique. Cela correspond approximativement à un temps d&#8217;entraînement d&#8217;un an sur un cluster de 4000 GPU de type Nvidia RTX4090 (avec une puissance de calcul de 82&#215;10<sup>12</sup> FLOPS). Pour éviter que tout cela ne devienne obsolète demain, la Commission se réserve le droit d&#8217;adapter ces valeurs à l&#8217;avenir en fonction des évolutions du domaine (article 51 §3).</p>



<p>Outre les exigences minimales de l&#8217;article 50 et indépendamment de la classification des risques, l&#8217;IA à usage général est soumise à son propre ensemble d&#8217;exigences en matière de documentation technique (article 53, annexe 11), qui seront un peu élargies en présence d&#8217;un risque systémique (article 55). Les constructeurs de modèles d’IA à usage général sans risque systémique publiés sous licence libre sont exemptés de certaines obligations (article 53 §2, voir également les considérants 102 à 104) et ne sont pas non plus tenus de désigner une personne de contact ou un représentant (article 54 § 6).</p>



<h2 class="wp-block-heading">AI Office (Bureau de l&#8217;IA)</h2>



<p>L&#8217;AI Act devra également être appliqué. Un rôle majeur dans ce cadre sera joué par <a href="https://digital-strategy.ec.europa.eu/en/policies/ai-office">l&#8217;AI Office</a> (<em>Bureau de l&#8217;IA</em>, article 64), qui devrait être à l&#8217;AI Act ce que le <a href="https://www.edps.europa.eu/">Contrôleur européen de la protection des données</a> est au RGPD. L&#8217;AI Office est actuellement mis en place à grande vitesse, les premières dispositions entrant en vigueur début 2025. Outre la responsabilité de compléter une série d&#8217;articles en suspens de l&#8217;IA Act, l&#8217;AI Office se verra confier la compétence exclusive de la surveillance de l&#8217;IA à usage général (article 75).</p>



<p><a href="https://digital-strategy.ec.europa.eu/"></a>En pratique, l&#8217;AI Office fera partie de la <a href="https://digital-strategy.ec.europa.eu/">DG CONNECT</a>, commencera avec 140 collaborateurs et sera dirigé par <a href="https://www.euronews.com/next/2024/05/29/ai-office-set-up-announced-lucilla-sioli-to-be-in-charge">Lucilla Sioli</a>. Il sera soutenu dans son fonctionnement par le <a href="https://algorithmic-transparency.ec.europa.eu/">Centre européen pour la transparence algorithmique (ECAT)</a>, un <a href="https://digital-strategy.ec.europa.eu/en/news/commission-hosts-high-level-meeting-upcoming-eus-ai-board-drive-ai-act-implementation-forward">Comité AI</a> (article 65), un forum consultatif des parties prenantes (article 67) et un groupe scientifique d’experts indépendants (article 68).</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002.jpg"><img loading="lazy" decoding="async" width="800" height="592" src="/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002.jpg" alt="" class="wp-image-20902" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002.jpg 800w, https://www.smalsresearch.be/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002-300x222.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002-768x568.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">Organigramme de l&#8217;AI Office de l&#8217;UE. Image (c) Union Européenne, CC-BY-4.0</figcaption></figure>



<p>Des régulateurs doivent également être désignés au niveau national (article 70). Ils devront travailler en étroite collaboration avec l&#8217;AI Office de l&#8217;UE et avec les régulateurs industriels et sectoriels existants, qui aujourd&#8217;hui sont déjà responsables du marquage CE, par exemple. <a href="https://www.autoriteitpersoonsgegevens.nl/actueel/ap-en-rdi-toezicht-op-ai-systemen-vraagt-samenwerking-en-moet-snel-geregeld-worden">Aux Pays-Bas, l&#8217;Autoriteit Persoonsgegevens joue clairement un rôle de pionnier </a>dans la mise sur pied d&#8217;une autorité néerlandaise de l&#8217;IA, qui sera probablement établie dans le giron de l&#8217;Autoriteit Persoonsgegevens. En Belgique, la situation reste <a href="https://data-en-maatschappij.ai/nieuws/gastblog-waar-blijft-de-belgische-toezichthouder-voor-algoritmes">calme</a>, même si le temps presse. En effet, on ne peut pas non plus engager n&#8217;importe qui pour occuper ces fonctions assez spécialisées.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Il est important de retenir que l&#8217;AI Act n&#8217;impose aucune restriction aux systèmes d&#8217;IA à faible risque, à l&#8217;exception de l&#8217;IA à usage général qui requiert la transparence nécessaire. Ce n&#8217;est que pour les systèmes à risques élevés ou systémiques et mis en production qu&#8217;interviennent des exigences strictes et la nécessité de se conformer aux réglementations pertinentes. Même dans ce cas, de nombreuses mesures d&#8217;atténuation offrent une marge de manœuvre supplémentaire au développement interne, aux initiatives open source, à la science, à la défense, etc.</p>



<p>Dans une certaine mesure, l&#8217;AI Act se veut concret, par une énumération détaillée des attentes et la mention de diverses précisions dans les considérants et les annexes. Il y parvient en partie et devient ainsi assez technique, de sorte qu&#8217;un juge concerné devra apprendre ce que sont les FLOPS. Parallèlement, il subsiste de nombreuses lacunes à combler et il reste à voir où le nouvel AI Office placera la barre dans les futures Commissions. La possibilité de modifier ultérieurement l&#8217;IA Act a été envisagée ici et là. La version actuelle de l&#8217;IA Act ne sera donc certainement pas la dernière.</p>



<p>Enfin, en Belgique, il ne s&#8217;agit pas d&#8217;attendre trop longtemps pour désigner et organiser le(s) régulateur(s) national(aux) pour l&#8217;AI Act si l&#8217;on veut être un tant soit peu en phase avec le reste de l&#8217;Europe. Pour obtenir des outils pratiques qui peuvent, entre autres, vous aider à vous mettre en conformité, vous pouvez d&#8217;ores et déjà consulter la base de données du <a href="https://data-en-maatschappij.ai/tags/ai-act">Kenniscentrum Data &amp; Maatschappij</a>. De nombreux autres documents y seront certainement publiés lorsque l&#8217;AI Act entrera effectivement en vigueur.</p>



<p>______________________</p>



<p><em><em>Cette contribution a été soumise par Joachim Ganseman, consultant IT chez Smals Research. Elle a été rédigée en son nom propre et ne prend pas position au nom de Smals.</em></em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Een eerste kennismaking met de AI Act</title>
		<link>https://www.smalsresearch.be/een-eerste-kennismaking-met-de-ai-act/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Mon, 15 Jul 2024 02:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[sustainability]]></category>
		<guid isPermaLink="false">/?p=20654</guid>

					<description><![CDATA[Meer over de Europese AI Act, de laatste hoeksteen van een reeks grootschalige wetgevende initiatieven die de digitale economie in Europa in een gereguleerd framework moeten gieten.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/premier-tour-dhorizon-de-lai-act/">en français</a>.</em></p>



<p><em>Noot: dit is een populariserend artikel over toekomstige regelgeving, gebaseerd op de <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:L_202401689">officiële publicatie dd. 12/07/2024</a>. Wend u steeds tot een jurist voor professioneel juridisch advies. </em></p>



<p>De <a href="https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai">Europese AI Act</a> (in het Nederlands de <em>verordening artificiële intelligentie</em>) is een hoeksteen van een reeks grootschalige wetgevende initiatieven die de digitale economie in Europa in een gereguleerd framework moeten gieten. Ze is daarmee complementair met eerdere wetgeving die bepaalde aspecten van het AI-gebeuren beïnvloedt, zoals de <a href="https://eur-lex.europa.eu/eli/reg/2016/679/oj">GDPR (AVG)</a>, de <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA) en Digital Markets Act (DMA)</a>, de <a href="https://digital-strategy.ec.europa.eu/en/policies/data-act">Data Act</a>, de <a href="https://digital-strategy.ec.europa.eu/en/policies/data-governance-act">Data Governance Act</a>, de <a href="https://digital-strategy.ec.europa.eu/en/policies/european-chips-act">CHIPS Act</a> en de voorgestelde <a href="https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act">Cyber Resilience Act</a> . Na lang onderhandelen werd de AI Act in maart 2024 goedgekeurd door het Europees parlement en in mei door de Europese raad. De publicatie in het Official Journal of the European Union, zeg maar het Europese Staatsblad, vond plaats op <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:L_202401689">12 juli 2024</a>, waarna de eerste regels begin 2025 van kracht worden &#8211; zie ook <a href="https://artificialintelligenceact.eu/developments/">deze tijdslijn</a>.</p>



<h2 class="wp-block-heading">GDPR bis?</h2>



<p>De volledige (Engelstalige) tekst van de AI Act, inclusief alle voorbeschouwingen en bijlagen, is een fenomenale <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202401689">144 bladzijden lang</a> &#8211; gelukkig zijn er <a href="https://www.stibbe.com/publications-and-insights/the-eu-artificial-intelligence-act-our-16-key-takeaways">her en der</a> al <a href="https://artificialintelligenceact.eu/high-level-summary/">goede samenvattingen</a> te vinden. Daarmee is ze bijna 2 keer langer dan de &#8220;slechts&#8221; <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679">88 pagina&#8217;s tellende GDPR</a>. Van die laatste is de impact enorm: elke organisatie die persoonsgegevens verwerkt &#8211; een personeelsadministratie of klantenbestand hebben is voldoende &#8211; kreeg te maken met DPO&#8217;s, verwerkingsregisters, en rechtsgronden voor gegevensverwerking. Elk land moest ook een <a href="https://www.gegevensbeschermingsautoriteit.be/">Gegevensbeschermingsautoriteit</a> opzetten met de bevoegdheid om <a href="https://www.dailybits.be/item/overzicht-gdpr-boetes-rechtszaken/#BE">inbreuken te beboeten</a>.</p>



<p>De GDPR bracht ook heel wat onzekerheid met zich mee, met name door haar veelvuldig gebruik van termen die voor interpretatie vatbaar zijn (&#8220;appropriate&#8221;, &#8220;adequate&#8221;, &#8220;suitable&#8221;, &#8220;sufficient&#8221;, &#8230;). De nood om die opnieuw te concretiseren voor elke voorliggende zaak, is de voedingsbodem voor wat ondertussen een kleine juridische industrie kan genoemd worden. De AI Act poogt om iets meer houvast te geven, door een meer technische toer op te gaan. Zo bevat ze een lijst Annexen met praktische opsommingen over wat verwacht wordt als gevraagd wordt naar documentatie, conformiteit, transparantie e.d.</p>



<p>De AI Act begon met een compacter voorstel van <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:52021PC0206">125 bladzijden (inclusief bijlagen)</a>. Tijdens de onderhandelingen zagen we echter de razendsnelle opkomst van generatieve AI en de Large Language Models. Dat noodzaakte om een en ander te herzien en toe te voegen, zoals een nieuw hoofdstuk (5) over <em>General Purpose AI</em>, waartoe LLMs gerekend kunnen worden. Van andere onderdelen kan men zich dan weer afvragen wat ze in de AI Act komen doen, zoals een systeem van &#8220;Regulatory Sandboxes&#8221; (Art.57) dat regulatoren moet toelaten om innovatie te faciliteren. Sommige artikels zijn wel erg cryptisch verwoord, zoals de sectie over &#8220;Notified Conformity Assessment Bodies&#8221; (Art.29), waarmee men eigenlijk <a href="https://www.hiig.de/en/eu-ai-act/">gewoon auditors bedoelt</a>. Er zijn dan ook <a href="https://www.euractiv.com/section/digital/news/the-long-and-winding-road-to-implement-the-ai-act/">kritische stemmen</a> te horen, die vrezen dat de resulterende optelsom aan maatregelen vooral een ingewikkeld kluwen is geworden.</p>



<h2 class="wp-block-heading">De AI Act &#8211; basics</h2>



<p>De AI Act is gericht op AI-ontwikkelaars en -aanbieders, en dat eigenlijk pas zodra ze AI-systemen publiceren en ter beschikking stellen van derden. Alle in-house ontwikkeling en testing die daaraan vooraf gaat, is expliciet uitgezonderd (Art.2§8). De AI Act grijpt ook niet in op wat je persoonlijk in niet-professionele context doet (Art.2§10). Wetenschappelijk onderzoek (Art.2§6) en militaire toepassingen (Art.2§3) tellen ook niet mee. Dat betekent natuurlijk niet dat in al die gevallen alles mag: uiteraard blijft andere bestaande wetgeving gewoon van kracht. De rechten van burgers werden al beschermd door de <a href="https://gdpr-info.eu/art-22-gdpr/">GDPR met o.a. haar Art.22</a>, en de auteursrechtenwetgeving blijft auteurs beschermen.</p>



<p>De gehanteerde definitie van AI is dan weer opvallend breed, en is geleend van de <a href="https://oecd.ai/en/wonk/ai-system-definition-update">OESO</a>: samengevat, &#8220;AI systems infer, from their input, how to generate outputs&#8221; (Art.3 + Overweging 12). Zowat alle machine learning valt daaronder. In andere definities leest men al eens dat er een cognitief aspect aan AI verbonden is (er moet iets &#8220;herkend&#8221; worden), maar daar is hier geen sprake van. Ook over specifieke technieken wordt met geen woord gerept: al wat adaptief leert of enigszins autonoom kan reageren op de omgeving, valt er haast altijd onder. Dit gaat dus ook over systemen die je al jarenlang kent, zonder er bij stil te staan dat er AI achter zit: spamfilters, aanbevelingen op websites, zelfs weersvoorspellingen.</p>



<p>De AI Act definieert eerst en vooral een lijst met verboden toepassingen (Art.5), die begin 2025 al van kracht zal worden. Deze lijst is een limitatieve opsomming, wat in principe ook betekent dat wat niet expliciet verboden is, toegelaten is (tenzij verhinderd door andere wetten). Het is daarom interessant om in detail te kijken wat wel en niet in die lijst staat, en met welke bijkomende bepalingen. Zo lezen we:</p>



<ul class="wp-block-list">
<li>§1(f): Het verbod op emotieherkenning vermeldt enkel de werkvloer en het onderwijs,</li>



<li>§1(g): Het verbod op biometrische AI-systemen vermeldt enkel de automatische afleiding van ras, seksualiteit, vakbondslidmaatschap, religie, politieke en filosofische overtuiging, </li>



<li>§1(e): Het verbod op gezichtsherkenning heeft het enkel over systemen op basis van &#8220;untargeted scraping&#8221;, </li>
</ul>



<p>Het is genuanceerder dan een lijstje algemene verbodsbepalingen, want ook context en doel spelen een rol. Emotieherkenning in bijvoorbeeld computergames blijft op die manier dus toegelaten. Overwegingen 15-17 preciseren dat biometrische AI toegelaten blijft voor identiteitsverificatie en authenticatie. Daarnaast zijn er ook enkele uitzonderingen ingebouwd voor o.a. de medische hulpverlening en de criminaliteitsbestrijding &#8211; al worden die uitzonderingen wel onder een streng toezicht geplaatst (Art.5§2-§7), inclusief een lijst van criminaliteit die ervoor in aanmerking komt (Annex 2).</p>



<p>Systemen die instaan voor de veiligheid van gebruikers, of die opgesomd zijn in Annex 3, zijn hoogrisico-systemen (Art.6). Het gaat hierbij vooral om systemen die een grote impact kunnen hebben op iemands vrijheden, levensloop, carrière of gezondheid. Hoewel dit onderdeel van de AI Act pas in voege zal treden in de zomer van 2026, valt het op dat er nog verschillende gaten in te vullen zijn. Zo moet de Commissie nog met een reeks verduidelijkende richtlijnen komen voor de interpretatie van dit artikel (Art.6§5), en behoudt ze zich het recht voor om ook achteraf nog wijzigingen aan te brengen (Art.6§6-§8, Art.7).</p>



<h2 class="wp-block-heading">AI Act &#8211; verplichtingen </h2>



<p>Wie een hoogrisicosysteem wil bouwen of gebouwd heeft, zal aan een reeks verplichtingen moeten voldoen, die o.a. moeten toelaten dat de bevoegde autoriteiten kunnen ingrijpen als het ontspoort. Ontwikkelaars van hoogrisicosystemen zullen bepaalde praktijken moeten adopteren, waaronder:</p>



<ul class="wp-block-list">
<li>Een iteratief risicobeheerssysteem (Art.9), dat moet toelaten de risico&#8217;s te inventariseren, in te schatten, en potentieel misbruik op voorhand te mitigeren. Concreter dan dat wordt het niet gemaakt: de tekst spreekt van &#8220;reasonably foreseeable risks&#8221; en &#8220;appropriate measures&#8221; zonder verdere specificatie. Dit zal dus nog voor wat discussie zorgen, maar in de praktijk kan men zich vandaag al deels behelpen met standaarden die recent voor dit doel ontwikkeld zijn, zoals <a href="https://www.iso.org/standard/81230.html">ISO/IEC 42001</a> &#8211; met dien verstande dat die niet expliciet voor de AI Act is gemaakt en bijkomende maatregelen nodig kunnen zijn.</li>



<li>Kwalitatief databeheer (Art.10), wat er grotendeels op neerkomt dat er transparantie moet zijn over de oorsprong, beperkingen, foutenmarges en representativiteit. Het gebruik van &#8220;<a href="https://arxiv.org/abs/1803.09010">Data Sheets</a>&#8220;, die dit beogen, was de laatste jaren in de sector sowieso al populair geworden.</li>



<li>Het voorzien van technische documentatie volgens de vereisten in Annex 4 (Annex 11 voor General Purpose AI). Dit is enigszins analoog met de <a href="https://huggingface.co/docs/hub/model-cards">Model Cards</a> zoals men die kan vinden op de HuggingFace Hub, al neemt de Europese Commissie geen genoegen met afgevinkte lijstjes en vraagt ze meer detail, onder andere over monitoring en controle tijdens de levensduur van het systeem.</li>



<li>Het voorzien van logging (Art.12) en transparante informatievoorziening naar de gebruikers toe (Art.13)</li>



<li>Menselijk overzicht tijdens de levensduur van het systeem (Art.14). Waar GDPR art.22 daar al een burgerrecht van maakte, verplicht de AI Act aan de ontwikkelaars om de nodige maatregelen daartoe te nemen. Er zal bijvoorbeeld altijd de mogelijkheid moeten zijn om het AI-systeem te negeren, te overrulen, of te stoppen (Art.14§4(d-e)).</li>



<li>Het nemen van &#8220;appropriate&#8221; maatregelen inzake cybersecurity, robuustheid en accuraatheid (Art.15). Ook dit artikel blijft momenteel nog relatief vaag en verwijst naar de intentie van de Commissie om de ontwikkeling van de nodige benchmarks te ondersteunen. </li>
</ul>



<p>Wie een hoogrisicosysteem publiceert, ter beschikking stelt, verwerkt in een eigen product, importeert of distribueert, zal gelijkaardige maatregelen moeten nemen, waaronder: </p>



<ul class="wp-block-list">
<li>De conformiteit van het systeem controleren en bewijzen (Art.16§e-l, Art. 40-47), een conformiteitsverklaring opstellen (Annex 5), en CE markering bekomen (Art.48)</li>



<li>Een kwaliteitsmanagementsysteem benutten (Art.17)</li>



<li>De nodige documentatie tot 10 jaar na ingebruikname bijhouden (Art.18)</li>



<li>Samenwerken met de bevoegde autoriteiten (Art.21) </li>



<li>Het systeem registreren (Art.49) in een speciaal daartoe opgezette EU database (Art.71)</li>



<li>Voor al het bovenstaande een contactpersoon of vertegenwoordiger aanduiden (Art.22)</li>



<li>De nodige monitoring opzetten en actie ondernemen wanneer het misloopt (Art.26§5, Art.72-73), waaronder het inlichten van de bevoegde autoriteit.</li>
</ul>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759.jpg"><img loading="lazy" decoding="async" width="606" height="335" src="/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759.jpg" alt="" class="wp-image-20899" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759.jpg 606w, https://www.smalsresearch.be/wp-content/uploads/2024/07/ai_lifecycle_visual_7FC0D14E-A775-A92E-DE5A38FDB7C238EB_75759-300x166.jpg 300w" sizes="auto, (max-width: 606px) 100vw, 606px" /></a><figcaption class="wp-element-caption">Lifecycle voor hoog-risico AI systemen onder de AI Act. Image (c) European Union, CC-BY-4.0</figcaption></figure>



<p>Naar analogie met Gegevensbeschermingseffectbeoordeling (Data Protection Impact Assessment &#8211; DPIA) uit de GDPR, zullen sommige organisaties, waaronder alle overheidsinstanties en organisaties van publieke dienstverlening, een <a href="https://www.technologyslegaledge.com/2024/03/fundamental-rights-impact-assessments-under-the-eu-ai-act-who-what-and-how/">Fundamental Rights Impact Assessment of FRIA</a> moeten uitvoeren, waarvan de resultaten aan de <a href="https://single-market-economy.ec.europa.eu/single-market/goods/building-blocks/market-surveillance/organisation_en">bevoegde marktregulatoren</a> meegedeeld moeten worden (Art. 27). Het Europese AI Office krijgt alvast de taak om voor deze verplichting de nodige geautomatiseerde vragenlijsten te ontwikkelen (Art. 27§5).</p>



<p>Men zou bijna vergeten dat verreweg de meeste AI-systemen gewoon laag-risico systemen zijn. Daarover is de AI Act vrij kort: die moet enkel voor specifieke toepassingen voldoen aan minimale transparantievereisten (Art.50). Zo moet de eindgebruiker altijd weten wanneer die met een AI-systeem interageert, en moet artificieel gegenereerde output duidelijk als dusdanig gemarkeerd worden. Met die gevreesde wurggreep rond de gehele AI-industrie valt het dus eigenlijk best wel mee.</p>



<h2 class="wp-block-heading">General purpose AI</h2>



<p>De recente ontwikkeling van algemeen inzetbare generatieve AI voor tekst en afbeeldingen noopte tot de toevoeging van een aparte categorie aan systemen: General Purpose AI (GPAI). De Europese Commissie is van mening dat dit soort AI, onafhankelijk van een eventueel hoog risico inzake burgerrechten, ook een systemisch risico met zich mee kan brengen (Art.51). Of dat gegrond is of niet, is in zowel technische als filosofische kringen onderwerp van <a href="https://quillette.com/2024/07/02/superintelligence-10-years-on-nick-bostrom-ai-safety-agi/">fel debat</a>, maar de EU neemt het zekere voor het onzekere en voorziet een juridische stok achter de deur.</p>



<p>De Commissie geeft zichzelf de vrijheid om te beslissen welke systemen zo&#8217;n risico manifesteren (Art.51§1). Hoewel ze zich voorneemt daarvoor objectieve criteria te benutten (Annex 13), is er geen vaste formule. Of toch: er is verrassend genoeg 1 opvallend concrete grenswaarde vastgelegd in Art.51§2: vanaf dat de training 10<sup>25</sup> FLOPs aan rekenkracht vergt, wordt een GPAI per definitie aanzien als systemisch risicovol. Dit komt ongeveer overeen met een trainingstijd van 1 jaar op een cluster van 4000 GPUs van het type Nvidia RTX4090 (met 82*10<sup>12</sup> FLOPs aan rekenkracht). Om te vermijden dat dit alles morgen al achterhaald is, behoudt de Commissie zich het recht voor om deze waarden in de toekomst aan te passen aan de evoluties in het domein (Art.51§3).</p>



<p>General Purpose AI wordt, naast de minimale vereisten van Art.50, en ongeacht de risicoclassificatie, onderworpen aan een eigen reeks technische documentatieverplichtingen (Art. 53, Annex 11), die nog wat uitgebreid worden wanneer een systemisch risico aanwezig is (Art. 55). Bouwers van GPAI modellen zonder systemisch risico die onder vrije (<sup data-fn="f4906311-978e-4fea-876e-d0742b6b3186" class="fn"><a href="#f4906311-978e-4fea-876e-d0742b6b3186" id="f4906311-978e-4fea-876e-d0742b6b3186-link">1</a></sup>) open-source licenties worden vrijgegeven, zijn van sommige verplichtingen uitgezonderd (Art.53§2, zie ook Overwegingen 102-104), en hoeven ook geen contactpersoon of vertegenwoordiger aan te duiden (Art.54§6).  </p>



<h2 class="wp-block-heading">Het AI Office</h2>



<p>De AI Act zal ook afgedwongen moeten worden. Een grote rol daarbij is weggelegd voor het <a href="https://digital-strategy.ec.europa.eu/en/policies/ai-office">Europese AI Office</a> (NL: <em>AI-bureau</em>, Art.64), dat voor de AI Act moet zijn wat de <a href="https://www.edps.europa.eu/">European Data Protection Supervisor</a> is voor de GDPR. Het AI Office wordt momenteel aan sneltempo in de steigers gezet, want begin 2025 treden de eerste bepalingen in voege. Naast de verantwoordelijkheid om nog een reeks openstaande onderdelen van de AI Act in te vullen, zal ze ook exclusief bevoegd worden voor het toezicht op General Purpose AI (Art.75).</p>



<p>Het AI Office wordt in de praktijk onderdeel van <a href="https://digital-strategy.ec.europa.eu/">DG CONNECT</a>, zal van start gaan met 140 medewerkers en geleid worden door <a href="https://www.euronews.com/next/2024/05/29/ai-office-set-up-announced-lucilla-sioli-to-be-in-charge">Lucilla Sioli</a>. Het zal voor haar werking ondersteund worden door het <a href="https://algorithmic-transparency.ec.europa.eu/">Centrum voor Algoritmische Transparantie (ECAT)</a>, een <a href="https://digital-strategy.ec.europa.eu/en/news/commission-hosts-high-level-meeting-upcoming-eus-ai-board-drive-ai-act-implementation-forward">AI Board</a> (Art.65), een adviserend forum van belanghebbenden (Art.67), en een panel van onafhankelijke wetenschappers (Art.68).</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002.jpg"><img loading="lazy" decoding="async" width="800" height="592" src="/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002.jpg" alt="" class="wp-image-20902" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002.jpg 800w, https://www.smalsresearch.be/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002-300x222.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2024/07/AI-NEW-OFFICE-organigramme-002-768x568.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">Organigram van het EU AI Office. Image (c) European Union, CC-BY-4.0</figcaption></figure>



<p>Ook nationaal moeten er regulatoren worden aangeduid (Art.70). Deze zullen nauw moeten samenwerken met het EU AI Office en met de reeds bestaande industriële en sectorale regulatoren, die bijvoorbeeld vandaag al voor CE-markeringen bevoegd zijn. <a href="https://www.autoriteitpersoonsgegevens.nl/actueel/ap-en-rdi-toezicht-op-ai-systemen-vraagt-samenwerking-en-moet-snel-geregeld-worden">In Nederland speelt de Autoriteit Persoonsgegevens een duidelijke voortrekkersrol</a> in de uitwerking van een Nederlandse AI-autoriteit, die daar waarschijnlijk in de schoot van de Autoriteit Persoonsgegevens zal worden opgericht. In België blijft het ondertussen <a href="https://data-en-maatschappij.ai/nieuws/gastblog-waar-blijft-de-belgische-toezichthouder-voor-algoritmes">stil</a>, hoewel de tijd dringt &#8211; je kan immers ook niet eender wie aanwerven om die vrij gespecialiseerde rollen in te vullen.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Het is belangrijk om te onthouden dat de AI Act geen beperkingen oplegt aan AI-systemen die weinig risico inhouden &#8211; met uitzondering van General Purpose AI waarvan de nodige transparantie wordt gevraagd. Alleen voor systemen die hoge of systemische risico&#8217;s met zich meebrengen en in productie worden gezet, komen er strikte vereisten en de noodzaak tot conformiteit met relevante reguleringen. Ook dan zijn er heel wat verzachtende maatregelen die de interne ontwikkeling, open source initiatieven, wetenschap, defensie enz. extra ademruimte geven.</p>



<p>Tot op zekere hoogte probeert de AI Act concreet te zijn, door in detail op te sommen wat er verwacht wordt en een resem verduidelijkingen in de Overwegingen en Annexen op te nemen. Ze slaagt daar deels in en wordt zo nogal technisch &#8211; een betrokken rechter zal moeten leren wat FLOPs zijn. Tegelijk zijn er nog heel wat gaten in te vullen, waarbij het afwachten wordt waar het nieuwe AI Office onder toekomstige Commissies de lat zal leggen. Op verschillende plekken werd de mogelijkheid voorzien om de AI Act later te amenderen. De huidige versie van de AI Act zal dus zeker niet de laatste zijn.</p>



<p>Tenslotte mogen we in België zeker niet te lang meer wachten met het aanduiden en organiseren van de nationale toezichthouder(s) voor de AI Act, als we enigszins mee willen zijn met de rest van Europa. Voor praktische tools die o.a. kunnen helpen om conform te zijn, kan je vandaag al zoeken in de database van het <a href="https://data-en-maatschappij.ai/tags/ai-act">Kenniscentrum Data &amp; Maatschappij</a>. Daar zal zeker nog veel meer materiaal verschijnen eens de AI Act effectief in werking treedt.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>


<ol class="wp-block-footnotes"><li id="f4906311-978e-4fea-876e-d0742b6b3186"> In de ontwerptekst was het Engelse &#8220;free&#8221; <a href="https://tweakers.net/reviews/12020/hoe-de-eu-ai-hoopt-te-reguleren-ict-jurist-engelfriet-over-de-ai-act.html">oorspronkelijk foutief vertaald als &#8220;gratis&#8221;</a>. In de publicatie in het Official Journal is deze vertaalfout alsnog gecorrigeerd en staat er &#8220;vrij&#8221;. <a href="#f4906311-978e-4fea-876e-d0742b6b3186-link" aria-label="Jump to footnote reference 1"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
