Le legacy s’installe aussi dans l’open source

FOSS open source Fondation Linux Census II

Après un premier volet en 2015, la Fondation Linux vient de publier un deuxième recensement des composants open source les plus populaires. Qu’en retenir ?

À quand une convention de nommage standardisée et surtout mise en pratique ? La Fondation Linux déplorait déjà ce manque en 2015, au moment de publier son premier recensement des composants open source les plus utilisés. Une deuxième vague vient de paraître… et le constat n’a pas changé. Avec, à la clé, la même perte de temps pour mettre les données en forme et ls analyser.

Ce n’est pas là le seul obstacle pointé du doigt. La gestion des versions pose aussi problème : les organisations qui ont tendance à adopter leurs propres numérotations une fois les composants intégrés à leurs projets.

La Fondation Linux déplore également l’importante proportion de paquets populaires hébergés sur des comptes individuels, moins sécurisables que les comptes d’organisations. Elle souligne par ailleurs l’existence d’une forme de legacy. Avec plusieurs exemples :

– minimist qui reste plus répandu que yargs, plus récent et plus fonctionnel
– L’usage encore important de FindBugs, que ses mainteneurs ont pourtant délaissé en 2017 au profit de SpotBugs
– La présence plus fréquente, sur l’échantillon pris en considération, de versions obsolètes de Log4j (1.x) que de versions 2.x

Debug, Lodash, SLF4J et le SDK Go d’AWS en tête des charts open source

De quel échantillon parle-t-on ? D’environ 600 000 observations effectuées en 2020 sur des bibliothèques exploitées en production. Les données, anonymes, proviennent de scans manuels et automatisés réalisés par des fournisseurs d’outils d’analyse de composition logicielle.

La Fondation Linux le reconnaît : sa méthodologie n’est pas exhaustive. Et pour cause : elle n’englobe que les paquets présents au moins sur GitHub ou Libraries.io. Elle exclut en outre certains éléments. Entre autres, les dépendances signalées comme optionnelles et celles non utilisées à l’exécution.

Au bout du compte, il en ressort plusieurs top 500 des composants les plus populaires. En l’occurrence, huit. Avec trois segmentations principales. Premièrement, en tenant ou pas compte des versions. Deuxièmement, en se limitant à npm ou au contraire en l’excluant (conséquence d’une surreprésentation de JavaScript dans l’échantillon). Troisièmement, en incluant ou non les dépendances indirectes.

Dépendances indirectes incluses, le paquet npm le plus utilisé est debug (utilitaire de débogage). Hors npm, il s’agit du SDK Go d’AWS (aws-sdk-go). Si on s’en tient aux appels direct, lodash (bibliothèque de programmation fonctionnelle) arrive en tête dans la catégorie npm. Hors npm, c’est slf4j-api (API de journalisation).

paquets populaires open source
(Cliquer pour agrandir.)

Lorsqu’on tient compte des versions et des dépendances indirectes, Log4j ressort dans le top 10 hors npm. Mais dans une mouture plus prise en charge (1.2.17).

top 10 non npm versions dépendance indirectes
(Cliquer pour agrandir.)

Illustration principale © monsitj – Adobe Stock