Un des outils de production essentiel dans l'environnement de développement est la mise en place d'un outil de versioning . En effet quand plusieurs personnes travaillent dans une agence web sur un même projet et manipulent les mêmes fichiers il est courant que certains fichiers soient manipulés en même temps par différents acteurs du projet.
Pour éviter des conflits ou des écrasement de fichiers à cause de ce travail collaboratif des outils de gestion version sont apparus. Ils permettent que chacun dispose sur son poste d'une version locale du projet qu'il peut modifier à souhait. Des mécanismes de mise à jour permettent de fusionner les différentes versions de chacun en gérant les conflits.
Ces outils de versioning permettent aussi de revenir poste par poste à une version précédente quand un conflit éclate.
Avec les logiciels de gestion de versions centralisée, comme CVS et Subversion (SVN), il n'existe qu'un seul dépôt des versions qui fait référence.
Cela simplifie la gestion des versions mais est contraignant pour certains usages comme le travail sans connexion au réseau, ou tout simplement lorsque l'on travaille sur des branches expérimentales ou contestées. Ce genre d'architecture convient mieux pour des projets collaboratifs en interne dans une entreprise que pour des projets plus gros répartis sur plusieurs sites physiques.
La gestion de versions décentralisée consiste à voir l'outil de gestion de versions comme un outil permettant à chacun de travailler à son rythme, de façon désynchronisée des autres, puis d'offrir un moyen à ces développeurs de s'échanger leur travaux respectifs. De fait, il existe plusieurs dépôts pour un même logiciel. Ce système est très utilisé par les logiciels libres.
Par exemple, GNU Arch, Git et Mercurial sont des logiciels de gestion de versions décentralisée.
le CMS Joomla!, comme tout CMS PHP Open source, peut bénéficier d'une architecture sous gestion de version. Il faut noter cependant qu'on versionnera les fichiers et non la base de données qui restera commune à tous les développeurs. L'outil de versioning permettra donc de faire travailler ensemble plusieurs personnes ensemble sur des fichiers en commun. En ce qui concerne la base de données, les dernières versions de Joomla 3.x intégrent un gestionnaire de version sur les contenus qui permet de revenir en arrière sur des éléments de la base de données. A noter que le CCK Seblod intégre lui aussi un excellent gestionnaire de versions pour tous les types de contenus et les listes ce qui constitue un outil très efficace pour revenir en arrière ou comparer des branches sur le développement de fonctions avec le CCK.