Au siècle passé, l'open source existait déjà - au moins dans les ultimes décennies. Mais pour utiliser une bibliothèque ou une application en libre accès, il fallait identifier le site qui la proposait, puis y trouver l'endroit (onglet, bouton) pour lancer le téléchargement, puis définir un mode de stockage, etc. C'était compliqué, parfois dissuasif, d'autant que la bibliothèque téléchargée pouvait à son tour avoir des dépendances sur d'autres bibliothèques, qu'il fallait à leur tour télécharger - et dans la bonne version ! Alors, dans le monde du développement en langage Java, un outil appelé Maven a progressivement émergé et est devenu à la fois une brique technique centrale du développement en open source et un promoteur de l'open source. Maven est à la fois un petit logiciel et un vaste entrepôt. Cet entrepôt, appelé Maven Central, héberge des milliers de bibliothèques en open source et en centralise l'accès. Comme en outre l'entrepôt ne stocke pas une seule version, mais toutes les versions successives d'une bibliothèque, et qu'en plus Maven gère les dépendances entre les bibliothèques et leur rapatriement sur le poste du développeur, cet outil est devenu central dans le développement Java dans le monde entier et a activement contribué à populariser l'open source.
Si GitHub met l'accent sur les sources du logiciel, Maven le met sur le livrable du logiciel. Les deux se recouvrent en partie : sur GitHub on a normalement les instructions pour créer le livrable à partir des sources, tandis sur Maven on a normalement les sources aux côtés du livrable. Alors, direz-vous, où faut-il publier son code : sur GitHub ou sur Maven ? La réponse est : toujours sur GitHub, et parfois aussi sur Maven. Voyons pourquoi.
Pour parler du canton de Genève, ses projets open source, écrits en Java ou non, sont diffusés sur GitHub. Mais il est arrivé que deux projets dépendaient l'un de l'autre. Dans de précédents billets, nous vous parlions de GitSync et du client Gina LDAP. Ces deux projets sont publiés sur GitHub. Mais le projet GitSync depend du projet client Gina LDAP, si bien que pour quelqu'un qui désirerait copier chez lui les sources de GitSync, assembler le programme et le faire tourner sur son ordinateur, il lui faudrait auparavant copier les sources du client Gina LDAP et les compiler, chose jugée habituellement rédhibitoire. C'est pourquoi le client Gina LDAP est publié sur l'entrepôt Maven Central, en plus d'être publié sur GitHub. Quelques lignes supplémentaires dans un fichier de GitSync, et hop ! le développeur assemble le programme GitSync, la magie de Maven téléchargeant en silence sur son poste le client Gina LDAP nécessaire et l'intégrant au programme GitSync. En fait, GitSync avait besoin du livrable du client Gina LDAP, pas de ses sources.
GitHub et Maven ne sont pas des standards imposés, mais des produits dont le succès a fait des standards de fait, bien documentés, stables et connus. L'open source adore fonctionner avec ce genre d'outils.