Recherche
Bosanski Dansk Deutsch English Español Français Indonesian Italiano Português Русский 中文

Gestion collaborative du développement

Les outils et services utilisés pour forger Slitaz :-)

Le projet SliTaz dispose de divers moyens pour gérer le travail des développeurs et collaborer. Un système de gestion de révision avec Mercurial (Hg), des modules de synchronisation avec Rsync, de la documentation, une liste de discussion et un canal IRC. Tous les développeurs sont inscrits sur la liste, c'est le moyen de collaboration principal et privilégié.

KISS et respect des standards

Rester simple, respecter au mieux les standards, réaliser un travail soigné, rédiger de la documentation de haute qualité, fournir un système stable et robuste et garder le rootfs du LiveCD standard assez léger pour que SliTaz tourne sur des machines ayant au minimum 128 Mb de RAM. Possibilité d'utiliser GTK+2, Dialog, Gtkdialog, des scripts SHell ou encore PHP pour coder des outils propres à la distribution. L'idée est aussi de ne pas faire de doublons et de penser mini...

SliTaz se veut un projet proche et à l'écoute des ses utilisateurs. Il y a plusieurs développeurs actifs sur le forum et sur la liste de discussion.

Tank - Build host & home

Chaque contributeur peut avoir un compte sur le serveur principal du projet, avec un accès sécurisé, de l'espace disque, un répertoire public et tous les outils de développement. Les développeurs peuvent y compiler leurs paquets et les mainteneurs du miroir s'occupent de la synchronisation. Tank héberge aussi le site internet, le web boot et les dépôts Mercurial: tank.slitaz.org

L'utilisation du build host est décrite dans le Cookbook: SliTaz Build Host (tank).

Dépôts Mercurial

Tous les sous-projets tels que Tazpkg, Tazwok ou Tazlito ont leurs propres dépôts Hg sur le serveur du projet, tout comme le wok. Les développeurs ont un compte et des droits en écriture afin de pouvoir envoyer leurs recettes, mises à jour ou modifications. Il est bien sûr possible de demander la création d'un nouveau dépôt pour collaborer sur un nouveau sous-projet lié à SliTaz. A noter qu'il y a 2 domaines : hg.slitaz.org est public et repos.slitaz.org nécessite une authentification, c'est-à-dire que vous pouvez cloner hg.slitaz.org mais pas y pousser vos changements ou fichiers.

~/.hgrc

Mercurial utilise un fichier caché ~./hgrc permettant de spécifier son nom d'utilisateur. Il faut mettre votre nom et adresse mail pour qu'on sache qui a modifié quoi. Et attention à ne pas être root pour pousser vos modifications. Exemple :

[ui]
username = Prénom Nom <you@example.org>

Cloner, modifier, commiter et pousser

Vous avez le choix de cloner anonymement via hg.slitaz.org ou directement avec votre login et mot de passe. Pour cloner un dépôt tel que le wok :

 $ hg clone http://repos.slitaz.org/wok/

Copier, créer, modifier des recettes ou des fichiers dans stuff. Avant de pouvoir pousser vos modifs, il faut les additionner à votre dépôt local et les commiter. A noter que la commande status permet de savoir quels fichiers ont été modifiés :

 $ cd wok
 $ hg status
 $ hg add
 $ hg commit

La commande commit va ouvrir l'éditeur de texte Nano pour écrire le message destiné aux logs (Ctrl + X pour enregistrer et quitter). Vous pouvez éviter Nano en utilisant l'option : -m "Message". And please, messages in English if possible :

 $ hg commit -m "Message for Mercurial log"

Une fois que tout est prêt, vous pouvez encore utiliser la commande log pour voir ce qui va être affiché sur l'interface web. Pour pousser vos changements c'est push :

 $ hg log
 $ hg push

Si vous avez cloné depuis hg.slitaz.org, il faut alors pousser en spécifiant le bon URL :

 $ hg push http://repos.slitaz.org/wok/

Mettre à jour un wok local

Pour mettre à jour votre wok local avec celui du serveur (pull pour tirer les changements) :

 $ hg pull
 $ hg update

Commandes utiles

Des commandes hg qui peuvent servir.

Implémentation d'iconv()

SliTaz utilise iconv() fourni par la GNU glibc, même si certain paquets proposent d'utiliser libiconv il faut utiliser la version de la glibc (paquet glibc-locale). Il n'y a donc pas de paquet libiconv (1,2 Mb) dans SliTaz.

Paquets tazpkg

Les paquets tazpkg de SliTaz sont créés automatiquement via Tazwok et les recettes contenues dans le wok, le Cookbook décrit l'utilisation des outils SliTaz et le format des recettes, c'est sans doute par un petit peu de lecture qu'il faut commencer.

Concernant le choix des paquets, l'idée est de proposer un paquet par tâche ou fonctionnalité, c'est à dire pas (trop) de doublons et de trouver l'application la plus légère dans son domaine. A noter que les paquets actuels ne sont pas figés, si vous trouvez une alternative à un paquet existant, étant plus légère, ayant plus de fonctionnalités ou étant plus sexy pour quelques Ko supplémentaires, vous pouvez la proposer sur la liste. Une attention particulière est portée aux paquets destinés au LiveCD : strip, suppression de tout ce qui est inutile, dépendances et options de compilation. En général, les paquets candidats pour le corps du LiveCD sont discutés sur la liste.

Avant de commencer à compiler et créer des paquets pour SliTaz, assurez-vous qu'une recette n'existe pas dans le wok undigest, disponible sur le miroir principal de SliTaz. N'oubliez pas non plus que les membres de la liste sont là pour vous aider et que pour bien commencer, la documentation du wok et des outils existe.

Nommage des paquets

Dans la majorité des cas le nom du paquet est celui des sources exception faite des modules Python, Perl, PHP, Ruby, Lua. Par example le paquet Kid fournissant un système de template XML et écrit en Python se nomme: python-kid.

Gestion du site Web et des livres

La gestion du site et des livres (Handbook et Cookbook) est faite via un dépôt Mercurial, ce qui nous permet de traviller à plusieurs. Il faut juste installer mercurial sur SliTaz et connaître les commandes de base. Une fois le dépôt cloné vous avez une copie complète du site en local pour commencer à travailler. Pour cloner le site web :

 $ hg clone http://hg.slitaz.org/website

Sur SliTaz vous pouvez installer le serveur web Lighttpd et mettre le site dans votre répertoire ~/Public, cela permet de naviguer dans votre copie locale via localhost/~user.

xHTML coding style

Les pages du site et des différents books sont codés en xHTML 1.0 Transitional, les couleurs pour le body et les titres sont directement mis dans la page, cela permet d'avoir une présentation plus soignée pour Links. Le titre de niveau 1 est utilisé une seule fois en haut de page, le titre 2 correspond au titre du document et les titres de niveau 3 et 4 sont ensuite utilisés pour les sous-titres. Si il y a lieu d'avoir une liste à puces avec des ancres, elle se met en haut juste après le titre de niveau 2. Les paragraphes sont contenus dans les balises <p></p>. Pour indenter, nous utilisons des tabulations, elles ont une raison d'être sémantique et prennent moins de place en terme d'octets. Pour mettre du code tel que le nom d'une commande dans un paragraphe, la balise <code> est recommandée. Pour afficher une ou des commandes à lancer dans un terminal, les pages du site utilisent la balise <pre> permettant d'afficher du texte préformaté. Exemple :

 $ command

Pour afficher du texte à copier/coller tels que des scripts, des bouts de code, des exemples de fichiers de configuration, etc, c'est aussi la balise <pre> mais avec une classe CSS nommée "script". Exemple:

<pre class="script">

code...

</pre>

Les mots en English se mettent dans la balise <em> et les liens internes sont relatifs. Penser à vérifier la validité du code via le validator en ligne du W3C.

Diff et patch

Les utilitaires diff et patch sont des outils en ligne de commande permettant de créer et d'appliquer un fichier contenant les différences entre deux fichiers. Cette technique est souvent utilisée pour collaborer et permet d'extraire clairement les modifications apportées au fichier original. Pour créer un fichier diff lisible par les humains dans un simple éditeur de texte, il faut utiliser l'option -u en argument :

 $ diff -u file.orig file.new > file.diff

Pour appliquer un patch :

 $ patch file.orig file.diff