Note : 8 ; Une excellente surprise, qui va plus loin que la mise en œuvre de RCS en présentant les finalités de la gestion du changement.
Pourquoi parler de SCCS et de RCS quand on utilise Clear Case ? au mi-temps des années 90, c’est le genre de questions que l’on pouvait se poser. Cet excellent ouvrage ne se limite pas à la comparaison de ces 2 utilitaires (il donne la préférence à RCS, l’ancêtre de CVS). Nous allons le voir.
L’ouvrage est du genre mastoc avec ses 23 chapitres sur 440 pages hors annexes. Comptez 50 pages de plus pour ces dernières ! Le premier chapitre est un simple tour de chauffe destiné à présenter les concepts de base de la gestion des sources.
Les chapitres 2 à 4 viennent en triplet, et ce sera vrai pour la suite de l’ouvrage : d’abord les principes généraux, puis la déclinaison RCS et enfin celle de SCCS. On commence ici avec les concepts de base : la copie de travail d’un fichier, la gestion du verrouillage… Bref, tout ce qui permet de faire une modification. Le chapitre RCS marche exactement dans les traces du chapitre 2 en présentant la syntaxe de cet outil pour lancer les commandes correspondantes. Il en va presque de même pour SCCS dont la philosophie est légèrement différente. Mais un tableau récapitule lesdites commandes pour les deux outils à la fin de chaque chapitre. Pratique.
Le second triplet nous fait faire un grand bond en avant, car on y aborde les concepts tels que branches, numéros de révision et snapshots. Les auteurs adoptent un angle « cas d’utilisation », plus pragmatique mais pas toujours facile à suivre. Pour la déclinaison RCS, le texte s’appuie beaucoup sur les fonctionnalités de branching (et donc de merge) de l’outil, tandis que le snapshot n’est guère évoqué. Côté SCCS, les choses paraissent même plus pauvres, mais on parvient à faire le lien avec le chapitre des généralités.
Le triplet suivant qui commence au chapitre 8 est mieux focalisé sur une problématique précise : la gestion des release, qui se matérialise essentiellement par la pose de labels. Les deux gestionnaires sont passés en revue avec leurs caractéristiques respectives, ce qui a un peu des allures de guide de référence. La gestion « multi-développeurs » abordée à partir du chapitre 11 est menée tambour battant. Il s’agit ici de traiter les droits d’accès et surtout la gestion des locks optimistes ou pessimistes. 3 chapitres très courts. Les parties consacrées à RCS et SCCS se concluent par un chapitre 14 de peu d’intérêt nous invitant à une réflexion sur un front-end RCS ou SCCS. Mais le propos n’est pas à la hauteur du sujet.
A partir du chapitre 15, c’est de TCS dont il est question (le gestionnaire de sources fictif des auteurs). Ce chapitre initial défend l’idée d’une surcouche sur les deux gestionnaires que nous venons de voir. Cela commence mal car je n’arrive pas à voir là où les auteurs veulent en venir. Au chapitre 16, l’auteur promeut son idée de « project control » dont le concept majeur est le « checkpoint tree », intéressant mais pas révolutionnaire, surtout aujourd’hui. L’idée est d’avantage développée au chapitre 17 où le texte aborde la notion de projet, qui mélange ici la notion de gestion de configuration. TCS n’est pas seulement une surcouche, mais une vision « opiniated » de la structure d’un projet, comme l’est Maven.
L’administration du projet (et non de l’outil) abordée au chapitre 18 est nettement moins convaincante, axée sur des gestions de droits différentiés pour créer des toolsets ou des checkpoints. Bof. Le support imaginé pour le support des Makefiles qui viennent s’intégrer ici mâtinent l’outil d’un pipeline d’intégration. Cette fois, c’est à Gitlab que ressemble TCS. Mais lire la conceptualisation de ceci avec le recul du temps est des plus intéressant. Les Work Area, sujet du chapitre 20 ressemblent aux branches locales de Git, n’était-ce la possibilité d’adapter les aspects build et tool. N’oublions pas de remettre tout ce ceci dans le contexte de l’époque, et le résultat est aussi des plus intéressants.
Au chapitre 21, il est question de développement cross-plateformes ce qui n’est guère surprenant, car dans la continuité des chapitres 19 et 20. La structuration du build au chapitre 22 nous fait furieusement penser aux chaines CI/CD, mais le tout en s’appuyant sur les targets du Makefile, donc avec bien plus de limitations. Le chapitre 23 qui clôt l’ouvrage évoque les surcouches à RCS et SCCS. La prose fait un peu catalogue, et tous ces outils sont passés dans l’oubli depuis longtemps, à l’exception d’un seul : CVS !
Les auteurs développent les concepts sous-jacents aux outils de gestion de version et de configuration : multiples releases, snapshots, gestion d’un projet complet, partage entre les développeurs. Les auteurs appuient les concepts qu’ils exposent sur TCCS, un utilitaire qu’ils ont développé au-dessus de RCS, mais aussi sur de nombreux diagrammes très pertinents. L’usage d’un outil de gestion de version va bien au-delà de son mode d’emploi, c’est ce que démontre ce livre que je recommandais à l’époque.
Référence complète : Applying RCS and SCCS – Don Boliger & Tan Bronson – O’Reilly & Associates 1995 – ISBN: 1-56592-117-8