Quand le logiciel n’est pas une « chaîne d’approvisionnement »
Daniel Appelquist
15 février 2023
0 minutes de lectureNote de la rédaction : Dans cette tribune, Daniel Appelquist, directeur de la stratégie Open Source et Open Standards chez Snyk, revient sur l’origine de l’expression « sécurité de la chaîne d’approvisionnement » et s’interroge sur sa pertinence pour le développement actuel de logiciels open source.
Cette réflexion m’est venue après avoir lu un post de Thomas Depierre sur Mastodon :

Ce post aborde un sujet qui me préoccupe depuis quelque temps. En matière de sécurité logicielle, nous consacrons beaucoup de temps à parler de la chaîne d’approvisionnement logicielle et de notions connexes, comme la nomenclature logicielle (SBOM). Cette métaphore est issue du vocabulaire industriel. Les personnes qui s’intéressent à l’économie et au fonctionnement de la production connaissent bien le concept de chaîne d’approvisionnement. Il est donc compréhensible que nombre de professionnels du secteur aient adopté cette métaphore pour parler des logiciels, en particulier des logiciels open source et de leurs dépendances imbriquées. C’est un raccourci pour expliquer le développement logiciel moderne à ceux qui ne connaissent pas forcément des notions comme les dépendances.
Cependant, comme beaucoup de métaphores utiles, elle manque de précision et ne peut être étirée que jusqu’à un certain point. La métaphore de la chaîne d’approvisionnement est censée désigner non seulement le mainteneur, mais aussi tout l’écosystème et chaque maillon qui permet à une bibliothèque d’intégrer un projet open source. Par exemple, le registre npm est une source d’« approvisionnement », tandis que la marketplace GitHub Actions en est une autre.
Certaines personnes aiment considérer le monde open source comme une communauté unifiée. En réalité, l’open source est très fragmenté. D’un côté, il y a une approche plus orientée vers les entreprises, parfois appelée « complexe industriel de l’open source », pour laquelle le vocabulaire de la chaîne d’approvisionnement serait tout à fait approprié. À l’autre extrémité du spectre se trouve le mouvement du logiciel libre, qui considérerait probablement le concept de « chaîne d’approvisionnement logicielle » comme contraire à sa vision. Et entre les deux, il existe tout un éventail de points de vue.
Dans son post, Thomas souligne à juste titre que les dépendances aux logiciels open source ne supposent aucun accord avec un fournisseur. En ce sens, un développeur de logiciels open source n’est pas un fournisseur pour les projets qui dépendent de son travail. L’emploi de la métaphore de la « chaîne d’approvisionnement » peut créer des malentendus, par exemple lorsque les mainteneurs de projets open source reçoivent des notifications juridiques ou des courriers d’entreprises. C’est précisément ce qui s’est passé lors de l’affaire Log4j. Daniel Stenberg, développeur open source connu pour son travail fondateur sur le projet Curl, a reçu des courriers d’une équipe des achats d’entreprise (bien intentionnée) au sujet du projet Curl. Celle-ci le considérait comme un fournisseur et l’obligeait à communiquer des données sur l’utilisation de Log4j dans Curl dans un délai strict. Ce type de communication peut être approprié dans une relation contractuelle formelle avec un fournisseur, encadrée par un accord de niveau de service. Mais il n’a absolument pas sa place dans le contexte de l’open source.
Je pense que la terminologie et le modèle mental associés à la chaîne d’approvisionnement logicielle restent très utiles, notamment pour communiquer avec les responsables politiques ou d’autres décideurs qui ne connaissent pas les dépendances logicielles ni le fonctionnement de l’open source. Cette métaphore a toutefois ses limites. Lorsque nous l’employons, nous devons aussi garder à l’esprit que les dépendances open source ne reposent pas sur un accord avec un fournisseur et, surtout, que toute une communauté de développeurs de logiciels open source ne se reconnaît pas dans cette vision. Le complexe de la sécurité logicielle doit être ouvert à tous, y compris aux personnes et aux communautés qui ne sont pas forcément à l’aise avec l’idée de « chaîne d’approvisionnement », si nous voulons faire progresser la sécurité logicielle dans l’ensemble du secteur.
Alors, comment résoudre ce problème ? Je pense que nous devrions envisager d’adopter une terminologie légèrement différente dans certains contextes. L’expression chaîne de dépendances logicielles serait peut-être plus adaptée lorsqu’on s’adresse à la communauté générale des développeurs open source. Ou alors, en tant que secteur, nous devons expliquer très clairement aux développeurs open source ce que nous entendons — et ce que nous n’entendons pas — par « chaîne d’approvisionnement logicielle ».
