POSSFR AnnexeA
De Framalang Wiki.
| Chapitre 9 : Licences, droits d'auteur et brevets | | Annexe B |
Annexe A : Solutions libres de gestion de versions
Voici une liste de tous les logiciels Open Source de gestion de versions à ma connaissance à la mi-2007. Le seul que j'utilise régulièrement est Subversion. Subversion et CVS mis à part, je vous confesse que mon expérience de ces systèmes est limitée, voir inexistante. Les informations présentées ici sont tirées des sites Web des logiciels. Voir également http://en.wikipedia.org/wiki/List_of_revision_control_software en anglais ou http://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions en français.
- CVS - http://nongnu.org/cvs/
Ça fait quelques temps maintenant que CVS existe, de nombreux développeurs le connaissent déjà bien. À son époque, il était révolutionnaire : ce fut le premier logiciel de gestion de versions Open Source à proposer aux développeurs un large accès réseau (à ma connaissance), et aussi le premier à permettre aux utilisateurs anonymes d'extraire le code, ainsi les nouveaux développeurs pouvaient s'impliquer en douceur dans un projet. CVS ne versionne que les fichiers, pas les dossiers. Il permet de créer des branches, des étiquettes et propose de bonnes performances côté client, mais il ne gère pas très bien les gros fichiers ou les fichiers binaires. Les commits atomiques ne sont pas non plus pris en charge. [Note : j'ai participé au développement de CVS pendant cinq ans environ, jusqu'à ce que je rejoigne le projet Subversion créé pour le remplacer.]
- Subversion - http://subversion.tigris.org/
Subversion a été créé pour remplacer CVS. Il possède sensiblement la même approche du contrôle de versions, mais corrige les problèmes que rencontraient fréquemment les utilisateurs de CVS et ajoute des fonctionnalités. L'un des buts de Subversion est de ne pas brusquer les habitués de CVS. Je ne m'attarde pas ici sur les fonctionnalités de Subversion, consultez le site Web du projet pour plus d'informations. [Note : Je suis impliqué dans le développement de Subversion, et c'est le seul système parmi ceux listés ici que j'utilise régulièrement.]
- SVK - http://svk.elixus.org/
Bien que basé sur Subversion, SVK ressemble probablement d'avantage à Arch. SVK gère le développement distribué (non-centralisé), possède un système de fusion des modifications intelligent, et a la capacité de copier des dépôts provenant de systèmes de gestion de version autres que SVK. Référez vous au site Web pour en savoir plus.
- Mercurial - http://www.selenic.com/mercurial/
Mercurial est un système de contrôle de versions distribué qui offre, entre autre, « un indexage croisé complet des fichiers et des ensembles de modifications, des protocoles de synchronisation HTTP et SSH optimisant l'utilisation de bande passante et de CPU, un système de fusion arbitraire entre branches, une interface Web indépendante. Il est de plus portable sur Unix, MacOS X et Windows » (cette liste de fonctionnalités est tirée du site Web de Mercurial).
GIT est un projet initié par Linus Torvalds pour gérer l'arborescence du noyau Linux. Il cible très précisément les besoins du développement d'un noyau. Il était toujours en développement au moment de l'écriture de ce livre. Il ne semble pas encore disposer d'un site Web mais consultez l'entrée Wikipedia ci-dessus, les informations qu'elle contient devraient être plus à jour.
- Bazaar - http://bazaar.canonical.com/
Bazaar est encore en développement. Il sera une implémentation du protocole GNU Arch, en assurera la compatibilité à mesure qu'il évoluera et collaborera avec le groupe de travail de la communauté GNU Arch pour toute modification du protocole qui pourrait être nécessaire aux utilisateurs.
- Darcs - http://abridgegame.org/darcs/
« David's Advances Revision Control System est un nième remplaçant de CVS. Il est écrit en Haskell et portable sous Linux, MacOs X, FreeBSD, OpenBSD et Microsoft Windows. Darcs inclut un script cgi qui peut être utilisé pour visionner le contenu de votre dépôt. »
GNU Arch supporte à la fois le développement distribué et centralisé. Les développeurs commitent leurs modifications dans une « archive », qui peut être locale, et les modifications peuvent être poussées ou insérées dans d'autres archives, selon les décisions du responsable de ces archives. Il en découle qu'Arch dispose d'un support de fusions plus sophistiqué que CVS. Arch permet également à une personne de créer facilement des branches pour des archives sur lesquelles elle n'a pas les droits de commit. Ceci n'est qu'un simple aperçu des fonctionnalités de Arch, voir les pages Web du projet pour plus d'informations.
- monotone - http://www.venge.net/monotone/
« Monotone est un système de gestion de versions libre. Il fournit un système de « stockage de version » simple, utilisant un fichier unique et des transactions. Les opérations s'effectuent hors ligne et le système fournit un protocole de synchronisation pair-à-pair efficace. Il supporte la fusion de versions basée sur l'historique, un système de branches simplifié, la vérification de code intégrée et les tests externes. Il utilise des algorithmes de hashage pour l'identification des versions et des certificats RSA côté client. L'internationalisation est poussée et le programme ne possède pas de dépendances externes (fonctionne sous Linux, Solaris, OSX et Windows). Il est placé sous licence GNU GPL. »
- Codeville - http://codeville.org/
« Pourquoi un système de contrôle de versions de plus ? Tous les autres systèmes de contrôle de versions vous demandent de suivre consciencieusement les différentes branches pour ne pas avoir à fusionner plusieurs fois les mêmes conflits. Codeville est beaucoup plus anarchique. Il vous permet de mettre à jour ou de valider des modifications depuis n'importe quel dépôt, n'importe quand, sans fusions inutiles. » « Codeville crée un identifiant pour tout changement apporté, et garde en mémoire la liste de tous les changements appliqués à chaque ficher ainsi que le dernier changement pour chaque fichier et pour chaque ligne. Quand il y a un conflit, il vérifie si l'un des deux côtés a déjà été appliqué à l'autre et, si c'est le cas, déclare vainqueur l'autre côté automatiquement. Quand il y a effectivement un conflit de versions empêchant la fusion automatique, Codeville se comporte presque comme CVS. »
- Vesta - http://vestasys.org/
« Vesta est un système de gestion de versions portable qui vise à accompagner le développement de logiciels, quelle que soit leur taille, des plus petits (moins de 10 000 lignes de code) aux très gros (10 000 000 de lignes de code). » « Vesta est un système mature, résultat de dix années de recherche et développement au centre de recherche Compaq/Digital System et a été employé par le groupe Compaq's Alpha Microprocessor pendant deux ans et demi. Le groupe Alpha était alors composé de plus de 150 développeurs répartis sur deux sites à des milliers de kilomètres de distance, sur les côtes Est et Ouest des États-Unis. Ont ainsi été gérées des distributions contenant jusqu'à 130 MO de données sources, chacune produisant 1,5 GO de données dérivées. Les versions compilées sur le site de la côte Est produisaient environ 10-15 GO de données dérivées par jour, toutes gérées par Vesta. Bien que Vesta ait été pensé autour du développement de logiciel, le groupe Alpha a démontré la flexibilité du système en l'utilisant pour développer du matériel informatique, alimentant l'outil avec les fichiers de données matériel en langage spécifique puis en construisant des simulateurs et d'autres objets dérivés avec l'outil de développement adossé à Vesta. Les membres de l'ancien groupe Alpha (incorporé à Intel maintenant) continuent d'utiliser cet outil dans le cadre d'un nouveau projet de microprocesseur. »
- Aegis - http://aegis.sourceforge.net/
« Aegis est un système de gestion de versions. Il fournit un cadre de travail dans lequel une équipe de développement peut progresser indépendamment sur de nombreuses modifications d'un programme, Aegis prenant en charge l'intégration de ces modifications dans les sources de référence avec aussi peu de perturbations que possible. »
- CVSNT - http://cvsnt.org/
« CVSNT est un système de contrôle de versions multi-plateforme avancé. Compatible avec CVS, la référence en entreprise, il le complète de nombreuses fonctionnalités. ...CVSNT est Open Source (logiciel libre en licence GNU General Public License). » Ses fonctionnalités incluent l'authentification via tous les protocoles standards de CVS auxquelles s'ajoutent les SSPI spécifiques Windows et Active Directory ; les échanges sécurisés par sserver ou SSPI chiffrés ; il est multi-plateforme (supporté en environnement Windows et Unix) ; l'intégration de la version NT aux systèmes Win32 est complète ; le système MergePoint supprime le besoin de baliser avant de fusionner ; bénéficie d'un développement actif.
- META-CVS - http://users.footprints.net/~kaz/mcvs.html
« Meta-CVS est un système de contrôle de version construit autour de CVS. Bien qu'il conserve la plupart des fonctionnalités de CVS, y compris son protocole réseau, il est plus performant que CVS et plus simple. » Les fonctionnalités listées sur le site Web de META-CVS comprennent : le versionnement de la structure des dossiers, une gestion améliorée des formats de fichiers, un système de branche et de fusion simplifié et agréable, le support des liens symboliques, des listes de propriétés attachées aux données versionnées, un système d'importation de données extérieures et de migration depuis un référentiel CVS.
- Open CM - http://www.opencm.org/
« OpenCM a été conçu pour être une alternative sécurisée à CVS en assurant un haut niveau d'intégrité des transactions. La page « Fonctionnalités » liste un certain nombre de fonctions essentielles. Bien qu'il ne soit pas aussi complet que CVS, il supporte quelques trucs utiles qui manquent à CVS. Pour faire court, OpenCM fournit un support de qualité pour renommer et configurer, une authentification et un contrôle d'accès chiffrés ainsi qu'un support avancé des branches. »
- PRCS - http://prcs.sourceforge.net/
« PRCS, le Project Revision Control System, est l'interface d'un ensemble d'outils qui, comme CVS, permettent de gérer des ensembles de fichiers et de dossiers comme une entité propre et en leur assurant une cohérence de version. ... Son but est proche de celui de SCCS, RCS et CVS, mais (d'après leurs auteurs en tout cas), il est beaucoup plus accessible que n'importe lequel de ces systèmes.
ArX est un système de contrôle distribué proposant des fonctionnalités pour gérer les branches et les fusions, ou pour assurer l'intégrité des données par chiffrement. Il permet de publier facilement des archives sur un simple serveur HTTP.
- Source - http://sourcejammer.org/
« SourceJammer est un système de contrôle de sources et de versions écrit en Java. Il consiste en un composant serveur qui gère les fichiers, l'historique de versions et traite les réservations, validations et autres commandes, ainsi que d'un composant client qui exécute les requêtes du serveur et gère les fichiers sur le système de fichier du client. »
« FastCST est un système « moderne » qui manipule des révisions de fichiers groupées, et utilise des opérations distribuées plutôt qu'un contrôle centralisé. Il suffit d'une adresse e-mail pour utiliser FastCST. Pour les configurations plus importantes, vous n'avez besoin que d'un simple serveur FTP et/ou d'un serveur HTTP, ou d'utiliser la commande intégrée « serve » pour exposer directement votre référentiel. Tous les ensembles de modifications sont uniques et renferment des tonnes de meta-données pour pouvoir rejeter tout ce dont vous ne voulez pas avant d'importer les données. La fusion s'opère par comparaison d'un ensemble de modifications à fusionner avec le contenu actuel du référentiel plutôt qu'avec un autre ensemble de modifications. »
- Supervision - http://www.supervision.org/
« Supervision est un système de contrôle de versions distribué et multi-utilisateur basé sur les ensembles de modifications. Son but est de proposer une alternative Open Source de niveau professionnel aux solutions commerciales, aussi simple à utiliser (voire même plus simple) et tout aussi puissante. De fait, une prise en main intuitive et efficace a été l'une des grandes priorités dans le développement de Supervision, et ce dès le début du projet. »
| Chapitre 9 : Licences, droits d'auteur et brevets | | Annexe B |

