11 lignes de code libres dont plus personne ne peut se passer

Pour tous ceux qui se demandent “mais qu’est-ce qu’ils fichent ces développeurs toute la journée devant leurs ordis ?” … voici une belle histoire qui répond à cette question et résume l’état du monde actuel. Un “David & Goliath” moderne qui en dit long sur notre société. Mais pas d’inquiétude: à la fin, c’est bien le capitalisme qui gagne …

L’histoire que je conterai ici est assez simple mais les tenants et aboutissants le sont beaucoup moins et posent clairement la question du fonctionnement actuel des logiciels et des sites web que nous utilisons et de la place de l’open source en leur sein.

Préambule

Azer Koçulu est un développeur américain qui aime son job et en fait profiter tout le monde (gratuitement) en publiant certains de ses développements publiquement et librement. L’un de ses logiciels, left-pad, est d’ailleurs très utilisé un peu partout dans des applications propriétaires1 (il a été téléchargé plus de 2 millions de fois le mois dernier). Left-pad est un petit outil (11 lignes de code pour être précis) qui sert à s’assurer qu’une chaîne de caractère fasse une certaine taille en ajoutant si besoin des espaces au début de la chaîne2.

A. Koçulu a publié il y a quelques mois une autre application permettant d’automatiser la création d’un nouveau projet (créer les répertoires et les fichiers de base) qu’il a nommé Kik (contraction de “kick-starter“).

Seulement, Koçulu ne savait pas (et moi non plus d’ailleurs – ndr) que “Kik” est le nom d’une application mobile de chat (suivant le même système que l’application WhatsApp par exemple) qui semble très utilisée chez les jeunes américains (40% de part de marché d’après la communication interne de l’application). Kik est développée par la société Kik Interactive Inc., qui a protégé la marque “Kik” par un copyright.

Le litige

Lorsqu’elle s’est aperçue que l’application d’A. Koçulu se nommait “kik”, la société Kik Interactive Inc. a demandé au développeur de bien vouloir renommer son projet ou de le supprimer (en substance, de ne plus utiliser le nom “kik” dont elle détient le copyright). Face au refus de Koçulu et après un échange d’e-mails sans grande courtoisie (nous y reviendrons), l’entreprise s’est tournée directement vers la plateforme référençant son logiciel: NPM3.

Il est important de comprendre ici que NPM est un tierce entité: la société Kik Interactive Inc. n’ayant pas réussi à se faire entendre du développeur directement, elle a pris contact avec l’entité (indépendante de Koçulu) qui référence ses applications auprès des développeurs (plus exactement qui laisse tout développeur référencer une application dont il est propriétaire). Il est d’ailleurs intéressant de noter que NPM n’est pas la plateforme d’hébergement des sources du logiciel d’A. Koçulu mais seulement l’outil qui lui permet d’être disponible facilement pour les autres développeurs (une sorte de base de données d’applications disponibles).

Devant l’insistance de la société Kik Interactive Inc., les développeurs de NPM ont accepté de transférer la propriété du paquet “kik” à l’entreprise, probablement pour éviter de se retrouver engagée dans une procédure légale (alors que la responsabilité de NPM ne pourrait être impliquée directement, elle ne fait que référencer l’application).

Il faut ici préciser qu’Isaac Schlueter, le fondateur de NPM, a déclaré dans son explication qu’il ne s’agissait pas d’un litige de droit d’auteur mais bien de suivre la politique de résolution de conflits mise en place par NPM, dont l’idée principale est de servir le plus grand nombre.

A. Koçulu, un peu désabusé d’être dépossédé de son application sans plus de discussion avec NPM, décrit son ressenti très clairement:

Cette situation m’a fait réaliser que NPM est une chasse gardée, où les entreprises ont plus de pouvoir que les gens, et je fais de l’open source parce que je crois que le pouvoir revient au peuple.4

En réaction, il a décidé de retirer l’ensemble de ses applications du moteur de dépendances (quelques 273 logiciels pour être précis) et de clôturer son compte.

Une dépendance trop importante

L’histoire aurait pu s’arrêter là (et poser les mêmes questions d’ailleurs) si l’un des programmes d’A. Koçulu n’était pas une dépendance très utilisée par divers applications et sites web, le fameux “left-pad” dont nous parlions plus haut.

Ayant supprimé toutes ses applications de la base de données NPM, “left-pad” était également concerné et donc introuvable par le moteur chargé d’installer ou de mettre à jour les dépendances des applications. Des logiciels mondialement utilisés comme React (utilisé pour le développement de la plateforme Facebook par exemple) ou Babel ne parvenaient plus à construire leurs dépendances correctement, comme en atteste ce ticket de bug sur le dépôt des sources de “left-pad”, largement commenté.

Panique à bord pour une grosse partie du web qui utilise cet outil !

L’ironie de l’histoire est que les applications de la société Kik Interactive Inc. furent elles-mêmes impactées.

Une réponse étonnante

Face aux complaintes d’un grand nombre de gestionnaires d’applications et de sites web dont “left-pad” était une dépendance (dont certains sites web mondialement connus), NPM a pris une décision sans précédent et pour le moins étonnante: re-publier le paquet en question, toujours sans l’autorisation de son auteur5.

Cette “re-publication” s’est accompagnée d’un changement de propriétaire des sources de “left-pad”, rendu possible par la publication des sources originales par A. Koçulu sur un site public sous une licence open source ouverte.

Je laisse le lecteur se forger sa propre opinion à la lecture des trois billets des protagonistes exposant chacun leur version des faits:

Choisir son camp

De nombreuses réactions et articles relatent et analysent cette histoire, comme le montre la recherche Google suivante: https://www.google.fr/search?q=Azer+Ko%C3%A7ulu+daterange:2457470-2457490&hl=fr&tbm=nws&tbs=lr:lang_1fr&lr=lang_fr. Si les faits sont racontés le plus souvent de la même façon (et c’est plutôt rassurant), l’analyse diffère beaucoup d’un site à l’autre, en fonction notamment du positionnement général du site en question, et on peut distinguer deux partis pris opposés.

Le premier s’inscrit dans la veine “corporate” et déplore d’une part la réaction d’A. Koçulu refusant de renommer son programme en respect des règles du copyright, et d’autre part, pointe du doigt “les faiblesses de l’open source” (cf. la conclusion de l’analyse du site Silicon.fr) et les problématiques posées par la multiplication des dépendances à des solutions ouvertes sans responsabilité commerciale.

Le second s’inscrit dans une veine plus “libriste” et pointe du doigt la sur-puissance d’une entreprise face à un développeur seul. Les questions posées pourraient être en effet:

  • Dans quelle mesure une entreprise commerciale aurait-elle plus de droits qu’un développeur open source, qui publie ses logiciels pour le bien de tous, sans contre-partie ?
  • Pourquoi la loi du copyright devrait-elle avoir l’ascendant sur une licence open source (“kik” est publiée par A. Koçulu sous la licence BSD) ?

Une conclusion inquiétante

Il me semble pour ma part que cette histoire résume très clairement cette dernière opposition: une entreprise commerciale, avec des moyens qui lui sont propres et qui s’inscrit dans une logique capitaliste, contre un développeur seul, qui créé des logiciels sur son temps personnel et les propose à la communauté, sans contre-partie.

Ce développeur peut être accusé d’avoir eu une réaction infantile, sanguine et pour le moins fermée face à la requête de la société Kik. Mais ladite société n’a pas non plus été très fairplay dans son approche. Et il est pour le moins étonnant, et très inquiétant, qu’une entité tierce comme NPM, qui est basée presque exclusivement sur des solutions open source, n’ait à aucun moment cherché à se questionner sur son positionnement en se cachant derrière des règles plutôt floues.

D’un point de vue technique, d’ailleurs, cette histoire pose également une question de fond sur le fonctionnement de moteurs de dépendances comme NPM. Sachant qu’un module publié peut être utilisé par n’importe quelle application comme une dépendance (ce qui signifie qu’elle ne fonctionnera pas sans elle), peut-on (doit-on ?) être en mesure de supprimer définitivement un module une fois qu’il est publié ? Ne devrait-on pas mettre en place une sécurité assurant la disponibilité d’un module dès lors qu’il est publié, quelle que soit la volonté de son propriétaire ?

Il me semble finalement que deux questions sont ici posées et résument à elles seules une situation actuelle que peu d’entre nous souhaitent penser:

  • pourquoi une entreprise commerciale devrait-elle avoir plus de droits qu’un particulier qui propose ses créations sous une licence open source (pour rappel, une licence est un cadre légal strict et juridiquement tout aussi valable qu’un copyright commercial) ?
  • un développeur qui propose un outil à la communauté n’endosse-t-il pas en même temps une responsabilité face à celle-ci, en s’engageant à laisser cet outil accessible à tout moment et à suivre les mêmes règles de publication et de correction que des entités à visée commerciale ?

Je crois que ces deux questions reviendront très bientôt sur le devant de la scène …


Cette histoire doit nous confronter à toutes ces nouvelles questions concernant l’open source, l’organisation de nos applications (qu’elles soient propriétaires ou non) et l’avenir que nous voulons construire ensemble pour un informatique robuste et fiable mais équitable et respectueux de ceux qui le créent … Nous ne pourrons plus faire comme si l’open source n’existait pas (une grande majorité de nos logiciels quotidiens en dépendent) mais nous pouvons penser ensemble comment cet écosystème doit s’organiser.


Un commentaire sur “11 lignes de code libres dont plus personne ne peut se passer”

  • Pour le plaisir des yeux et pour relativiser un peu toute cette histoire, voici le code source de “left-pad”, 11 lignes de javascript qui ont fait trembler le web pendant quelques heures:

    module.exports = leftpad;
    function leftpad (str, len, ch) {
      str = String(str);
      var i = -1;
      if (!ch && ch !== 0) ch = ' ';
      len = len - str.length;
      while (++i < len) {
        str = ch + str;
      }
      return str;
    }
    

Laisser un commentaire

Votre adresse mail ne sera pas publiée.

Vous pouvez utiliser la syntaxe markdown dans votre commentaire.