Gestion collaborative du développement
Les outils et services utilisés pour forger SliTaz :-)
- KISS et respect des standards.
- Build host & home.
- Dépôts Mercurial.
- Implémentation d'iconv().
- Paquets tazpkg.
- Nommage des paquets.
- Gestion du site Web et des livres.
- xHTML coding style.
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.
hg help
: affiche la liste complète des commandes.hg rollback
: annule la dernière action exécutée (commit, pull, push).hg log <paquet>
: affiche les logs pour un paquet.hg head
: affiche le dernier log.
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