Rappel : Qu'est ce qu'un fork ?
6 janv. 2010
Par Strider - General - Lien permanent
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.
Commentaires
Que c'était plaisant à lire :) !
Poupoul2Bon article qui redonne du sens aux termes.
Pour répondre à la question que tu te pose "Si tous ces projets ne sont pas des forks alors que sont ils ?", ils sont tous simplement des déclinaisons, des "saveurs", permettant à chaque utilisateur de choisir la distribution originelle et généraliste, ou bien une de ses saveurs spécialisée dans un domaine, ce qui permet d'avoir un système spécifiquement adapté à ses besoins ou à sa philosophie.
Tant pis pour ceux qui souffrant d'ulcères chroniques ne supportent pas qu'une distribution généraliste aboutie permette de donner aisément naissance à des dizaines de déclinaisons spécialisées. Au final, ce sont les utilisateurs et la diversité des communautés du libre qui gagnent.
makidokoBonne analyse.
BrakbabordOula, bon d'accord je ne m'y connais pas beaucoup mais j'ai la vision d'un fork comme sur GitHub :
_ reprendre le code source pour rajouter une grosse fonctionnalité et après l'inclure sur le projet initial
_ personnaliser le programme ou l'adapter à ses besoins (sans entrer en concurence)
_ ... en clair faire un fork c'est juste reprendre le code d'un programme et continuer à partir de celui-ci
Je n'ai pas envie de rentrer dans le troll "(K/X/..)Ubuntu sont-ils des concurents de Ubuntu ?" mais tu as remis en cause le fait que faire une distribution dérivée d'Ubuntu est un effort, or ce n'est pas une après-midi que passent les gens qui s'occupent de Kubuntu, Linux Mint, et autres...
DdUbuntu et Debian utilisent-elles la même plateforme de développement ? Non
Ubuntu et Debian utilisent-elles les mêmes dépôts ? Oui et non, pas le même nom
Ubuntu et Debian fournissent-elles des logiciels supplémentaires ? Oui, le truc, ubuntu-desktop
Ubuntu et Debian rentrent-elles en compétition ? Oui
Tu vois, selon son propre référentielle, Ubuntu est bien un fork de Debian. On pourrait même rajouter, que Ubuntu apporte très peu de code dans Debian (au niveau interne, pas juste modifier les « artworks »).
Pour parler de fork, tu aurais dû prendre un exemple plus concret, FreeBSD et DragonFly ou NetBSD et OpenBSD, là dans ces cas, la définition de Eric S. Raymond est totalement exacte. Mais cela suppose de voir au delà de la petite guéguerre Debian vs Ubuntu.
olivierDd: Tu confonds fork et branching. Faire une branche dans l'arbre de développement est quelque chose qui arrive tout le temps et qui est intimement lié aux systèmes de gestions de versions.
Je n'ai pas dit que toutes les dérivées d'Ubuntu s'était construites en un jour, mais que l'action de base, celle de repackager l'ISO pour changer le fond d'écran, de bootsplash et la liste des packages, avec Remastersys par exemple, est très courte. Linux Mint contient des logiciels qui ont été écrit spécifiquement pour cette distribution, bien sur qu'ils ont demandé du temps pour être écrits. D'une manière générale, la majorité des linuxiens passent du temps pour customiser leur distribution. Certains choisissent de faire partager leurs efforts, d'autre pas.
@Olivier : Je trouve quand même qu'on fork qui viens synchroniser son code tous les 6 mois auprès de son projet parent est un fork très louche ;)
striderDebian et Ubuntu sont des distributions qui ont des objectifs différents, ce qui peut expliquer que tout le code écrit pour Ubuntu n'est pas nécéssairement mis dans Debian. Je ne parlerais pas de ubuntu-desktop car ce n'est pas un logiciel mais un meta-paquet, ça rejoins donc les changements de fichiers de configurations ou d'offre logicielle installée par défaut et qui ne définissent pas un fork. Il y a bien des outils spécifique a Ubuntu, le Software Center ou le client Ubuntu One par exemple, les mainteneurs Debian sont libre de les ajouter dans leurs dépôts, même si cela n'est pas vraiment pertinent.
En tout cas Ubuntu a besoin de Debian comme base, donc j'aurais du mal a parler de compétition. Ubuntu n'a aucun intérêt a "bouffer" Debian.
Un vrai fork crée 2 projets qui deviennent totalement indépendants, ton exemple des *BSD est très bon.
Mouais... Encore faudrait-il qu'il n'y ait qu'un sens, et un seul, au mot fork... Et puis, vois-tu, la langue ça n'est pas des mathématiques ou le code de la route : il peut arriver d'utiliser un mot, non pour le sens que l'on trouvera dans tel ou tel jargon,mais avec une certaine voisinance...Ce que l'on appelle communément une "image". On le fait tous les jours, plus encore sur n'importe quelle place de marché que n'importe où !
Cela dit, il m'est arrivé d'employer "fork" dans un autre sens que tu ne mentionnes pas et qui est communément admis sous UNIX, la fonction... Et je crois d'ailleurs ne pas trop dénaturer la pensée de Fred (puisque c'est à son article que tu fais référence et non au mien... parce que j'utilise rarement ce mot "fork") en disant que c'est à partir de cette idée qu'il métaphorise... la filiation et le principe d'héritage.
De là à dire que d'utiliser un mot par voisinance c'est ne rien avoir compris au Logiciel Libre... c'est pour le coup au moins une grossièreté !
ChristopheJ'oubliais Mathieu... c'est pas mal de citer les sources de la "polémique" si tant est que s'en soit une. Ça permet à chacun de s'y retrouver et de retrouver ses billes. Et puis c'est élégant... enfin, je trouve.
Christophe@Christophe : Ca m'étonne de toi étant donné que tu es plus littéraire qu'informaticien. Les mots ont un sens et utiliser un mot (fork) a la place d'un autre (dérivé, basé sur, branche) n'est pas anodin. Au mieux c'est une méconnaissance du terme, au pire une intention volontaire pour rajouter une connotation négative. Si chacun se met a utiliser des termes comme bon lui semble, on va finir par avoir du mal a se comprendre.
Le pire étant quand un groupe de personne utilise de travers un terme et que la signification d'origine est "salie" a tout jamais (Par exemple, le ter.me Hacker, totalement dénaturé par les médias).
Je suis d'avis que la signification des termes doit être défendue sinon on va vers une banalisation des mots et un appauvrissement du langage.
Quand je parlais de n'avoir pas saisi l'essence du libre je fait reference au type de discours que j'entends trop souvent "Encore un fork d'Ubuntu *grogne* Distrowatch machin, les débutant ceci, le chaos, la confusion, quelle perte de temps, bli blu *rouspète* *rouspète*". Pour moi ce genre de discours est incompatible avec quelqu'un qui a saisi entièrement la notion de logiciel libre.
Enfin, il n 'y a pas de "sources" a citer, pas de polémique. Ce billet viens d'une accumulation de choses, et le billet de Fred, puisque tu le cite est uniquement la goutte d'eau.( En fait le vrai déclencheur c'est le fait que les commentaires soient fermés sur le blog de Fred ;) ).
striderJe ne vais pas citer chaque article de Cyrille ou il fait mention de forks de distributions, déjà que je suis très peu friand de liens hypertexte au sein de mes billets, dans le cas présent ce n'est pas utile. Il n'est pas question d'affront entres billets de blogs éphémères.
Ah ! quelle vision naîve du langage : « Les mots ont un sens.. Si chacun se met a utiliser des termes comme bon lui semble, on va finir par avoir du mal a se comprendre. »
Les mots ont un sens (ou des sens) dans les dictionnaires. Comme l'écrivait Benveniste, « dire bonjour tous les jours à quelqu'un c'est chaque fois quelque chose de différent. » Tous les jours, nous réinventons les mots. Le mot « bonjour » peut bien vouloir dire quelque chose dans le dictionnaire, quand nous l'utilisons tous les jours nous en faisons autre chose... Ne t'est-il jamais arrivé de dire "bonjour" en disant autre chose que ce qui est écrit dans le dictionnaire, le contraire même, voire tout autre chose ?
Le procédé qui consiste à en choisir un, le mot fork pour parler de celui-là, et de le faire dériver, est lui-même des plus courants. D'ailleurs, l'emploi que tu en fais dans ton article est une dérivation ou un emploi figuré. Cf. Wikiếdia et "man fork".
Je vais te décevoir mais il faut que je te le dise tout de même. Il y a belle lurette que l'on sait que parler suppose autre chose que de coller des sens à des mots. Et d'ailleurs que sont-ils sinon des "maillons" (pour te le dire de manière imagée), de simples maillons qui,sans aucune "articulation" seraient totalement inopérants. Tout bonnement parce qu'on ne parle ou n'écrit pas avec des mots, pas plus qu'on ne parle ou n'écrit avec le sens des dictionnaires. Pour faire court, nous utilisons plutôt des "concepts" (au sens linguistique qui est un emploi historique - comme un code - dans les théories du langage). Ce qui prime c'est la relation. Être significatif ou distinctif, c'est la même chose. Rien n'a de sens en soi. Le sens naît des rapports que l'on établit entre les termes. J'aime bien cette pensée de Paul Claudel qui résume cette idée : « Je ne suis que par ce que je ne suis pas ». L'important c'est le « par ».
Dans le discours, le mot n'est nullement l'unité première et intangible (que l'on ne peut changer), c'est plutôt une variable qui prend sa valeur dans une proposition (un ensemble de relations ou d'instructions si tu préfères). Ce qui importe est bien plus ce qui naît de cet ensemble de relations entre les mots que les mots et le sens des mots eux-mêmes dans leur entrée dans un lexique quel qu'il soit. Cela n'est en rien un processus de dénaturation, c'est le fonctionnement du langage (parole ou écriture) humain dans ce qu'il a de plus commun. Lorsque les scientifiques (ou autres communautés) stabilisent le sens des mots c'est pour en faire du code... ils figent la valeur et font sortir, pour un temps et dans une certaine mesure, le mot du flot de la parole, de la vie des mots, en quelque sorte. C'est ici qu'il y a dénaturation et non dans la dérivation ou l'emploi imagé.
ChristopheJe suis bien d'accord avec toi sur le fait que le sens des mots évolue et que de nouvelles significations apparaissent tout les jours. Hacker viens du verbe "to hack" que l'ont pourrait traduire par "couper grossièrement a la hache", cela ne veux pas dire qu'un hacker est un bucheron ...
striderEt comme du l'a précisé le terme fork viens de l'appel système fork() qui clone un processus.
Ce qui me dérange c'est le fait de s'approprier un terme, en changer le sens dans un contexte très proche de celui d'origine, ce qui enlève sa vraie signification. On ne va pas confondre un hacker avec un bucheron, ou on ne va pas confondre une technique de développement avec une fonction C. En revanche on peut croire qu'un hacker est un cracker a cause de l'abus de langage fait par les médias. Et qu'un fork n'est plus qu'une variante d'un programme. Si un hacker désigne un cracker alors comment appelle t'on un informaticien bidouilleur qui réalise avec sa machine des choses qui n'étaient pas prévues a l'origine ? Et si un fork est une simple variante, comment appelle t'on la séparation d'un projet suite a un conflit qui donne naissance a deux projets totalement indépendants ?
Ce genre de transformation ne peut aboutir qu'a une chose, l'appauvrissement de la langue.
Je te le redis, pour que l'on se comprenne bien, quand Fred utilise "fork", il met très certainement en évidence la filiation ou l'héritage (dans un sens métaphorique du processus fork) qui (r)appelle celui de la variante/séparation. Il ne s'agit nullement d'un appauvrissement mais d'un emploi "second" qui n'annule en rien d'autres emplois... Dans le cas du mot "hacker" j'avais écrit il y a quelques années de ça un article sur la question. Mais là, il s'agit plus d'une confusion entre "hacker" et "cracker". Laquelle s'impose mais n'annule pas non plus celle que tu revendiques... La langue est très économe... viendra le temps où l'un ou l'autre disparaîtra certainement. Ce n'est pas un appauvrissement, c'est juste que les mots sont solubles dans la vie (du langage).
ChristopheChristophe a très bien expliqué ma version du terme "fork", dans le sens où je parlais d'une dérivation à la limite "malsaine" de la distribution reine actuelle.
"Enfin, il n 'y a pas de "sources" a citer, pas de polémique. Ce billet viens d'une accumulation de choses, et le billet de Fred, puisque tu le cite est uniquement la goutte d'eau.( En fait le vrai déclencheur c'est le fait que les commentaires soient fermés sur le blog de Fred ;) )."
Mes articles voient leurs commentaires fermés au bout de 15 jours. C'est assez clair ? ;)
FredBeziesJe comprends pas ce qu'il y a de malsain a faire des dérivées. C'est comme si on créait une license Creative Commons du type "Les travaux dérivés sont autorisés mais n'abusez pas quand même".
C'est le fait que toutes ces distributions soient basées sur la même base qui est génant ? Mais est ce qu'il existe des outils pour ArchLinux ou Gentoo qui soient aussi simple a utiliser que RemasterSys ?
Et puis il faut prendre en compte le nombre d'utilisateurs pour chaque distribution. Une distribution qui compte 3% population de la population Linuxienne ne va pas donner naissance a des dixaines de dérivées, c'est mathématique.
On fait tout un foin pour ces histoires de distributions, mais un Linux est un Linux, il n'y vraiment pas grand chose qui différencie une version d'une autre.
Pour les commentaires ... le billet date d'avant hier ! Et il y a une indication en rouge "Les commentaires sont fermés." tout en bas. Ca y est c'est le bug de l'an 2010 qui frappe...
(passe sur le salon #planete libre si tu peux)
strider