Rappel : Qu'est ce qu'un fork ?
J'aurais aimé faire un billet un peu plus élaboré comme par exemple parler de l'appel système fork() ou étudier l'évolution des fourchettes a travers les âges ... mais il est quelques fois nécessaire de revenir sur des concepts de base que l'on pensait acquis pour beaucoup.
Je me suis rendu compte que de nombreuses personnes ont une conception très inexacte de ce qu'est un fork, ou du moins en ce qui concerne les distributions GNU/Linux. Quand je dis de nombreuses personnes, je ne parle pas de Linuxiens novices qui ont bouffé du Windows pendant 15 ans et rentrent dans le monde merveilleux d'Unix et de l'Open Source. Non, je parle de bloggeurs reconnus, de vétérans, qui ont plusieurs années d'expérience dans le logiciel libre, et je peux balancer des noms. Cyrille Borne, Frédéric Bezies, Christophe Gallaire, vous faites parti des gens qui ont une conception fausse du terme fork, voila c'est dit.
Reprenons tout depuis le début.
Un fork est l'acte de reprendre le code source d'un projet pour fonder un autre projet totalement indépendant. Ce nouveau projet va rarement contribuer du code au projet d'origine. Un fork viens dans la plupart des cas d'un désaccord au sein d'une équipe de développement quand plusieurs groupes n'arrivent pas a trouver un terrain d'entente sur l'évolution du futur d'un logiciel. Un fork part d'une intention précise : celle de rentrer en compétition, voire de remplacer le projet de base.
On prendra comme définition de référence celle donnée par Eric Raymond dans le Jargon File.
Ce n'est pas un concept très compliqué mais il s'arrête à cette définition. L'étendre au delà engendre une utilisation abusive du terme fork comme nous allons le voir. Beaucoup d'utilisateurs de Linux, comme par exemple les bloggeurs cités plus haut, on tendance a appeler les dérivées d'une distribution un fork. Dire qu'une distribution est le fork d'une autre est très rarement vrai. Prenons l'exemple le plus simple : les dérivées d'Ubuntu. Ceux ci sont souvent qualifiés, dans la majorité des cas a tort, de forks. Que ce soit parmi les dérivées officielles (Kubuntu, edubuntu, mythbuntu,...) ou des non-officielles (CrunchBang, OpenGEU, ...) aucune de ces distributions ne sont des forks.
Regardons de plus prêt :
- Les distributions en question utilisent elles la même plateforme de développement qu'Ubuntu (Launchpad) ? Oui
- Les distributions en question utilisent elles les mêmes dépôts qu'Ubuntu ? Oui
- Les distributions en question fournissent elles des logiciels supplémentaires ou modifiés par rapport a Ubuntu ? Très rarement
- Les distributions en question ont elles pour but de rentrer en compétition et/ou de remplacer Ubuntu ? Non
- Les distributions en question ont elles un autre but que d'apporter a l'utilisateur une autre offre logicielle installée par défaut ? Non
Dans la majorité des cas, aucune modification du code source n'est faite, elles ont uniquement lieu sur les artworks et les fichiers de configuration.
On va même aller jusqu'à parler de temps et d'efforts perdus pour la conception de ces distributions (car étant des 'forks' on leur donne aussi le titre de 'distribution', ce qui est tout de même un peu moins faux). C'est mal connaitre la réalité des choses. Un repackaging d'une image ISO d'Ubuntu n'est couteux ni en temps, ni en efforts sauf si l'on considère qu'un après midi est un temps énorme gâché pour la communauté du logiciel libre...
On pourra reprocher de nombreuses choses a ceux qui souhaitent concocter leur propre version d'Ubuntu, de gâcher de la bande passante en distribuant des ISO et non des scripts de post-installation, ou de ne pas tirer parti de l'outil tasksel par exemple mais certainement pas de diviser la communauté, ou de rajouter une dose de chaos dans les distributions existantes.
Pour aller plus loin, on peut même aller jusqu'à affirmer qu'Ubuntu n'est pas un fork de Debian. Certes les dépôts et le bugtracker sont différents et le but d'Ubuntu est clairement de rester en position dominante par rapport aux autres distributions mais Ubuntu et Debian restent deux projets qui communiquent énormément entre eux, et le code de Debian est sans cesse repris, a intervalles réguliers, tous les 6 mois. La FAQ Debian mentionne Ubuntu et Knoppix mais n'emploie nulle part l'appellation 'fork' (elle indique que ce sont des distributions *basées sur* Debian).
Si tous ces projets ne sont pas des forks alors que sont ils ? J'aurais tendance a dire, très simplement : des Logiciels Libres. En tant qu'utilisateur de logiciel libre, je considère comme un droit fondamental de pouvoir étudier, modifier et distribuer tout logiciel que j'utilise.
Ne pas avoir saisi cela, crier au fork la où il n'y en a pas, c'est en quelque sorte montrer que l'on a pas totalement saisi l'essence du logiciel libre.