Les responsables de projets open source ne seront pas tous d'accord avec Rich Felker, fondateur du projet Musl. Dans un article récent, ce dernier a déclaré qu’il accordait une grande importance aux utilisateurs de Musl, plus encore qu'aux contributeurs au code : « Les utilisateurs, les testeurs, les adopteurs, les chasseurs de bogues sont vraiment plus précieux que l’auteur de n'importe quel code ». Mais ne vous méprenez pas. Rich Felker ajoute que même les utilisateurs qui ne contribuent pas au code ou à la correction de bogues, ou à quoi que ce soit d'autre, sont toujours précieux. Pourquoi ? Parce qu'ils créent une demande qui pousse d'autres logiciels à interopérer, et peuvent corriger l'interopérabilité avec d'autres logiciels même si celle-ci n’est jamais visible.
Cela semble logique, mais ça ne résume pas toute l'histoire des contributions open source. Pour être juste, ce n'est pas non plus ce que pense globalement Rich Felker. Par exemple, pour certains directeurs de projets, les utilisateurs qui se plaignent sans proposer de correctifs font perdre beaucoup de temps. A l’inverse, comme l'a déclaré Jens Axboe, fondateur du projet Fio, les utilisateurs qui proposent des corrections pour leurs problèmes, sont une mine d’or : « J'aime les testeurs, s'ils peuvent également fournir des correctifs. Je ne veux pas d'une équipe d'assurance qualité qui se contente d'enregistrer des rapports de bogues. C'est insupportable à gérer pour moi et pour les contributeurs réguliers au projet ».
Alors quels sont les meilleurs contributeurs open source ? Comme pour beaucoup de choses dans la vie, la réponse est : « Ça dépend » !
Plus il y a d'utilisateurs, mieux c’est ?
Il serait difficile de prétendre que c’est une mauvaise chose si un logiciel compte beaucoup d'utilisateurs. N'est-ce pas ce qui pousse le monde à prendre le projet au sérieux ? Cependant, pour un fondateur de projet, le but n’est peut-être pas de conquérir « beaucoup d'utilisateurs ». En effet, c’est parfois une source d’empoisonnement. Il suffit de demander à Jens Axboe, fondateur du projet Fio, un standard industriel qui permet de modéliser à peu près n’importe quelle charge de stockage. « Le simple fait d'avoir des utilisateurs ne signifie rien pour moi », a-t-il déclaré. « J'ai écrit quelque chose pour moi-même que j'ai trouvé utile, et je l'ai juste partagé avec le monde. Je ne suis pas là pour avoir des tas d'utilisateurs, car je pense que la mesure de nombre d’utilisateurs est inutile en soi. C'est un bel effet secondaire, mais je mettrais cet indicateur très bas dans ma liste de priorités ».
Alors, en quoi consiste une bonne contribution ? « Eh bien, tout est dans le code », a encore déclaré Jens Axboe. En fait, certains projets évitent les contributions externes. Par exemple, le projet Magento fondé par Roy Rubin a été construit en tandem avec son entreprise, et il craignait qu’en sollicitant des contributions extérieures pour travailler sur le cœur de Magento, cela complique le support aux clients. « Si je ne peux pas garantir aux clients un produit de qualité dans un délai raisonnable et contrôler cette production, alors il sera très difficile pour moi de vendre le produit comme une solution commerciale », a expliqué M. Rubin. Au lieu d'encourager les contributions au noyau, Roy Rubin a conçu Magento pour qu'il soit vraiment facile de contribuer à des extensions ou à des fonctionnalités supplémentaires, et une industrie florissante de développeurs tiers s'est développée autour de Magento pour compléter ce noyau.
Le code comme conversation
Ceux qui veulent contribuer au code pourraient avoir du mal à concilier « envie » et « résultat ». Selon Salvatore Sanfilippo, créateur de Redis, il peut être difficile de trouver des personnes capables de commettre du code. « Souvent, les contributions sérieuses proviennent uniquement de personnes payées pour cela », a-t-il déclaré. Il est difficile de s'investir dans un projet sans un engagement à plein temps. Mais quand vos utilisateurs deviennent des contributeurs, c'est magique. Comme le dit Gerald Combs, fondateur du projet Wireshark, une des choses qui a rendu la communauté Wireshark si solide, c’est que les utilisateurs sont devenus aussi des développeurs qui peuvent contribuer. « Il est facile d’exploiter ses connaissances dans un protocole, puis d'écrire un détecteur pour Wireshark, et cela a contribué à faire croître nos capacités en matière d'analyse de différents protocoles. Mais cela a aussi aidé le projet à se développer ».
Les contributeurs au code rendent également un projet beaucoup plus social. Si vous imaginez encore que le contributeur est un individu solitaire, qui mange de la pizza et du code dans sa chambre d’ado, il est temps vous mettre à jour. Comme le dit Salvatore Sanfilippo, « je suis convaincu que le logiciel est un processus humain et qu'il a besoin que les gens racontent des histoires. Des histoires pour commercialiser le projet, mais aussi simplement des histoires pour communiquer avec les autres ». Les développeurs de logiciels libres représentent un groupe social. C’est l’une des raisons pour lesquelles GitHub vient de capitaliser sur cette communauté en introduisant des GitHub Discussions et faciliter les conversations autour du code. (Mais pour montrer, encore une fois, à quel point les projets peuvent être différents, Bert Hubert, fondateur de PowerDNS, a déclaré que leur communauté avait volontairement choisi d'utiliser l’IRC plutôt que Slack, plus facile à utiliser, pour la communication. Pourquoi ? Parce que « c'est un peu une barrière à l'entrée... Il faut un minimum d'effort pour nous rejoindre et cela décourage beaucoup de paresseux ». Vous voulez contribuer ? Montrez-vous à la hauteur !
« Cependant, quand la communauté choisit de tchater, de remplacer le code par de la conversation, l'open source devient beaucoup moins intéressant », a déclaré pour sa part Daniel Stenberg, fondateur de Curl. « Selon moi, ce sont vraiment les contributeurs au code qui constituent la meilleure partie de la communauté », a-t-il ajouté. « C'est l'équipe avec laquelle je passe du temps et je communique, avec laquelle je teste des idées et je fais des essais afin de trouver comment avancer et comment corriger les choses les plus compliquées. S’il n’y avait que des utilisateurs, le travail serait plus solitaire. Et je n'aimerais pas ça. Je m'ennuierais vite ».
D’accord. Donc les contributeurs de code sont mieux, pour diverses raisons. Mais comment faire pour enrichir encore plus un projet ?