Accueil🇫🇷Chercher

Fork (développement logiciel)

Un fork (terme anglais signifiant « fourche », « bifurcation », « embranchement »[1]) 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.

Chronologie montrant les forks de distributions Linux.

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[2].

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 »[3] :

Spork

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 :

  • eglibc, un spork de la glibc, qui intègre des patchs lĂ©gitimes refusĂ©s par Ulrich Drepper. Debian utilise la eglibc depuis 2009[4].
  • Go-oo[5], un logiciel dĂ©rivĂ© d'OpenOffice.org, qui comporte des patchs non intĂ©grĂ©s par Sun Microsystems pour cause de lenteur d'intĂ©gration ou d'opposition Ă  la politique commerciale de Sun. Depuis le rachat de Sun par la sociĂ©tĂ© Oracle, la situation s'est encore dĂ©tĂ©riorĂ©e. Devant le silence d'Oracle sur l'avenir du projet, le spork s'est transformĂ© en un vĂ©ritable fork nommĂ© LibreOffice. Si Go-oo Ă©tait principalement utilisĂ© par OpenSuse et Ubuntu, LibreOffice est maintenant utilisĂ© par quasiment toutes les distributions.
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

  • GNU Emacs, en raison de diffĂ©rences de points de vue entre le projet GNU (qui Ă©tait Ă  l'origine de cette version d'Emacs) et des dĂ©veloppeurs externes (principalement de l'entreprise Lucid qui dĂ©veloppait un produit utilisant GNU Emacs), donne GNU Emacs et Lucid Emacs (qui est ensuite renommĂ© en XEmacs).
  • En 1994, Theo de Raadt, cofondateur de NetBSD, est exclu par les dĂ©veloppeurs de ce dernier. Il crĂ©e alors OpenBSD Ă  partir du code source de NetBSD, et dĂ©cide de rendre son dĂ©veloppement le plus ouvert possible (d'oĂą le « Open ») tout en portant l'accent sur la sĂ©curitĂ©.
  • En 1997, GNU Compiler Collection (GCC) stagne et le fork EGCS apparaĂ®t pour progresser plus vite, notamment dans le support du C++ standard. Finalement, la branche EGCS supplante la branche stagnante de GCC en 1999 et est publiĂ©e sous la version 2.95.
  • En 2003, un fork du logiciel libre de dessin vectoriel Sodipodi, nommĂ© Inkscape est lancĂ©. Aujourd'hui, Sodipodi n'a pas sorti de nouvelles versions depuis fĂ©vrier 2004 alors qu'Inkscape connaĂ®t un dĂ©veloppement très actif. Sodipodi Ă©tait dĂ©jĂ  Ă  l'origine un fork du logiciel libre Gill.
  • En 2003, Ă  la suite de l'abandon apparent du logiciel de blog « b2 » par son crĂ©ateur, Matthew Mullenweg et Mike Little dĂ©cident de reprendre le projet sous le nom de WordPress. WordPress est aujourd'hui l'un des systèmes de gestion de contenu les plus utilisĂ©s sur le Web.
  • En 2004, en raison d'un dĂ©saccord de licence, un bon nombre de dĂ©veloppeurs de XFree86 dĂ©cident de crĂ©er X.Org Ă  partir de XFree86 4.4 RC2. Très vite, X.Org remplace XFree86 dans la plupart des distributions Linux.
  • En 2005, du fait de la volontĂ© de l'Ă©diteur Miro de crĂ©er une fondation autour de Mambo, les dĂ©veloppeurs dĂ©cident de lancer Joomla![6].
  • Le 16 aoĂ»t 2010, Xiaomi dĂ©veloppe son système d'exploitation (Miui) crĂ©Ă© Ă  partir du code source d'Android qui a Ă©tĂ© ouvert par Google via l'Android Source Projet (AOSP).
  • Le 18 septembre 2010, crĂ©ation de Mageia après la liquidation judiciaire de Edge-IT qui participait Ă  l'Ă©dition de la distribution Mandriva.
  • Le 28 septembre 2010, crĂ©ation de The Document Foundation pour le dĂ©veloppement de la suite LibreOffice, fork de la suite bureautique OpenOffice.org, par une communautĂ© de dĂ©veloppeurs et de contributeurs de cette dernière, insatisfaits du rachat de Sun Microsystems (Ă©diteur d'OpenOffice.org) par Oracle.
  • SkySQL et MariaDB fork de MySQL de Oracle Ă©galement.
  • Blink, moteur de rendu HTML de Google, fork de WebKit, dont le dĂ©veloppement a Ă©tĂ© annoncĂ© le 4 avril 2013[7].
  • DĂ©but 2011, naĂ®t Jenkins, un outil open source d'intĂ©gration continue fork de l'outil Hudson, après les diffĂ©rends entre son auteur, Kohsuke Kawaguchi, et Oracle.
  • Les distributions Linux de base ont donnĂ© naissance a un très grand nombre de forks, eux-mĂŞmes donnant parfois naissance Ă  d'autres forks. On dĂ©nombre actuellement plusieurs centaines de distributions.
  • Dans le domaine des cryptomonnaies, on compte de nombreux exemples de fork, comme Bitcoin Cash qui est un fork de Bitcoin.
  • Dans le domaine des wikis les "fourches" sont communes, comme Wikivoyage qui est nĂ© comme un 'fork' de Wikitravel en 2006.

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:

  • Après avoir forkĂ©, Compiz et Beryl ont fusionnĂ© en 2007 en Compiz Fusion.
  • AspectWerkz et AspectJ avaient des approches diffĂ©rentes pour faire de la programmation orientĂ©e aspect. Ils ont fusionnĂ© dans AspectJ 5 et offrent toujours aux utilisateurs de continuer Ă  utiliser l'approche qui leur convient.
  • Ruby on Rails et Merb ont fusionnĂ© en Ruby on Rails 3.
  • En 2010, Pylons et repoze.bfg fusionnent pour donner Pyramid[8].

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 ).
  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.
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.