Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Problematique´ du developpement´ en equipe´
SCM – Software Configuration Management COMMUNIQUER
Outils de gestion de sources 1. des objectifs, des idees,´ un design, une intention, une specification´ 2. des informations, des pratiques, des standards
Fabien Coelho 3. des sources, des versions
Ecole´ des mines de Paris 4. des documents [email protected] 5. des problemes/anomalies` rencontres´
6. des annonces
revision´ 309 du document 7. desdecisions´ (leadership ?)
1 2
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Developper´ est un Art The art of computer programming, Donald E. Knuth Outils divers • 1 probleme,` 10 programmeurs = 10 solutions...
messagerie listes de diffusions dev, user, annonce creation,´ composition, choix, style
plateforme web annonces, diffusions, taches,ˆ bugs • choix guides´ par des criteres` esthetiques´
archives historique, indexation et recherche indentation, decoupage´ fonctionnel/classe. . . nom des variables, des fonctions, des classes. . . dep´ otˆ de sources partage des sources du projet contenu des commentaires forum, irc discussions eventuelles.´ . . • un programme est une preuve de theor´ eme` : astuce, el´ egance´
• pas reellement´ compatible avec les brevets
3 4
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Differents´ modes de developpement´ de logiciels Un logiciel est vivant 1. personnel collaboration avec soi-meme...ˆ • mots : sources, heritage´ retour en arriere` parfois necessaire.´ . . • opere` dans un environnement qui evolue´ 2. centralise´ collaboration avec d’autres developpeurs´ • evolution´ perpetuelle´ du logiciel interactions, complementarit´ e,´ conflits, propositions – correction de bogues 3. distribue´ chacun pour soi (mais on partage ?!) – adaptation a` de nouveaux besoins base commune plus collection de patches
5 6
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
1. Developpement´ personnel de logiciels 2. Developpement´ collaboratif centralise´ de logiciels
objectif organisation de son travail objectif creation´ d’une œuvre commune
probleme` perte de donnees,´ de fonctionnalites´ probleme` gestion de versions differentes´
responsabilite´ pas de comptes a` rendre responsabilite´ partage, droits selon parties
coordination non coordination oui
distance non distance oui (souhaitable)
centralisation oui centralisation oui
partage direct si acces` aux memesˆ fichiers ! partage naturel, a` chaque update
risques effacement, modifications risques modifications, conflits
exemples mes programmes, mes cours... exemples apache, postgresql, subversion
7 8 Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
3. Developpement´ distribue´ de logiciels
objectif partage de patches sur une base commune Le developpement´ sans outils probleme` gestion d’une collection de patches risques de pertes si erreur, pas de retour en arriere` responsabilite´ non collaboration partage de fichiers : conflits temps reel´ coordination faible copies inefficaces sauvegarde par duplications. . . distance oui identification des modifications ? auteur, date centralisation non recherche de l’etat´ a` une date donnee´ ? partage publi perso (push), recup´ eration´ S (fetch) versions multiples corrections multiples des bugs communs ? risques faibles
exemples debut´ d’apache, linux, netfilter
9 10
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Gestions de revisions´ de fichiers Partage de fichiers fichiers de donnees´ Software verrouillage avant modification lock-modify-unlock • textes, binaires (bof), repertoires,´ liens. . . propriet´ es´ ? • acces` local ou droit acquis a` distance • documentation : pref´ erer´ sources xml/sgml/tex, eviter´ doc/ps/pdf • empecheˆ les autres d’avancer... • interfac¸age avec des outils de developpement,´ e.g. eclipse • ne pas oublier de deverrouiller´ ! vol, timeout ? revisions´ garder l’historique Configuration fusion de modifications copy-modify-merge • auteurs, messages, dates des transformations • modification sur des copies personnelles • effacement ? renommage ? modifications de structures ? • conflits rares, ag` erer´ a` la main gestion evolutions´ divergentes Management • soumission de modifications (patches) acceptees´ ou refusees´ • versions successives release, revision, bugfix
11 12
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Logiciels (libres) supports Besoins centralise´ local acces` physique necessaire,´ bof ! trunk version principale de developpement´ SCCS 1980 Source Code Control System branches evolution´ divergentes des sources RCS 1982 Revision Control System • e.g. corrections de bugs dans une release CSSC 1998 Compatibly Stupid Source Control (SCCS libre) • isolement de developpements´ independants´ centralise´ distant avec acces` reseau´ possible tags marquage d’une version particuliere` CVS 1993 Concurrent Versions System
• la nommer, la dater, la retrouver plus tard SVN 2001 Sub VersioN
• normallement non modifie/modifiable´ frozen distribue´ fusions croisees,´ evolutions´ independantes´
bundles logiciels lies´ GNU Arch 2001 GNU Arch SVK 2003 SubVersion Kit (?), utilise SVN • sous projets, librairies partagees´ apr de apache GIT 2005 GIT pour sources Linux
13 14
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Modele` centralise´ : progression continue RCS, CVS, SVN
SCCS CSSC RCS historiques de fichiers • fichiers ger´ es´ individuellement et localement Interfaces • pas de manipulations globales directes, renommage, deplacement´ • commandes shell Unix : svn cvs rcs sccs git • gestion de branches possibles, numerotations´ 1.3.2.4 • outils graphiques specifiques´ CVS arborescence d’historiques de fichiers • partage reseau´ des donnees´ • plugins explorateurs de fichier (TortoiseSVN)
• probleme` renommage, effacement de fichiers et repertoires´ • plugins eclipse (CVS, SVN. . . ) • branches possibles avec numerotations´ a` la RCS • modes editeurs´ : emacs, vi SVN historique d’une arborescence de fichiers • partage reseau´ des donnees,´ acces` multi protocoles • branches et tags par copies, bundles par ref´ erences´ externes
15 16 Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Politiques de gestion des sources
Nombreux produits droits qui peut faire un commit ?
Centralise´ protocoles d’acces` ? (fs, http...) • de tout le monde a` quelques uns ?
free SCCS, RCS, CVS, SVN, Vesta responsabilites´ ? administration des droits ? • com MS Visual SourceSafe, IBM Rational ClearCase, Perforce, Serena selon les parties du logiciel (librairies, docs, traductions). . . Dimensions • soumission de patches, revues strictes pour acceptation
Distribue´ protocoles diffusion ? (mail, ftp, http...) periodes´ de vie d’un logiciel
free GNU Arch, ArX, ARCS, Monotone, Git, Bazaar, Codeville, developpement´ en cours, nouvelles fonctionnalites´
Mercurial, SVK, Aegis, DCVS. . . feature freeze correction de bugs (alpha, beta, rc)
com MKS BitKeeper, Wandisco, TeamWare release/revision supporte,´ corrections de bugs uniquement
obsolete` d’une version
17 18
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Theorie´ des numeros´ a` trois chiffres : 1.2.3 Versions proposees´ release 1.x a` 2.0 fonctionnalites´ majeures, 3 a5ans?` current version en cours de developpement,´ instable. . . apache changement d’API des modules selon la politique de gestion des sources postgresql format bases incompatibles snapshot version d’un jour (une nuit) svn dep´ otsˆ incompatibles alpha version de test peu stable (pre-alpha) revision x.2.y a` x.3.0 fonctionnalites´ mineures, 1 an ? beta version de test assez stable apache recompilation des modules rc release candidate, dernieres` verifications´ bugfix x.y.0 a` x.y.1 resolution´ de bugs, 1 a` 3 mois ? release/revision/bugfix en avant ! php helas.´ . . 4.4.6 change version librairie PCRE
19 20
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
marketing pas rationnel, pousse a` aller plus vite Releases. . . Sun Solaris 2.6 2.7 8 9 10... premier chiffre a` 0... ne pas trop en attendre ! Sun Java 1.0 1.1 1.2 1.3 1.4 (Java 2) 5.0 6 http 0.9, 1.0, 1.1 MS Windows 33.1 9598NTME20002003XPVista... annees´ ?
second chiffre pour separer´ developpement/sorties´ lettres et noms plus facile am` emoriser´ linux 2.2, (2.3), 2.4, (2.5), 2.6 Oracle 6 7h 8 8i 9i 10g 11g... datawareHouse, Internet, Grid
apache 2.0, (2.1), 2.2 MacOS cheetah puma jaguar panther tiger leopard... Debian buzz rex bo hamm slink potato woody sarge etch lenny... support des anciennes versions limite´ dans le temps Ubuntu Warty Warthog, Hoary Hedgehog, Breezy Badger, Dapper Drake, apache (... 1.2) 1.3, 2.0, 2.2 Edgy Eft, Feisty Fawn, Gutsy Gibbon, Hardy Heron postgresql (... 7.2 7.3) 7.4, 8.0, 8.1, 8.2 TEX version 3.141592 (2002) Donald E. Knuth, converge vers π ! svn (0.9 1.0) 1.1, 1.2, 1.3, 1.4, 1.5 METAFONT version 2.71828 converge vers e !
21 22
Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Conclusion
• pas d’outils adapte´ a` tous les modeles` de developpement´ Melange´ patch securit´ e´ et fonctionnalites´ • un bon outil n’implique pas un bon projet, et inversement ! • risques sur les applications, donc pas de deploiement´ ? • subversion c’est bien • specialiste´ : Microsoft
Windows XP juin 2006 : ajoute Windows Genuine Advantage Au dela` des sources • mais aussi : Apple (iPhone) construction logiciel et doc (configure, make) • mais aussi : ports FreeBSD vs stabilite´ Debian tests unitaires ou globaux, portabilite´
communication interne/externe, diffusion, documents, anomalies
23 24 Fabien Coelho SCM – Software Configuration Management Fabien Coelho SCM – Software Configuration Management
Liens RCS http://www.gnu.org/software/rcs/
SVN http://subversion.tigris.org/ monotone http://venge.net/monotone/ GNU-Arch http://www.gnu.org/software/gnu-arch/
git http://git.or.cz/
darcs http://www.darcs.net/
bazaar-ng http://www.bazaar-ng.org/ SVK http://svk.elixus.org/ misc http://dmoz.org/Computers/Software/ Configuration\_Management/ CVS http://www.cvshome.org/
25 26
List of Slides 11 Gestionsde revisions´ de fichiers 12 Partage de fichiers 1 SCM– Software Configuration Management 13 Besoins 1 Outils de gestion de sources 14 Logiciels (libres) supports 2 Problematique´ du developpement´ en equipe´ 15 Modele` centralise´ : progression continue RCS, CVS, SVN
3 Outils divers 16 Interfaces
4 Developper´ est un Art 17 Nombreux produits
5 Un logiciel est vivant 18 Politiques de gestion des sources
6 Differents´ modes de developpement´ de logiciels 19 Versions proposees´
7 1. Developpement´ personnel de logiciels 20 Theorie´ des numeros´ a` trois chiffres : 1.2.3
8 2. Developpement´ collaboratif centralise´ de logiciels 21 Releases...
9 3. Developpement´ distribue´ de logiciels 23 Melange´ patch securit´ e´ et fonctionnalites´
10 Ledeveloppement´ sans outils 24 Conclusion
24 Audela` des sources
25 Liens