website view fr/devel/forge.php @ rev 1344

Resize balinor logo to 120px
author Christophe Lincoln <pankso@slitaz.org>
date Fri Jan 22 23:02:15 2021 +0100 (18 months ago)
parents 9ed0bfb74392
children
line source
1 <!DOCTYPE html>
2 <html lang="fr">
3 <head>
4 <meta charset="utf-8"/>
5 <title>SliTaz (fr) - Forge</title>
6 <meta name="description" content="Développement de SliTaz GNU/Linux"/>
7 <meta name="keywords" lang="fr" content="developpement slitaz developer GNU Linux"/>
8 <meta name="author" content="Christophe Lincoln"/>
9 <?php include("../../lib/html/meta-link.html"); ?>
10 </head>
11 <body>
13 <?php
14 include("../../lib/html/header.fr.html");
15 include("../../lib/html/nav.fr.html");
16 include("../../lib/lang.php");
17 ?>
19 <!-- Content -->
20 <div id="content">
22 <h2>Gestion collaborative du développement</h2>
24 <p>
25 Les outils et services utilisés pour forger SliTaz :-)
26 </p>
28 <ul>
29 <li><a href="#kiss">KISS et respect des standards.</a></li>
30 <li><a href="#tank">Build host &amp; home.</a></li>
31 <li><a href="#repos">Dépôts Mercurial.</a></li>
32 <li><a href="#iconv">Implémentation d'iconv().</a></li>
33 <li><a href="#pkgs">Paquets tazpkg.</a></li>
34 <li><a href="#pkgs-naming">Nommage des paquets.</a></li>
35 <li><a href="#site">Gestion du site Web et des livres.</a></li>
36 <li><a href="#xhtml">xHTML coding style.</a></li>
37 </ul>
39 <p>
40 Le projet SliTaz dispose de divers moyens pour gérer le travail des
41 développeurs et collaborer. Un système de gestion de révision avec Mercurial
42 (Hg), des modules de synchronisation avec Rsync, de la documentation, une
43 <a href="../mailing-list.php">liste de discussion</a> et un canal IRC. Tous
44 les développeurs sont inscrits sur la liste, c'est le moyen de collaboration
45 principal et privilégié.
46 </p>
48 <h3 id="kiss">KISS et respect des standards</h3>
50 <p>
51 Rester simple, respecter au mieux les standards, réaliser un travail soigné,
52 rédiger de la documentation de haute qualité, fournir un système stable et
53 robuste et garder le <em>rootfs</em> du LiveCD standard assez léger pour que
54 SliTaz tourne sur des machines ayant au minimum 128 Mb de RAM. Possibilité
55 d'utiliser GTK+2, Dialog, Gtkdialog, des scripts SHell ou encore PHP pour
56 coder des outils propres à la distribution. L'idée est aussi de ne pas faire
57 de doublons et de penser mini...
58 </p>
60 <p>
61 SliTaz se veut un projet proche et à l'écoute des ses utilisateurs. Il y a
62 plusieurs développeurs actifs sur le <a href="http://forum.slitaz.org/">forum</a>
63 et sur la <a href="../mailing-list.php">liste de discussion</a>.
64 </p>
66 <h3 id="tank">Tank - Build host &amp; home</h3>
68 <p>
69 Chaque contributeur peut avoir un compte sur le serveur principal du
70 projet, avec un accès sécurisé, de l'espace disque, un répertoire public
71 et tous les outils de développement. Les développeurs peuvent y compiler
72 leurs paquets et les mainteneurs du miroir s'occupent de la synchronisation.
73 Tank héberge aussi le site internet, le web boot et les dépôts Mercurial:
74 <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
75 </p>
77 <p>
78 L'utilisation du build host est décrite dans le Cookbook:
79 <a href="http://doc.slitaz.org/en:cookbook:buildhost">SliTaz Build Host (tank)</a>.
80 </p>
82 <h3 id="repos">Dépôts Mercurial</h3>
84 <p>
85 Tous les sous-projets tels que Tazpkg, Tazwok ou Tazlito ont leurs propres
86 dépôts Hg sur le serveur du projet, tout comme le wok. Les développeurs ont
87 un compte et des droits en écriture afin de pouvoir envoyer leurs recettes,
88 mises à jour ou modifications. Il est bien sûr possible de demander la création
89 d'un nouveau dépôt pour collaborer sur un nouveau sous-projet lié à SliTaz.
90 A noter qu'il y a 2 domaines : <a href="http://hg.slitaz.org/">hg.slitaz.org</a>
91 est public et <code>repos.slitaz.org</code> nécessite une authentification, c'est-à-dire
92 que vous pouvez cloner hg.slitaz.org mais pas y pousser vos changements ou fichiers.
93 </p>
95 <h4>~/.hgrc</h4>
97 <p>
98 Mercurial utilise un fichier caché <code>~./hgrc</code> permettant de
99 spécifier son nom d'utilisateur. Il faut mettre votre nom et adresse mail pour
100 qu'on sache qui a modifié quoi. Et attention à ne pas être <em>root</em> pour
101 pousser vos modifications. Exemple :
102 </p>
104 <pre class="script">
105 [ui]
106 username = Prénom Nom &lt;you@example.org&gt;
107 </pre>
109 <h4>Cloner, modifier, commiter et pousser</h4>
111 <p>
112 Vous avez le choix de cloner anonymement via hg.slitaz.org ou
113 directement avec votre login et mot de passe. Pour cloner un dépôt
114 tel que le wok :
115 </p>
117 <pre>
118 $ hg clone http://repos.slitaz.org/wok/
119 </pre>
121 <p>
122 Copier, créer, modifier des recettes ou des fichiers dans <code>stuff</code>.
123 Avant de pouvoir pousser vos modifs, il faut les additionner à votre dépôt
124 local et les commiter. A noter que la commande <code>status</code> permet de
125 savoir quels fichiers ont été modifiés :
126 </p>
128 <pre>
129 $ cd wok
130 $ hg status
131 $ hg add
132 $ hg commit
133 </pre>
135 <p>
136 La commande <code>commit</code> va ouvrir l'éditeur de texte Nano pour écrire le message
137 destiné aux logs (Ctrl + X pour enregistrer et quitter). Vous pouvez éviter
138 Nano en utilisant l'option : <code>-m "Message"</code>. And please,
139 messages in English if possible :
140 </p>
142 <pre>
143 $ hg commit -m "Message for Mercurial log"
144 </pre>
146 <p>
147 Une fois que tout est prêt, vous pouvez encore utiliser la commande
148 <code>log</code> pour voir ce qui va être affiché sur l'interface web. Pour
149 pousser vos changements c'est <code>push</code> :
150 </p>
152 <pre>
153 $ hg log
154 $ hg push
155 </pre>
157 <p>
158 Si vous avez cloné depuis hg.slitaz.org, il faut alors pousser en spécifiant
159 le bon URL :
160 </p>
162 <pre>
163 $ hg push http://repos.slitaz.org/wok/
164 </pre>
166 <h4>Mettre à jour un wok local</h4>
168 <p>
169 Pour mettre à jour votre wok local avec celui du serveur (<em>pull</em>
170 pour tirer les changements) :
171 </p>
173 <pre>
174 $ hg pull
175 $ hg update
176 </pre>
178 <h4>Commandes utiles</h4>
180 <p>
181 Des commandes hg qui peuvent servir.
182 </p>
184 <ul>
185 <li><code>hg help</code> : affiche la liste complète des commandes.</li>
186 <li><code>hg rollback</code> : annule la dernière action exécutée (commit,
187 pull, push).</li>
188 <li><code>hg log &lt;paquet&gt;</code> : affiche les logs pour un paquet.</li>
189 <li><code>hg head</code> : affiche le dernier log.</li>
190 </ul>
192 <h3 id="iconv">Implémentation d'iconv()</h3>
194 <p>
195 SliTaz utilise iconv() fourni par la GNU glibc, même si certain paquets
196 proposent d'utiliser <code>libiconv</code> il faut utiliser la version de
197 la glibc (paquet <code>glibc-locale</code>). Il n'y a donc pas de paquet
198 libiconv (1,2 Mb) dans SliTaz.
199 </p>
201 <h3 id="pkgs">Paquets tazpkg</h3>
203 <p>
204 Les paquets tazpkg de SliTaz sont créés automatiquement via Tazwok et les
205 recettes contenues dans le wok, <a href="http://doc.slitaz.org/fr:cookbook:start">le Cookbook</a>
206 décrit <a href="http://doc.slitaz.org/fr:cookbook:wok">l'utilisation des outils SliTaz</a>
207 et le format des <a href="http://doc.slitaz.org/fr:cookbook:receipt">recettes</a>,
208 c'est sans doute par un petit peu de lecture qu'il faut commencer.
209 </p>
211 <p>
212 Concernant le choix des paquets, l'idée est de proposer un paquet par tâche ou
213 fonctionnalité, c'est à dire pas (trop) de doublons et de trouver
214 l'application la plus légère dans son domaine. A noter que les paquets actuels
215 ne sont pas figés, si vous trouvez une alternative à un paquet existant, étant
216 plus légère, ayant plus de fonctionnalités ou étant plus <em>sexy</em> pour
217 quelques Ko supplémentaires, vous pouvez la proposer sur la liste. Une
218 attention particulière est portée aux paquets destinés au LiveCD : strip,
219 suppression de tout ce qui est inutile, dépendances et options de compilation.
220 En général, les paquets candidats pour le corps du LiveCD sont discutés sur
221 la liste.
222 </p>
224 <p>
225 Avant de commencer à compiler et créer des paquets pour SliTaz, assurez-vous
226 qu'une recette n'existe pas dans le wok undigest, disponible sur le miroir
227 principal de SliTaz. N'oubliez pas non plus que les membres de la liste sont
228 là pour vous aider et que pour bien commencer,
229 <a href="http://doc.slitaz.org/fr:cookbook:wok"
230 >la documentation du wok et des outils</a> existe.
231 </p>
233 <h3 id="pkgs-naming">Nommage des paquets</h3>
235 <p>
236 Dans la majorité des cas le nom du paquet est celui des sources exception
237 faite des modules Python, Perl, PHP, Ruby, Lua. Par example le paquet Kid
238 fournissant un système de template XML et écrit en Python se nomme:
239 <code>python-kid</code>.
240 </p>
242 <h3 id="site">Gestion du site Web et des livres</h3>
244 <p>
245 La gestion du site et des livres (Handbook et Cookbook) est faite via un
246 dépôt Mercurial, ce qui nous permet de traviller à plusieurs. Il faut
247 juste installer <code>mercurial</code> sur SliTaz et connaître les commandes
248 de base. Une fois le dépôt cloné vous avez une copie complète du site en
249 local pour commencer à travailler. Pour cloner le site web :
250 </p>
252 <pre>
253 $ hg clone http://hg.slitaz.org/website
254 </pre>
256 <p>
257 Sur SliTaz vous pouvez installer le serveur web Lighttpd et mettre le
258 site dans votre répertoire ~/Public, cela permet de naviguer dans
259 votre copie locale via localhost/~user.
260 </p>
262 <h3 id="xhtml">xHTML coding style</h3>
264 <p>
265 Les pages du site et des différents <em>books</em> sont codés en xHTML 1.0
266 Transitional, les couleurs pour le <code>body</code> et les titres sont
267 directement mis dans la page, cela permet d'avoir une présentation plus soignée
268 pour Links. Le titre de niveau 1 est utilisé une seule fois en haut de page,
269 le titre 2 correspond au titre du document et les titres de niveau 3 et 4 sont
270 ensuite utilisés pour les sous-titres. Si il y a lieu d'avoir une liste à puces
271 avec des ancres, elle se met en haut juste après le titre de niveau 2. Les
272 paragraphes sont contenus dans les balises <code>&lt;p&gt;&lt;/p&gt;</code>.
273 Pour indenter, nous utilisons des tabulations, elles ont une raison d'être
274 sémantique et prennent moins de place en terme d'octets. Pour mettre
275 du code tel que le nom d'une commande dans un paragraphe, la balise
276 <code>&lt;code&gt;</code> est recommandée. Pour afficher une ou des commandes
277 à lancer dans un terminal, les pages du site utilisent la balise
278 <code>&lt;pre&gt;</code> permettant d'afficher du texte préformaté. Exemple :
279 </p>
281 <pre>
282 $ command
283 </pre>
285 <p>
286 Pour afficher du texte à copier/coller tels que des scripts, des bouts de
287 code, des exemples de fichiers de configuration, etc, c'est aussi la balise
288 <code>&lt;pre&gt;</code> mais avec une classe CSS nommée "script". Exemple:
289 </p>
291 <pre class="script">
292 &lt;pre class="script"&gt;
294 code...
296 &lt;/pre&gt;
297 </pre>
299 <p>
300 Les mots en <em>English</em> se mettent dans la balise <code>&lt;em&gt;</code>
301 et les liens internes sont relatifs. Penser à vérifier la validité du code via
302 le <em>validator</em> en ligne du W3C.
303 </p>
305 <h3>Diff et patch</h3>
307 <p>
308 Les utilitaires <code>diff</code> et <code>patch</code> sont des outils en
309 ligne de commande permettant de créer et d'appliquer un fichier contenant
310 les différences entre deux fichiers. Cette technique est souvent utilisée
311 pour collaborer et permet d'extraire clairement les modifications apportées
312 au fichier original. Pour créer un fichier <code>diff</code> lisible par
313 les humains dans un simple éditeur de texte, il faut utiliser l'option
314 <code>-u</code> en argument :
315 </p>
317 <pre>
318 $ diff -u file.orig file.new > file.diff
319 </pre>
321 <p>
322 Pour appliquer un patch :
323 </p>
325 <pre>
326 $ patch file.orig file.diff
327 </pre>
329 <!-- End of content -->
330 </div>
332 <?php include("../../lib/html/footer.html"); ?>
334 </body>
335 </html>