Présentation du problème

GitHub est largement utilisé pour la collaboration et la gestion de code, mais son paradigme est-il toujours adapté au monde actuel de l'ingénierie logicielle ? La réponse est non. Les nouvelles technologies et les méthodes de développement logiciel ont changé la façon dont nous travaillons, et les outils que nous utilisons doivent évoluer pour répondre à ces nouveaux besoins.

Le changement dans l'ingénierie logicielle

L'ingénierie logicielle a connu une évolution significative ces dernières années. Les nouvelles technologies telles que les modèles de langage et les agents ont permis de générer du code de manière plus efficace et plus rapide. Cependant, ces avancées ont également mis en évidence les limites des outils et des méthodes actuelles. Les bouteilles-neck de la gestion de code, de la revue de code et de la mise en production sont de plus en plus évidentes.

Collaboration vs infrastructure

GitHub est souvent considéré comme un outil de collaboration, mais il est également utilisé comme un outil d'infrastructure. Cependant, ces deux aspects ne sont pas nécessairement compatibles. La collaboration est centrée sur les interactions humaines, tandis que l'infrastructure est centrée sur les systèmes et les processus automatisés. Pour répondre aux besoins actuels de l'ingénierie logicielle, nous devons repenser notre approche et nous concentrer sur les primitives d'infrastructure qui permettent une livraison de logiciels à haute performance.

Les primitives d'infrastructure pour la livraison de logiciels

Pour construire une nouvelle approche de livraison de logiciels, nous devons identifier les primitives d'infrastructure nécessaires. Ces primitives incluent : contrôle de version pour une histoire immuable du code, exécution pour des calculs isolés et performants, artefacts pour des sorties reproductibles, mise en cache pour réutiliser les travaux déterministes, identité pour prouver qui ou quoi a produit le code, et politique pour des règles machine-enforceables pour la qualité, la sécurité et la conformité. Ces primitives ne sont pas des fonctionnalités d'un outil de développement, mais des éléments fondamentaux de l'infrastructure de livraison de logiciels.