Fork (développement logiciel)

Chronologie montrant les forks de distributions Linux.

Un fork (terme anglais signifiant « fourche », « fourchette », « bifurcation », « embranchement »), ou une reprise logicielle, désigne dans le jargon informatique, un nouveau logiciel créé à partir du code source d'un logiciel existant. Son existence découle d’un choix politique venant de visions différentes du projet des différents acteurs qui y participent, un acteur décidant alors de créer cette dérivation pour lui imposer les idées qu’il n’a pas pu soumettre au précédent projet, une forme de schisme.

Les forks sont courants dans le domaine des logiciels libres, dont les licences permettent l'utilisation, la modification et la redistribution du code source. L'Office québécois de la langue française préconise les termes de fourche ou d'embranchement.

Un fork peut être bénéfique pour un projet donné lorsque sa gouvernance actuelle conduit à une impasse, sa reprise par un nouveau groupe pouvant le relancer. Il peut aussi être néfaste en provoquant un éparpillement des ressources.

Un fork peut naître à la suite de divergences de points de vue ou d'objectifs parmi les développeurs, ou encore à la suite de conflits personnels (Ex : Iceweasel sous Debian est un fork de Mozilla Firefox). Les projets parents et dissidents peuvent avoir des rapports amicaux (fork amical) ou bien conflictuels (fork inamical). Quels que soient les rapports entre les deux projets, les licences de logiciels libres permettent l'emprunt de code d'un projet par l'autre. Ainsi, les différents BSD s'empruntent régulièrement du code, car ils partagent la même licence.

Une illustration de la régulation des projets libres par ce moyen est l'apparition d'au moins trois forks libres pour le projet SourceForge à l'issue de la « dérive de SourceForge » :

Spork

La pertinence de cette section est remise en cause. Considérez son contenu avec précaution. ou discutez-en, sachant que la pertinence encyclopédique d'une information se démontre essentiellement par des sources secondaires indépendantes et de qualité qui ont analysé la question. (avril 2020)

Il existe une autre catégorie de fork, qui porte le nom de « spork ». Ce type de fork est créé à la suite de problèmes relationnels avec le mainteneur (le responsable) d'un paquet logiciel qui refuse de se conformer au rôle classique du mainteneur. Par exemple, il refuse d’intégrer des corrections tout à fait valides ou de nouvelles fonctionnalités sans en donner la raison. Le spork consiste à prendre le code source du projet en amont et à lui appliquer les patchs légitimes rejetés par ce dernier.

Un spork permet de partager l'effort de maintenance en aval du projet. Au lieu que chaque distribution maintienne indépendamment un ensemble de patchs à appliquer au projet amont, elles peuvent ainsi partager l'effort en créant un projet intermédiaire qui rassemble les patchs communs, il ne reste alors plus aux distributions qu'à gérer les patchs spécifiques à leur propre distribution.

Ce fut le cas notamment de projets comme :

Une « cuillère-fourchette » japonaise pour droitier

En anglais général, un spork (cuillère-fourchette), est un mot-valise créé à partir de spoon (cuillère) et de fork (fourchette). Du fait de la dualité de fonction de l'objet, l'analogie a été conservée avec les ramifications informatiques qui gardent à la fois les fonctions existantes et en rajoutent de nouvelles.

Exemples de forks

Cette section ne cite pas suffisamment ses sources (novembre 2021). Pour l'améliorer, ajoutez des références de qualité et vérifiables (comment faire ?) ou le modèle {{Référence nécessaire}} sur les passages nécessitant une source.

Exemples de « fusions »

À l'inverse des forks, certains projets de logiciels libres décident de fusionner leur base de code car ils partagent des objectifs similaires ou parviennent à réconcilier leurs points de vue.

Exemples de fusion de logiciels libres:

Notes et références

  1. (en)Article fork, sur wordreference.com
  2. « fourche », Grand Dictionnaire terminologique, Office québécois de la langue française (consulté le 30 août 2020).
  3. La dérive de SourceForge, par la Free Software Foundation Europe
  4. Debian remplace la glibc par eglibc, par Victor Stinner sur linuxfr.org, le 8 mai 2009.
  5. go-oo.org
  6. Mambo devient Joomla, par Linuxfr.org le 7 septembre 2005.
  7. , par Clubic.com le 4 avril 2013.
  8. Pylons et repoze.bfg fusionnent pour donner Pyramid, par linuxfr.org, le 17 décembre 2010.