website view fr/devel/forge.html @ rev 780

ex + id: Code clean-up and new layout (TODO: finish es)
author Christophe Lincoln <pankso@slitaz.org>
date Sat Mar 26 22:22:15 2011 +0100 (2011-03-26)
parents 0e0bc81a63ee
children 152a88419e0a
line source
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
4 <head>
5 <title>SliTaz - Forge (fr)</title>
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
7 <meta name="description" content="Développement de SliTaz GNU/Linux" />
8 <meta name="keywords" lang="fr" content="developpement slitaz developer GNU Linux" />
9 <meta name="robots" content="index, follow, all" />
10 <meta name="revisit-after" content="7 days" />
11 <meta name="expires" content="never" />
12 <meta name="modified" content="2009-16-01 16:00:00" />
13 <meta name="author" content="Christophe Lincoln"/>
14 <meta name="publisher" content="www.slitaz.org" />
15 <link rel="shortcut icon" href="../../favicon.ico" />
16 <link rel="stylesheet" type="text/css" href="../../slitaz.css" />
17 <link rel="Content" href="forge.html#content" />
18 </head>
19 <body bgcolor="#ffffff">
21 <!-- Header -->
22 <div id="header">
23 <a name="top"></a>
24 <!-- Access -->
25 <div id="access">
26 <img
27 src="../../pics/website/locale.png"
28 style="vertical-align: middle; width: 20px; height: 20px;"
29 alt="language" />
30 <a href="../../en/devel/index.html">English</a>
31 </div>
32 <a href="http://www.slitaz.org/fr/"><img id="logo"
33 src="../../pics/website/logo.png" title="www.slitaz.org" alt="www.slitaz.org"
34 style="border: 0px solid ; width: 200px; height: 74px;" /></a>
35 <p id="titre">#!/GNU/Linux</p>
36 </div>
38 <!-- Navigation menu -->
39 <div id="nav">
40 <div id="nav_top"></div>
41 <!-- General -->
42 <ul>
43 <li><a href="../about/index.html" title="Informations au sujet du projet SliTaz">A propos du projet</a></li>
44 <li><a href="../asso/index.html" title="Infrastructure et services">Association</a></li>
45 <li><a href="../get/index.html" title="Téléchargements - LiveCD et sous projets">Obtenir SliTaz</a></li>
46 <li><a href="../doc/index.html" title="Handbook, Cookbook et manuels">Documentation</a></li>
47 <li><a href="../packages/index.html" title="Paquets logiciels disponibles">Paquets</a></li>
48 <li><a href="../devel/index.html" title="Le coin du développeur">Développement</a></li>
49 <li><a href="../artwork/index.html" title="Artwork, couleurs et images">Art &amp; graphisme</a></li>
50 </ul>
51 <!-- Support -->
52 <ul>
53 <li><a href="http://forum.slitaz.org/" title="Forum d'aide et support">Forum de support</a></li>
54 <li><a href="../mailing-list.html" title="Support, contact et collaboration">Liste de discussion</a></li>
55 <li><a href="../search.html" title="Rechercher des infos et/ou de la doc">Recherche</a></li>
56 <li><a href="../sitemap.html" title="Vue globale du site web">Plan du site</a></li>
57 </ul>
58 <!-- Wiki and Labs -->
59 <ul>
60 <li><a href="http://doc.slitaz.org/" title="Wiki collaboratif">Ressources Wiki</a></li>
61 <li><a href="http://labs.slitaz.org/" title="Gestion du projet">Laboratoires</a></li>
62 <li><a href="http://labs.slitaz.org/issues" title="Bug Tracking system">Suivi des Bugs</a></li>
63 </ul>
64 <div id="nav_bottom">
65 <div id="nav_bottom_img"></div>
66 </div>
67 </div>
69 <!-- Content top. -->
70 <div id="content_top">
71 <div class="top_left"></div>
72 <div class="top_right"></div>
73 </div>
75 <!-- Content -->
76 <div id="content">
77 <a name="content"></a>
79 <h1><font color="#3E1220">Forge</font></h1>
81 <h2><font color="#DF8F06">Gestion collaborative du développement</font></h2>
83 <ul>
84 <li><a href="forge.html#kiss">KISS et respect des standards.</a></li>
85 <li><a href="forge.html#tank">Build host &amp; home.</a></li>
86 <li><a href="forge.html#repos">Dépôts Mercurial.</a></li>
87 <li><a href="forge.html#iconv">Implémentation d'iconv().</a></li>
88 <li><a href="forge.html#pkgs">Paquets tazpkg.</a></li>
89 <li><a href="forge.html#pkgs-naming">Nommage des paquets.</a></li>
90 <li><a href="forge.html#site">Gestion du site Web et des livres.</a></li>
91 <li><a href="forge.html#xhtml">xHTML coding style.</a></li>
92 </ul>
94 <p>
95 Le projet SliTaz dispose de divers moyens pour gérer le travail des
96 développeurs et collaborer. Un système de gestion de révision avec Mercurial
97 (Hg), des modules de synchronisation avec Rsync, de la documentation, une
98 <a href="../mailing-list.html">liste de discussion</a> et un canal IRC. Tous
99 les développeurs sont inscrits sur la liste, c'est le moyen de collaboration
100 principal et privilégié.
101 </p>
103 <a name="kiss"></a>
104 <h3>KISS et respect des standards</h3>
105 <p>
106 Rester simple, respecter au mieux les standards, réaliser un travail soigné,
107 rédiger de la documentation de haute qualité, fournir un système stable et
108 robuste et garder le <em>rootfs</em> du LiveCD standard assez léger pour que
109 SliTaz tourne sur des machines ayant au minimum 128 Mb de RAM. Possibilité
110 d'utiliser GTK+2, Dialog, Gtkdialog, des scripts SHell ou encore PHP pour
111 coder des outils propres à la distribution. L'idée est aussi de ne pas faire
112 de doublons et de penser mini...
113 </p>
114 <p>
115 SliTaz se veut un projet proche et à l'écoute des ses utilisateurs. Il y a
116 plusieurs développeurs actifs sur le <a href="http://forum.slitaz.org/">forum</a>
117 et sur la <a href="../mailing-list.html">liste de discussion</a>.
118 </p>
120 <a name="tank"></a>
121 <h3>Tank - Build host &amp; home</h3>
122 <p>
123 Chaque contributeur peut avoir un compte sur le serveur principal du
124 projet, avec un accès sécurisé, de l'espace disque, un répertoire public
125 et tous les outils de développement. Les développeurs peuvent y compiler
126 leurs paquets et les mainteneurs du miroir s'occupent de la synchronisation.
127 Tank héberge aussi le site internet, le web boot et les dépôts Mercurial:
128 <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
129 </p>
130 <p>
131 L'utilisation du build host est décrite dans le Cookbook:
132 <a href="../../en/doc/cookbook/build-host.html">SliTaz Build Host (tank)</a>.
133 </p>
135 <a name="repos"></a>
136 <h3>Dépôts Mercurial</h3>
137 <p>
138 Tous les sous-projets tels que Tazpkg, Tazwok ou Tazlito ont leurs propres
139 dépôts Hg sur le serveur du projet, tout comme le wok. Les développeurs ont
140 un compte et des droits en écriture afin de pouvoir envoyer leurs recettes,
141 mises à jour ou modifications. Il est bien sûr possible de demander la création
142 d'un nouveau dépôt pour collaborer sur un nouveau sous-projet lié à SliTaz.
143 A noter qu'il y a 2 domaines : <a href="http://hg.slitaz.org/">hg.slitaz.org</a>
144 est public et <code>repos.slitaz.org</code> nécessite une authentification, c'est-à-dire
145 que vous pouvez cloner hg.slitaz.org mais pas y pousser vos changements ou fichiers.
146 </p>
147 <h4>~/.hgrc</h4>
148 <p>
149 Mercurial utilise un fichier caché <code>~./hgrc</code> permettant de
150 spécifier son nom d'utilisateur. Il faut mettre votre nom et adresse mail pour
151 qu'on sache qui a modifié quoi. Et attention à ne pas être <em>root</em> pour
152 pousser vos modifications. Exemple :
153 </p>
154 <pre class="script">
155 [ui]
156 username = Prénom Nom &lt;you@example.org&gt;
157 </pre>
158 <h4>Cloner, modifier, commiter et pousser</h4>
159 <p>
160 Vous avez le choix de cloner anonymement via hg.slitaz.org ou directement avec
161 votre login et mot de passe. Pour cloner un dépôt tel que le wok :
162 </p>
163 <pre>
164 $ hg clone http://repos.slitaz.org/wok/
165 </pre>
166 <p>
167 Copier, créer, modifier des recettes ou des fichiers dans <code>stuff</code>.
168 Avant de pouvoir pousser vos modifs, il faut les additionner à votre dépôt
169 local et les commiter. A noter que la commande <code>status</code> permet de
170 savoir quels fichiers ont été modifiés :
171 </p>
172 <pre>
173 $ cd wok
174 $ hg status
175 $ hg add
176 $ hg commit
177 </pre>
178 <p>
179 La commande <code>commit</code> va ouvrir l'éditeur de texte Nano pour écrire le message
180 destiné aux logs (Ctrl + X pour enregistrer et quitter). Vous pouvez éviter
181 Nano en utilisant l'option : <code>-m "Message"</code>. And please,
182 messages in English if possible :
183 </p>
184 <pre>
185 $ hg commit -m "Message for Mercurial log"
186 </pre>
187 <p>
188 Une fois que tout est prêt, vous pouvez encore utiliser la commande
189 <code>log</code> pour voir ce qui va être affiché sur l'interface web. Pour
190 pousser vos changements c'est <code>push</code> :
191 </p>
192 <pre>
193 $ hg log
194 $ hg push
195 </pre>
196 <p>
197 Si vous avez cloné depuis hg.slitaz.org, il faut alors pousser en spécifiant
198 le bon URL :
199 </p>
200 <pre>
201 $ hg push http://repos.slitaz.org/wok/
202 </pre>
203 <h4>Mettre à jour un wok local</h4>
204 <p>
205 Pour mettre à jour votre wok local avec celui du serveur (<em>pull</em> pour
206 tirer les changements) :
207 </p>
208 <pre>
209 $ hg pull
210 $ hg update
211 </pre>
212 <h4>Commandes utiles</h4>
213 <p>
214 Des commandes hg qui peuvent servir.
215 </p>
216 <ul>
217 <li><code>hg help</code> : affiche la liste complète des commandes.</li>
218 <li><code>hg rollback</code> : annule la dernière action exécutée (commit,
219 pull, push).</li>
220 <li><code>hg log &lt;paquet&gt;</code> : affiche les logs pour un paquet.</li>
221 <li><code>hg head</code> : affiche le dernier log.</li>
222 </ul>
224 <a name="iconv"></a>
225 <h3>Implémentation d'iconv()</h3>
226 <p>
227 SliTaz utilise iconv() fourni par la GNU glibc, même si certain paquets
228 proposent d'utiliser <code>libiconv</code> il faut utiliser la version de
229 la glibc (paquet <code>glibc-locale</code>). Il n'y a donc pas de paquet
230 libiconv (1,2 Mb) dans SliTaz.
231 </p>
233 <a name="pkgs"></a>
234 <h3>Paquets tazpkg</h3>
235 <p>
236 Les paquets tazpkg de SliTaz sont créés automatiquement via Tazwok et les
237 recettes contenues dans le wok, <a href="../doc/cookbook/index.html">le Cookbook</a>
238 décrit <a href="../doc/cookbook/wok-tools.html">l'utilisation des outils SliTaz</a>
239 et le format des <a href="../doc/cookbook/receipts.html">recettes</a>,
240 c'est sans doute par un petit peu de lecture qu'il faut commencer.
241 </p>
242 <p>
243 Concernant le choix des paquets, l'idée est de proposer un paquet par tâche ou
244 fonctionnalité, c'est à dire pas (trop) de doublons et de trouver
245 l'application la plus légère dans son domaine. A noter que les paquets actuels
246 ne sont pas figés, si vous trouvez une alternative à un paquet existant, étant
247 plus légère, ayant plus de fonctionnalités ou étant plus <em>sexy</em> pour
248 quelques Ko supplémentaires, vous pouvez la proposer sur la liste. Une
249 attention particulière est portée aux paquets destinés au LiveCD : strip,
250 suppression de tout ce qui est inutile, dépendances et options de compilation.
251 En général, les paquets candidats pour le corps du LiveCD sont discutés sur
252 la liste.
253 </p>
254 <p>
255 Avant de commencer à compiler et créer des paquets pour SliTaz, assurez-vous
256 qu'une recette n'existe pas dans le wok undigest, disponible sur le miroir
257 principal de SliTaz. N'oubliez pas non plus que les membres de la liste sont
258 là pour vous aider et que pour bien commencer, <a href="../doc/cookbook/wok-tools.html"
259 >la documentation du wok et des outils</a> existe.
260 </p>
262 <a name="pkgs-naming"></a>
263 <h3>Nommage des paquets</h3>
264 <p>
265 Dans la majorité des cas le nom du paquet est celui des sources exception
266 faite des modules Python, Perl, PHP, Ruby, Lua. Par example le paquet Kid
267 fournissant un système de template XML et écrit en Python se nomme:
268 <code>python-kid</code>.
269 </p>
271 <a name="site"></a>
272 <h3>Gestion du site Web et des livres</h3>
273 <p>
274 La gestion du site et des livres (Handbook et Cookbook) est faite via un
275 dépôt Mercurial, ce qui nous permet de traviller à plusieurs. Il faut
276 juste installer <code>mercurail</code> sur SliTaz et connaître les commandes
277 de base. Une fois le dépôt cloné vous avez une copie complète du site en
278 local pour commencer à travailler. Pour cloner le site web :
279 </p>
280 <pre>
281 $ hg clone http://hg.slitaz.org/website
282 </pre>
283 <p>
284 Si vous avez les droits :
285 </p>
286 <pre>
287 $ hg clone http://repos.slitaz.org/website
288 </pre>
289 <p>
290 Sur SliTaz vous pouvez installer le serveur web Lighttpd et mettre le
291 site dans votre répertoire ~/Public, cela permet de naviguer dans votre
292 copie locale via localhost/~user.
293 </p>
295 <a name="xhtml"></a>
296 <h3>xHTML coding style</h3>
297 <p>
298 Les pages du site et des différents <em>books</em> sont codés en xHTML 1.0
299 Transitional, les couleurs pour le <code>body</code> et les titres sont
300 directement mis dans la page, cela permet d'avoir une présentation plus soignée
301 pour Links. Le titre de niveau 1 est utilisé une seule fois en haut de page,
302 le titre 2 correspond au titre du document et les titres de niveau 3 et 4 sont
303 ensuite utilisés pour les sous-titres. Si il y a lieu d'avoir une liste à puces
304 avec des ancres, elle se met en haut juste après le titre de niveau 2. Les
305 paragraphes sont contenus dans les balises <code>&lt;p&gt;&lt;/p&gt;</code>.
306 Pour indenter, nous utilisons des tabulations, elles ont une raison d'être
307 sémantique et prennent moins de place en terme d'octets. Pour mettre
308 du code tel que le nom d'une commande dans un paragraphe, la balise
309 <code>&lt;code&gt;</code> est recommandée. Pour afficher une ou des commandes
310 à lancer dans un terminal, les pages du site utilisent la balise
311 <code>&lt;pre&gt;</code> permettant d'afficher du texte préformaté. Exemple :
312 </p>
313 <pre>
314 $ command
315 </pre>
316 <p>
317 Pour afficher du texte à copier/coller tels que des scripts, des bouts de
318 code, des exemples de fichiers de configuration, etc, c'est aussi la balise
319 <code>&lt;pre&gt;</code> mais avec une classe CSS nommée "script". Exemple:
320 </p>
321 <pre class="script">
322 &lt;pre class="script"&gt;
324 code...
326 &lt;/pre&gt;
327 </pre>
328 <p>
329 Les mots en <em>English</em> se mettent dans la balise <code>&lt;em&gt;</code>
330 et les liens internes sont relatifs. Penser à vérifier la validité du code via
331 le <em>validator</em> en ligne du W3C.
332 </p>
334 <h3>Diff et patch</h3>
335 <p>
336 Les utilitaires <code>diff</code> et <code>patch</code> sont des outils en
337 ligne de commande permettant de créer et d'appliquer un fichier contenant
338 les différences entre deux fichiers. Cette technique est souvent utilisée
339 pour collaborer et permet d'extraire clairement les modifications apportées
340 au fichier original. Pour créer un fichier <code>diff</code> lisible par
341 les humains dans un simple éditeur de texte, il faut utiliser l'option
342 <code>-u</code> en argument :
343 </p>
344 <pre>
345 $ diff -u file.orig file.new > file.diff
346 </pre>
347 <p>
348 Pour appliquer un patch :
349 </p>
350 <pre>
351 $ patch file.orig file.diff
352 </pre>
354 <!-- End of content with round corner -->
355 </div>
356 <div id="content_bottom">
357 <div class="bottom_left"></div>
358 <div class="bottom_right"></div>
359 </div>
361 <!-- Start of footer and copy notice -->
362 <div id="copy">
363 <p>
364 Dernière modification : 2009-20-03 03:00:00 -
365 <a href="forge.html#top">Haut de la page</a>
366 </p>
367 <p>
368 Copyright &copy; <span class="year"></span> <a href="http://www.slitaz.org/">SliTaz</a> -
369 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>
370 </p>
371 <!-- End of copy -->
372 </div>
374 <!-- Bottom and logo's -->
375 <div id="bottom">
376 <p>
377 <a href="http://validator.w3.org/check?uri=referer"><img
378 src="../../pics/website/xhtml10.png" alt="Valid XHTML 1.0"
379 title="Code validé XHTML 1.0"
380 style="width: 80px; height: 15px;" /></a>
381 </p>
382 </div>
384 </body>
385 </html>