Le génie exauce vos voeux mais il ne prédit pas votre avenir
Ces derniers jours, on n'a pas pu y échapper. Le projet ArtCraft a publié sur GitHub une série de clones open source de logiciels commerciaux bien connus : PhotoCraft pour Photoshop, VectorCraft pour Illustrator, FilmCraft pour Premiere, et même WordCraft ou GridCraft pour Word et Excel. Le tout écrit en Rust, généré par des agents IA, et présenté comme une réimplémentation "clean room", sans une ligne de code de l'original.
Sur les réseaux, tout le monde s'extasie sur la réplication quasi identique de l'interface. Pour les comportements, c'est pas encore ça : les premiers testeurs remontent des bugs de base. Mais "ça va s'améliorer, vous allez voir". Et donc, la conclusion fuse : le logiciel commercial est terminé. Désormais, on aura systématiquement des clones gratuits.
Je pense que ce raisonnement prend un raccourci un peu trop rapide. Ce qu'on a vu, ce sont des clones de versions bien précises, produits en "one shot". Rien ne permet de prédire que cette approche est tenable dans la durée. Et c'est là que ça devient intéressant.
Clean room, ou rien
Pour rester dans un cadre légal, le clonage de logiciel doit passer par une approche "clean room". Il est illégal de réutiliser le code d'une application pour créer un clone. En revanche, on a le droit d'étudier le logiciel original, et de produire des specs à partir de cette étude. Mais la réalisation du clone doit partir des specs. Si on fait écrire le clone par un agent IA, celui-ci doit travailler depuis les specs et n'avoir jamais eu accès au code original.
Historiquement, le reverse engineering et la production de specs étaient l'étape la plus compliquée de la démarche. Avec l'IA, tout change. Même sur un logiciel très complexe, dériver des specs à partir de son étude est une activité où les IA excellent. Je ne me fais donc aucun souci pour la production de specs, ni même pour l'évolution de ces specs quand le logiciel original évolue.
La création du clone, c'est une autre paire de manches. Si les specs décrivent un comportement précis, on peut espérer un clone très proche de l'original. Mais des specs, ce n'est pas du code. Arriver à un logiciel sans bug prendra un peu plus de temps. L'IA va bien sûr aider à aller beaucoup plus vite qu'en codant à la main, mais elle est nettement moins performante que pour le reverse engineering. Il restera de l'itération et de l'intervention humaine pour arriver au bout.
Rien d'insurmontable, donc. La première version est un problème résolu, ou presque.
Le vrai problème : les versions suivantes
Que se passe-t-il quand le logiciel original évolue et qu'on veut une nouvelle version de notre clone ?
Option 1 : on code tout en partant de zéro, depuis les nouvelles specs. On se retrouve avec un coût incompressible pour chaque version, et qui va peut-être même augmenter au fil du temps.
Option 2 : on part du code de la première version et on fait calculer par l'IA les modifications de code correspondant aux modifications de specs.
Cette option 2 semble nettement moins coûteuse, mais elle vient avec un piège. Les specs d'un logiciel ne décrivent ni sa structure interne, ni les choix de conception qui ont été faits. Si les choix faits dans le clone sont très différents de ceux faits dans l'original, conserver la même base de code pour suivre un chemin pour lequel elle n'a pas été prévue peut rapidement devenir un enfer.
Dans un de ses récents talks, Software Engineering in the Age of AI, Kent Beck explique très bien comment, à un instant T, un code se décompose en "features" (les fonctionnalités implémentées) et en "futures" (les possibilités existantes pour le futur sans avoir à tout casser).
Le problème du code écrit par un "genie" (c'est le nom que Beck donne aux agents IA), c'est que la partie "future" est très compliquée à exprimer. On n'a pas beaucoup d'outils pour ça, si ce n'est quelques principes de conception. Le genie va dans le sens de l'implémentation des features. Il sait très bien le faire, mais il ignore le futur. Comme le dit Beck, le nom "genie" est bien choisi : il répond à tous vos voeux, mais vous n'obtenez pas toujours ce que vous pensiez obtenir.
Les cloneurs ne savent pas où ils vont
Et donc, comment ça impacte la création de clones logiciels en clean room ?
Les éditeurs de logiciels commerciaux, eux aussi, utilisent des genies pour aller plus vite. Mais ils ont un avantage décisif : ils savent où ils veulent aller, là où les cloneurs ne font que suivre. Ils peuvent orienter la conception de leur logiciel dans le sens où les évolutions futures qu'ils ont en tête seront facilitées. Et ça, le genie cloneur ne peut pas le deviner, pas plus que les choix de conception de l'original, d'ailleurs, puisque les specs n'en disent rien.
C'est pour ça que je suis persuadé que ce clonage est un voyage risqué. Pour produire une première version proche du niveau d'un logiciel commercial, l'approche a d'immenses mérites. Mais si on veut des logiciels pérennes, il faut savoir se libérer de l'original et inventer son propre chemin.
Le genie exauce vos voeux. Encore faut-il savoir quoi souhaiter.