Contribuer ou créer

C'est une question récurrente dans le domaine du libre. C'est la question que je me suis posé en créant epub-reader et feed-reader : pourquoi ne pas travailler sur ce qui existe déjà au lieu de créer un nouveau projet ?

Les réponses sont multiples et toujours différentes en fonction du contexte et des individus mais on peut sans doute dégager deux lignes directrices.

  • La première à trait à l'absence de certaines fonctionnalités ou à des choix ergonomiques / techniques qui en oblitèrent d'autres. Les logiciels ont par exemple trop souvent tendance à vous enfermer en utilisant une technologie spécifiques pour stocker les données. C'est généralement dû aux préférences / limites du développeur et il y a très souvent des outils d'import/export, surtout dans le domaine du libre mais je constate régulièrement qu'une solution simple et évidente, celle qui repose sur des standards éprouvés, n'est pas toujours celle utilisée. Exemple avec les lecteurs de flux RSS : il existe une norme xml, l'OPML, qui est très largement utilisée pour diffuser une liste de flux ; pourquoi dés lors ne pas avoir des lecteurs qui lisent / utilisent directement ce format au lieu de le penser uniquement sous la forme d'import/export ? Ce serait plus simple pour l'utilisateur - vous pourriez ainsi vous balader avec votre liste sous le bras plus simplement, devenant indépendant de l'outil utilisé pour la lire. Corriger cela est difficile : il faut souvent réorienter le développement ; c'est une question d'architecture de projet qui doit donc se penser en amont, avant même que la moindre ligne de code soit écrite.
  • La seconde famille de réponses concerne la difficulté d'entrer dans du code déjà ancien et/ou complexe. Quand le logiciel qui vous intéresse est complexe et qu'il faudrait des jours ou des semaines pour réécrire un équivalent ou simplement le forker, vous faites un effort et essayer de l'intégrer. Quand le logiciel est plus simple mais que vous devez tout de même lutter pour le modifier ou ne serait-ce que comprendre son code, vous ne perdez pas de temps et réécrivez le tout. C'est malheureusement ce que je fais souvent et c'est ce qui explique que de nombreux projets libres ne trouvent pas de nouveaux contributeurs. Corriger cela est plus simple mais ne demande pas moins d'investissement : il s'agit de la documentation du code, de la rédaction de documents technique sur l'architecture générale, de la disponibilité de tutoriels du genre "comment écrire un plugin/extension", etc.

Le truc est là : si on doit passer plus de temps à comprendre comment coder une fonctionnalité dans une application existante plutôt que de réécrire entièrement soi-même l'application, cette dernière option sera toujours privilégié.