L'Agenda du Libre

Logiciels, Arts, Données, Matériels, Contenus, Communs, Internet...

Paris Conférence Parinux : Les nouveaux systèmes de gestion de version

Le jeudi 10 novembre 2005 de 19h30 à 21h30.

Paris, Île-de-France

La prochaine conférence Parinux se tiendra le jeudi 10 novembre 2005 à 19h30, à 'adresse suivante :

Relais Ménilmontant
85bis, rue de Ménilmontant
75020 Paris
Métro Ménilmontant

Elle sera animée par Stéphane Bortzmeyer, ingénieur à l'AFNIC.

Grâce entre autres à l'hébergeur SourceForge, l'utilisation de systèmes de gestion de versions (VCS, Version Control System, également appelés SCM pour Source Code Management) en réseau s'est largement répandue et ces systèmes sont désormais un des principaux outils de travail collaboratif. Fini, le travail solitaire du programmeur génial, dont le monde ne voyait rien avant la "release".

Plus faciles d'utilisation et plus répandus, ces VCS sont utilisés par les développeurs bien sûr, mais aussi par les webmestres pour gérer les fichiers qui composent le site Web, par les auteurs de documentation ou de support de cours pour gérer leurs documents, articles ou exposés, etc.

Pendant très longtemps, l'unique logiciel sérieux de gestion de versions était CVS. Il reste aujourd'hui la référence. Mais maintenant que le vénérable CVS atteint sérieusement ses limites et que la créativité bouillonne dans ce domaine, après dix ans de monopole absolu de CVS, on va s'intéresser à la concurrence.

CVS souffre en effet de plusieurs limites : les "commits" ne sont pas atomiques (en cas de disque plein, par exemple, on ne commite qu'une partie des fichiers), les répertoires et les meta-données (le fait qu'un fichier soit exécutable, par exemple) ne sont pas versionnés, le travail sur du code tiers, développé en amont, est très pénible (l'outil de CVS pour ce travail, les branches, étant lent et difficile d'usage). Enfin, le code n'est plus du tout maintenu.

Pour succéder à CVS, il existe deux sortes de VCS, centralisés ou décentralisés. Tous ont en commun de ne plus travailler par fichier, comme CVS, mais par "changeset" ou "patch", un ensemble de changement sur plusieurs fichiers.

Dans les systèmes centralisés, il y a un dépôt de référence et les utilisateurs lisent et écrivent uniquement dans ce dépôt. CVS est l'archétype de ces VCS. Mais désormais, sur ce créneau, il cède du terrain à Subversion. Ce dernier, baptisé "CVS++", tente de faire "CVS sans les problèmes". Par exemple, une petite révolution : on peut enfin renommer un fichier. Ou bien on peut enfin "versionner" les meta-données.

Les concepts étant les mêmes, les simples utilisateurs passent de CVS à Subversion en cinq minutes, d'autant plus que les commandes sont identiques. Pour l'administrateur, c'est plus difficile, car le changement est plus profond. Le format du dépôt est complètement différent (il en existe au moins deux, avec DB et avec des fichiers plats). La configuration d'un serveur réserve quelques pièges, on peut utiliser Apache 2 et WebDAV ou bien le plus simple svnserve.

Dans les systèmes décentralisés, le sujet chaud du moment, on essaie de mieux coller au mode de développement en réseau si fréquent dans le logiciel libre.

Dans ces VCS, il n'y a plus de dépôt de référence. Plusieurs dépôts coexistent et on peut lire et écrire dans celui de son choix.

Cela met fin au dépôt central sacré avec ses "commiteurs" privilégiés qui regardent les autres de haut. Le fait d'accorder ou de refuser le droit de "commiter" entraîne souvent des crises qui sont désormais inutiles.

La décentralisation permet plus facilement de suivre un logiciel amont, auquel on ajoute quelques patches qui ne seront pas forcément intégrés. Les VCS décentralisés dédramatisent ainsi le "fork", la scission, qui a secoué tant de projets de logiciel libre, en le rendant moins radical et moins définitif.

Elle permet enfin, ce qui est important compte tenu de l'explosion de l'utilisation des portables un travail en déconnecté (le portable contient un vrai dépôt). Les principaux représentant de la catégorie des VCS décentralisés sont Mercurial, SVK, monotone, git et enfin darcs, qui est le plus simple à utiliser.

Arch et sa mise en oeuvre la plus connue, tla, est l'ancêtre des VCS décentralisés. tla est très complexe à utiliser, mais il a néanmoins débayé le terrain et introduit le concept de décentralisation auprès de beaucoup d'utilisateurs, concurrençant sérieusement Subversion.

Plus récent, darcs est à la fois bien plus simple (comme CVS, on peut s'y mettre en quelques minutes) et plus matheux avec sa fameuse "théorie des patches" qui tente de donner un cadre théorique solide à la gestion des conflits entre dépôts décentralisés qu'on essaie de synchroniser. L'algorithmique mise en jeu par les VCS décentralisés est en effet bien plus complexe.

C'est darcs qui pousse le plus loin la logique des VCS décentralisés : toute copie de travail est un dépôt de plein droit. L'équivalent des branches de CVS, par exemple, est juste un autre dépôt..

Contrairement à Subversion, darcs n'est pas encore utilisé en production pour des gros projets mais il est très prometteur.

Informations

Site web
http://www.parinux.org/
Contact
parinux CHEZ parinux POINT org
Mots-clés