BastNic's blog

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 23 novembre 2007

Est-ce possible d'utiliser le launchpad pour un projet professionnel non open-source ?

J'utilise au quotidien l'excellent gestionnaire de versions (VCS) nommé Bazaar.

Cette application est omniprésente dans le monde ubuntero car c'est le VCS supporté par défaut par Launchpad, la méga plateforme permettant de gérer la communauté, les bugs, les spécifications, les traductions d'Ubuntu.

Launchpad est une EXCELLENTE plateforme pour gérer tout ça.

Ce soir à l'une des réunions de Giroll, j'ai demandé à Nicolas Derive - un des rares Ubuntu Members français, et accessoirement Girollien - quelles étaient les limites de l'hébergement de projet sur le Launchpad.

Sur la page de création d'un nouveau projet (il faut peut-être identifié pour la voir, je ne l'assure pas), il est précisé :

Launchpad open source project

Donc d'après le titre, il faut que ce soit un projet open source. Mais plus bas, après de nombreux détails, on peut voir, dans le choix des licences disponibles :

launchpad propriatory ?

Ainsi on a le droit de choisir entre autres une licence propriétaire ?

Nicolas me signale aussi que l'on peut restreindre l'accès à un dépôts bazaar aux personnes d'une team, de même pour les rapports de bugs.

Donc la question que je me pose : j'ai un projet professionnel développé en PHP5, pas spécialement propriétaire mais en tout cas pas open source non plus (quand même un projet commercial à la base). Je me sers de Bazaar pour gérer les versions car j'apprécie la possibilité de commiter en étant hors-ligne.

Puis-je légalement utiliser le Launchpad pour un projet pro non open source, restreindre l'accès aux sources et aux bugs à une team qui ne comporte que moi et éventuellement deux ou trois contacts ?

Je ne compte pas le faire, mais c'est une question que je me pose. Dans la logique je trouverais étrange que ce soit possible mais au fond pourquoi pas ?

Vous avez une réponse et/ou une opinion, ça m'intéresse ?

lundi 29 octobre 2007

Mettre à jour bazaar de temps en temps ça ne fait pas de mal

Si jamais vous utilisez Mac OS X et que comme moi vous utilisez Bazaar suite à mon tutoriel (par compilation), vous avez sûrement oublié de le mettre à jour.

C'est un des principal problème de l'installation d'un programme par compilation des sources de celui-ci : il faut suivre les mises à jour par soi-même car ça ne se fait pas tout seul[1]

Mon tutoriel parlait de la version 0.16 de bazaar... La dernière version en date est la 0.91 qui apporte un tas de choses dont un mécanisme optimisé, des corrections multiples de bugs, et quelques fonctionnalités en plus.

Mais en plus de ça, et c'est ce qui me concerne le plus, mon ordinateur sous Mac OS X est en réseau avec un tas d'ordinateurs sous Ubuntu. Or la dernière version en date d'Ubuntu- à savoir Gutsy Gibbon - intègre bazaar 0.90 qui n'est pas complètement fait pour fonctionner avec un bazaar 0.16.

Pour mettre à jour votre installation de bazaar par compilation, faîtes exactement comme pour l'installation : la nouvelle remplace l'ancienne.

Donc pensez à mettre à jour votre installation bazaar, et plus généralement n'importe quel logiciel que vous avez installé par compilation.

Rappel : le site officiel de Bazaar.

Notes

[1] A l'inverse des paquets officiels qui sont automatiquement mis à jour grâce aux mainteneurs de la distribution que vous utilisez (dans une distribution GNU/Linux bien entendu).

jeudi 14 juin 2007

Utilisation de bazaar par l'exemple, mise en place d'un répertoire partagé de travail sur Code Igniter

Bazaar est un gestionnaire de version, un VCS en anglais : Version Control System.

Si jamais vous ignorez ce qu'est un gestionnaire de version je ne peux que vous conseiller de vous renseigner sur ce qu'est un gestionnaire de version (la définition sur Wikipedia). Si vous développez souvent et que vous n'en utilisez pas, je vous recommande de lire cet article.

Il existe beaucoup de VCS concurrents de Bazaar : mercurial, CVS, SVN. Le plus connu est certainement svn, je l'utilise moi-même beaucoup car il est très utilisé sur les divers projets auxquels je participe. Je privilégie le 3/4 du temps bazaar, mais ce n'est pas toujours moi qui initie les projets donc...

Bazaar est très à la mode en ce moment car il est très utilisé dans le monde ubuntero. Il est même intégré au célèbre Launchpad. Parmi les nombreuses super fonctionnalités, celles que j'apprécie particulièrement sont :

  • la simplicité de mise en place comparée à svn... Il y a peu de temps j'ai essayé de le faire utilisé par un ami, mais malgré le super tutoriel de David Larlet... il a raté (il est loin d'être débutant pourtant).
  • l'utilisation hors-ligne, chacun fait ses commit dans son coin puis on regroupe le tout.

Il est donc très bien intégré à Ubuntu et est très simple à installer :

sudo aptitude install bzr

Si jamais vous voulez une interface graphique pour vous en servir, il existe une interface GTK :

sudo aptitude install bzr-gtk

Mon projet

J'ai sous le coude au moins un projet à développer à l'aide du framework PHP Code Igniter. Ce projet va être développé à plusieurs, pour l'instant nous sommes deux et d'ici moins d'une semaine nous serons trois. Il est impossible de coder quelque chose à plusieurs sans gestionnaire de version.

Le deuxième avantage cité tout à l'heure est sympa dans ce cas présent étant donné que toutes les personnes qui vont travailler sur le projet n'ont pas tout le temps accès au serveur de l'entreprise.

je rappelle mon précédent article sur Code Igniter qui vous expliquait comment je hiérarchise mes répertoires. Le projet présenté ici est de rentre mon installation de Code Igniter versionnable.

J'ai donc un dossier nommé codeigniter à la racine de mon répertoire personnel dans lequel on trouve :

* application-test-1
* application-test-2
* bambooinvoice.
* projet-a-realiser
* ci_default_application
* ci_system
* ci_user_guide

Je ne veux pas me répéter, mais cette configuration me permet, pour une seule copie des fichiers systèmes (ci_system), d'avoir un nombre quelconques d'applications.
Côte-à-côte nous avons donc les applications d'exemples, de tests, voir bambooinvoice (un des plus gros exemples concret de CodeIgniter). J'aime beaucoup travailler ainsi.

Mise en place de bazaar sur notre projet

Revenons dans notre dossier de tout-à-l'heure et initialisons le projet :

bzr init

Le dossier contient maintenant un dossier de plus :

* .bzr
* application-test-1
* application-test-2
* bambooinvoice.
* application-excellent-exemple
* projet-a-realiser
* ci_system
* ci_user_guide

L'initialisation de bazaar dans le dossier nous crée un dossier .bzr dans lequel on trouve tout ce qui permet de gérer les différentes versions... Pour l'instant il ne contient pas grand chose car nous n'avons pas encore validé le contenu ("commit" en anglais).

bzr status

nous indique qu'il existe un certain nombre de fichiers inconnus, ajoutons les via la commande

bzr add

puis validons les changements avec

bzr commit -m "premier versement"

Il vous sera demandé d'ajouter une explications aux changements effectués. Pour une première initialisation j'ajouterais simplement "premier versement". Vous venez de créer la première révision de votre projet.

Publier votre projet

Le dépôt est prêt. Mais plusieurs cas de figures se présentent...

  1. si vous êtes le seul à travailler dessus et que vous n'avez qu'une seule machine alors c'est bon, vous n'avez rien à faire, juste des commit de temps en temps et votre projet sera enregistré aux moments clés de leurs avancements. Si jamais vous faites de grosses erreurs vous pourrez revenir en arrière...
  2. vous avez votre base de travail sur votre ordinateur et vous désirez publiez votre travail sur une machine que nous appellerons "serveur" qui sera le point central de tous les travaux (c'est ce que propose le launchpad).

Nous allons nous attarder sur le deuxième cas, donc comment envoyer votre travail sur le serveur, comment récupérer ce qui a été modifié par les autres personnes travaillant sur le projet.

Avec la commande précédente bzr commit, vous avez créé la première révision... Plaçons la sur la machine serveur. Je suppose ici que nous allons passer par du ftp sécurisé (sftp), et que le répertoire sur lequel nous allons placer le projet est /home/bast/Codeigniter (il faut noter l'adresse absolue sinon ça ne marche pas).

bzr push sftp://<utilisateur sur le serveur>@<monserveur>/home/bast/Codeigniter

Maintenant vous pouvez travailler en local, faire vos commit de temps en temps.. Mais vous resterez en local. Quand vous voudrez publier votre travail, il faudra suivre un cycle de commande :

bzr merge
bzr commit
bzr push sftp://<utilisateur sur le serveur>@<monserveur>/home/bast/Codeigniter

Le bzr merge permet de synchroniser le travail en local et sur le serveur, le bzr commit valide les changements dus aux merge, et enfin on publie tout via bzr push.

Récupérer le projet

C'est extrêmement simple et très proche de la commande précédente pour envoyer tout sur le serveur :

bzr branch sftp://<utilisateur sur le serveur>@<monserveur><chemin absolu>

On récupère ainsi la dernière branche du serveur (dernière version du projet courant). Ensuite pour pouvoir travailler dessus et publier son travail, et bien il suffit de faire comme le point précédent, merge, commit et push.

Autre commandes utiles

bzr log

... pour voir l'historique de toutes les modifications

bzr revert -r <un numero de version>

... pour revenir à une version précédente

bzr help <commande> ... pour plus d'information sur une commande bzr, par exemple bzr help revert vous donnera la documentation et des exemples sur l'utilisation de la commande revert.

Conclusion

Voila un premier tutoriel...
Rien de vraiment exhaustif, il manque un gros tas de commande mais je voulais juste montrer un cas concret : ce qui va être utile à mes collaborateurs les mois à venir.

Pour une documentation plus 'documentation', je vous conseille ces quelques excellents liens issus de la documentation francophone de bazaar :

vendredi 8 juin 2007

Installer bazaar sur Mac OS X

Billet en chantier

Bazaar est un logiciel de contrôle de versions très utilisé dans la communauté Ubuntu. Dans mon prochain article je rappellerais comment l'installer sous Ubuntu.

Pour installer bazaar seul, c'est facile. Le gros inconvénient c'est que pour une utilisation un peu plus avancée, par exemple passer par sftp, python nécessite les modules Crypto et paramiko. Et ceux-ci, pour s'installer ont besoin que XCode soit installé.

Xcode

Récupérez le depuis le site d'Apple. Il vous sera demander de vous créer un compte puis de vous authentifier mais ne vous inquiétez pas c'est entièrement gratuit. MAIS ça prendre 940mo et quelques... Petites bandes passantes s'abstenir.

  1. Ouvrez le ficchier "xcode...dmg" ainsi télécharger
  2. lancer le fichier "XcodeTools.mpkg" et suivez l'installeur

Xcode est maintenant installé !

Python et dépendances

Il y a deux possibilités pour ça, passer par les sources et les installer à la main ou passer par les macports. Personnellement je n'aime pas la version MacPort mais ça me regarde donc je vous met les deux possibilités, c'est à vous de choisir.

Par les sources

Bazaar nécessite au minimum python 2.4 mais Mac OS intègre par défaut 2.3.4. La version stable de python est actuellement la 2.5.1. Vous pouvez voir l'annonce de cette sortie, et récupérez la dernière version en .dmg. (je sais c'est pas ce qu'on appelle des sources ça...)

Ensuite il faut installer Crypto (le télécharger) et paramiko (le télécharger). Dans les deux cas, il faut télécharger les archives, les extraire et faire un joli :

 sudo python setup.py install

Maintenant nous disposons de tout ce qu'il faut pour installer bazaar. Sur la page des téléchargements de Bazaar, téléchargez la version "source for any platform" (ou simplement cliquez ici (version 0.16)).

J'ignore si on peut l'installer en mode graphique, mais je suppose que les gens qui sont intéressés par un gestionnaire de contrôle de version n'ont pas peur de la ligne de commande. Donc ouvrez un terminal et allez dans votre dossier de téléchargement (chez moi c'est le Bureau). L'extraire, en console aller dans ce dossier et enfin lancez l'installation :

sudo python setup.py install

Par les MacPorts

Allez sur le site web, le télécharger, lancez l'installation puis, en ligne de commande :

sudo port selfupdate 
sudo port install python24 py-crypto py-paramiko bazaar-ng
Conclusion

Si aucun message d'erreur, alors c'est installé. Pour tester, faites :

bzr

Et à la nature du message, vous comprendrez ;).

Pour l'utilisation, je vous recommande la lecture de ce tutoriel.