
De afgelopen dagen heb ik mijn eerste praktische stappen gezet in de wereld van versiebeheer, patches (in Drupal), CVS en Cygwin. Als geheugensteuntje en hopelijk als hulp voor anderen schrijf ik hierover een aantal blogs. In dit artikel leg ik uit wat versiebeheer is en hoe Drupal ermee omgaat. Patches en CVS komen hierbij ook aan bod, Cygwin zie je in een andere blog terug.
Op www.drupal.org kun je in het blok Download snel de laatst gepubliceerde versie van Drupal zelf ('core') en van aanvullende modules, themes ('templates', de vormgeving) en van taalbestanden vinden. Op iedere pagina kom je een blokje 'Releases' tegen waarin je de vrijgegeven versie(s) van het onderdeel kunt vinden. Als dit blok ontbreekt, dan heeft de ontwikkelaar nog geen versie vrijgegeven. Je kunt de software downloaden via de link die in het blok staat (het installeren op zich wordt hier niet besproken).

In het bovenste blok, 'Official releases', zie je de versies staan die volgens de betrokkenen veilig zijn om gebruikt te worden. Veilig wil zeggen: de versie is getest en er zijn geen (grote) fouten gevonden. Er zullen altijd wel fouten in software zitten, maar daarvoor hebben we versiebeheer! Daar lees je verderop meer over. Je ziet trouwens dat er in dit geval twee versies van de software naast elkaar bestaan. De ene is geschikt voor Drupal 5 en de andere voor Drupal 6, let dus op dat je de versie downloadt voor jouw versie van Drupal! Je ziet de Drupal-versie staan in de kolom 'Status', maar je kunt hem ook afleiden uit het versienummer van de release in de eerste kolom. In de eerste regel in bovenstaande afbeelding zie je als versienummer staan: 6.x-2.6. Het gedeelte voor het streepje geeft aan voor welke Drupal-versie deze software geschikt is. In dit geval is dat voor elke willekeurige Drupal 6-versie. Achter het streepje staat de versie van het project (module, theme of language) waar dit blokje over gaat.
Zoals gezegd zitten er altijd wel fouten in software, maar soms willen ontwikkelaars de bestaande software ook uitbreiden met nieuwe mogelijkheden. Er wordt dus steeds aan de software gesleuteld. Als er gebouwd en getest wordt, dan kunnen er nog grote fouten in de software zitten. Deze versie van de software wil je dan ook niet inzetten op je website. In de afbeelding hierboven zie je in het tweede blok, 'Development snapshots', versies waaraan nog gewerkt wordt. Je kunt zo'n versie downloaden en op een testsite gebruiken om eens te kijken welke veranderingen zijn en worden doorgevoerd door de ontwikkelaars. In het blok wordt regelmatig automatisch de meest recente ontwikkelversie gepubliceerd vanuit het versiebeheersysteem. In de volgende paragraaf lees je over versiebeheersystemen in het algemeen, daarna is er aandacht voor het versiebeheersysteem dat voor Drupal wordt gebruikt.
Voor de uitleg van de werking van een versiebeheersysteem werken we met een voorbeeld. Bij het ontwikkelen van software kunnen meerdere programmeurs tegelijkertijd aan een stuk software werken. Stel je voor dat ontwikkelaar Piet op maandag een cd met software uit de kast pakt en met deze software aan de gang gaat. Collega Erik helpt hem vanaf donderdag en pakt dan de cd van de versie waarmee Piet maandag ook is begonnen. Erik zet de software op zijn eigen systeem en gaat enthousiast fouten zoeken en herstellen. Ondertussen heeft Piet de afgelopen dagen ook al wat fouten hersteld en heeft hij nieuwe mogelijkheden toegevoegd. Op vrijdagmiddag blijken Piet en Erik verschillende wijzigingen in hetzelfde deel van de code te hebben gemaakt. Het wordt nu een flinke klus om uit te zoeken wat 'goed' is. Een versiebeheersysteem kan hierbij helpen. Een simpel voorbeeld: Piet begint op maandag met de versie die van de cd komt en zet elke dag zijn versie van de software in het versiebeheersysteem. Dat doet hij dus ook op woensdag aan het einde van de dag. Als Erik donderdag komt, dan pakt hij de versie die als laatste in het versiebeheersysteem is gezet. Als Erik een fout heeft hersteld, dan kan hij hiervan een patch maken: hij laat het versiebeheersysteem zijn aangepaste code vergelijken met de code die in het versiebeheersysteem staat. Het verschil is de patch die wordt meegenomen in de volgende versie in het versiebeheersysteem.
Drupal gebruikt CVS als versiebeheersysteem. Dit is open source software en de afkorting staat voor Concurrent Versions System. Bij software met de omvang van Drupal werken soms vele programmeurs tegelijkertijd aan het verhelpen van fouten en het doorvoeren van verbeteringen. Er is een groep vaste ontwikkelaars ('maintainers') per project, maar omdat Drupal open source is, kan en mag iedereen helpen. Je kunt fouten melden, deelnemen aan discussies over nieuwe functionaliteit of zelf aan de slag gaan om bijvoorbeeld een gevonden fout te herstellen. Voor Drupal zelf en alle modules, themes en languages is afgesproken wie patches daadwerkelijk aan het versiebeheersysteem mogen toevoegen. Deze 'committers' testen elke patch goed en pas als een patch door de kwaliteitscontrole komt wordt hij toegelaten ('gecommit') tot het versiebeheersysteem. Ontwikkelaars die vervolgens verder willen werken aan de software halen de laatste versie weer op uit het versiebeheersysteem en zo begint de cyclus opnieuw...
Powered by Drupal and Drupal Theme created with Artisteer.
Duidelijk verhaal
Mooi overzichtelijk verteld, ik denk dat het voor veel beginners erg behulpzaam is! Issue queues bij modules worden vaak actief bijgehouden, het loont dan ook om bij problemen goed rond te pluizen, vaak kom je dan al een oplossing of patch tegen.
Naast -dev kom je overigens ook regelmatig alpha of beta releases tegen (vooral bij nieuwe projectem). Deze zijn vaak al wel 'groen' maar een alpha versie is nog steeds officieel niet stable (bijvoorbeeld stukken functonaliteit die nog niet goed werken). Beta releases zouden alleen nog maar kleinere bugs moeten bevatten waarvan je vaak pas bij real-world gebruik achter komt.