website view en/devel/forge.php @ rev 907

Add empty html skel and up robots.txt
author Christophe Lincoln <pankso@slitaz.org>
date Thu Mar 08 02:45:39 2012 +0100 (2012-03-08)
parents 3233e7cc8e04
children f2f7758d9a72
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="en" lang="en">
4 <head>
5 <title>SliTaz - Forge (en)</title>
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
7 <meta name="description" content="slitaz developers forge" />
8 <meta name="keywords" lang="en" content="slitaz, devel, hg, bugs" />
9 <meta name="robots" content="index, follow, all" />
10 <meta name="modified" content="<?php echo (date( "Y-m-d H:i:s", getlastmod())); ?>" />
11 <meta name="author" content="Christophe Lincoln"/>
12 <link rel="shortcut icon" href="../../favicon.ico" />
13 <link rel="stylesheet" type="text/css" href="../../slitaz.css" />
14 </head>
15 <body>
17 <!-- Header -->
18 <div id="header">
19 <div id="logo"></div>
20 <div id="network">
21 <a href="http://www.slitaz.org/netmap.php">
22 <img src="../../images/network.png" alt="network.png" /></a>
23 <a href="http://scn.slitaz.org/">Community</a>
24 <a href="http://doc.slitaz.org/">Doc</a>
25 <a href="http://forum.slitaz.org/">Forum</a>
26 <a href="http://bugs.slitaz.org">Bugs</a>
27 <a href="http://hg.slitaz.org/">Hg</a>
28 </div>
29 <h1><a href="http://www.slitaz.org/">SliTaz GNU/Linux</a></h1>
30 </div>
32 <!-- Block -->
33 <div id="block">
34 <!-- Navigation -->
35 <div id="block_nav">
36 <h4>Navigation</h4>
37 <div class="right_box">
38 <ul>
39 <li><a href="../../webchat.php">Web Chat</a></li>
40 <li><a href="../mailing-list.html">Mailing List</a></li>
41 <li><a href="../devel/">Development</a></li>
42 <li><a href="../packages/">Packages</a></li>
43 <li><a href="../artwork/">Artwork</a></li>
44 <li><a href="../search.html">Search</a></li>
45 </ul>
46 </div>
47 <div class="left_box">
48 <ul>
49 <li><a href="../">Headlines</a></li>
50 <li><a href="../about/">About</a></li>
51 <li><a href="../get/">Download</a></li>
52 <li><a href="../doc/">Documentation</a></li>
53 <li><a href="../asso/">Association</a></li>
54 <li><a href="../asso/sponsor.html">Sponsor</a></li>
55 </ul>
56 </div>
57 </div>
58 <!-- Information/image -->
59 <div id="block_info">
60 <h4>Forge</h4>
61 <p>
62 Misc tools, guidelines and services used to create and build SliTaz.
63 </p>
64 <p>
65 <img src="../../images/users.png" alt="users.png" />
66 <a href="http://scn.slitaz.org/">Join us on SCN</a> and
67 the <a href="../mailing-list.html">mailing list</a>
68 </p>
69 </div>
70 </div>
72 <!-- Content -->
73 <div id="content">
75 <h2>Collaborative management</h2>
77 <ul>
78 <li><a href="#kiss">KISS and comply to standards.</a></li>
79 <li><a href="#tank">Build host &amp; home.</a></li>
80 <li><a href="#repos">Mercurial repositories.</a></li>
81 <li><a href="#gui">GUI in GTK and CGI/web</a></li>
82 <li><a href="#iconv">Implementation of iconv().</a></li>
83 <li><a href="#pkgs">Tazpkg packages.</a></li>
84 <li><a href="#website">Website Management.</a></li>
85 </ul>
87 <a name="kiss"></a>
88 <h2>KISS and comply to standards</h2>
89 <p>
90 Keep it simple: follow the best standards, carefully draft and write
91 high quality documentation, provide a stable and robust system and keep
92 the <em>rootfs</em> on the LiveCD light enough to run on machines with at
93 least 128 MB RAM. It's also possible to use GTK+2, Dialog, SHell scripts,
94 or PHP coding tools on the distribution. The idea is not to duplicate and
95 to think small...
96 </p>
98 <a name="tank"></a>
99 <h2>Tank - Build host &amp; home</h2>
100 <p>
101 Each contributor may have an account on the project server with secure
102 access, disk space, a public directory and all development tools.
103 Developers can compile packages and maintainers of the mirror can handle
104 sychronization. Tank also hosts the website, web boot and mercurial
105 repositories: <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
106 </p>
107 <p>
108 Instructions on using the build host are described in the Cookbook:
109 <a href="http://doc.slitaz.org/en:cookbook:buildhost">
110 SliTaz Build Host (tank)</a>.
111 </p>
113 <a name="repos"></a>
114 <h2>Mercurial repositories</h2>
115 <p>
116 SliTaz Mercurial or Hg repos can be browsed or cloned by anyone using
117 the URL: <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a>. People
118 with write access can directly use <code>repos.slitaz.org</code> which
119 requires authentication. Mercurial uses Python and is installable with:
120 <code>tazpkg get-install mercurial</code>
121 </p>
123 <h3>~/.hgrc</h3>
124 <p>
125 Before you push your first commit onto the server, be sure that you have a
126 correct Hg configuration file with your name and email address, and remember
127 to check that you are not root. Personal ~/.hgrc file example:
128 </p>
129 <pre class="script">
130 [ui]
131 username = FirstName LastName &lt;you@example.org&gt;
132 </pre>
133 <h4>Clone, modify, commit and push</h4>
134 <p>
135 Clone a repo, example for wok:
136 </p>
137 <pre>
138 $ hg clone http://repos.slitaz.org/wok
139 </pre>
140 <p>
141 Change directory to wok, note you must be in the repository to be able
142 to use 'hg' commands. To check all logs or just the last log:
143 </p>
144 <pre>
145 $ hg log
146 $ hg head
147 </pre>
148 <p>
149 Add or modify one or more files and commit:
150 </p>
151 <pre>
152 $ hg add
153 $ hg status
154 $ hg commit -m "Log message..."
155 $ hg log
156 </pre>
157 <p>
158 Note that you can use the command <code>rollback</code> to roll back to the last
159 transaction. Before pushing changes to the server, it is safe to pull once:
160 </p>
161 <pre>
162 $ hg pull
163 $ hg push
164 </pre>
165 <p>
166 Done, your changes, code or corrections are now on the server.
167 </p>
168 <h4>Updating a local wok</h4>
169 <p>
170 To update your wok with the local server (<em>pull</em> to pull the changes):
171 </p>
172 <pre>
173 $ hg pull -u
174 </pre>
175 <h4>Useful commands</h4>
176 <p>
177 Hg commands that can be used.
178 </p>
179 <ul>
180 <li><code>hg help</code> : Display the full list of commands.</li>
181 <li><code>hg rollback</code> : Undo the last action performed (commit,
182 pull, push).</li>
183 <li><code>hg log &lt;package&gt;</code> : Display a package log.</li>
184 <li><code>hg head</code> : Display the last log.</li>
185 </ul>
187 <a name="gui"></a>
188 <h2>GUI - Pure C/GTK, Yad, Vala/Genie and CGI/web</h2>
190 <p>
191 There are many ways to create user interfaces in the open source world. From
192 the start of the project until 3.0 we mainly used a tool called Gtkdialog
193 which let us create quite nice and complex interfaces in GTK, but using a
194 scripting language that just run without having to be compiled. But gtkdialog is
195 unmaintained and lacks many new GTK features, so we switched to Yad for simple GUI boxes.
196 For all the administration, packages and configuration tools we switched to TazPanel,
197 a CGI/web interface with a gui coded in xHTML 5 and CSS 3.
198 </p>
199 <p>
200 Yad is very simple but doesn't allow us to create complex interfaces even if we
201 only need 2 or 3 entries with labels and a few buttons, so another way
202 must be found. The advantage of a scripting language is the fact that it doesn't need
203 to be compiled and can be coded in realtime (but it produces slower applications).
204 Writing tools in C is complex and gets less contributions since SHell scripts are easier
205 to understand, so the guidelines are now to keep and continue to improve our
206 cmdline tools and provide frontends in GTK or CGI/web.
207 </p>
208 <p>
209 There are many new languages that use GTK such as Genie, Vala or GTKaml.
210 But keep in mind that they are not as popular as C and GTK and not really
211 easier to learn and use (for simple frontends you can use SHell
212 scripts to perform tasks). You can use Vala but look at a pure
213 GTK single window, it uses only 14 lines:
214 </p>
215 <pre>
216 #include &lt;gtk/gtk.h&gt;
218 int main(int argc, char *argv[])
219 {
220 GtkWidget *window;
222 gtk_init(&amp;argc, &amp;argv);
223 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
224 g_signal_connect (G_OBJECT (window), "destroy",
225 G_CALLBACK (gtk_main_quit), NULL);
227 gtk_widget_show(window);
228 gtk_main();
229 return 0;
230 }
231 </pre>
232 <p>
233 If you are not sure about which language to use, discuss it on the mailing list.
234 If you just want a small GUI function, look at tazbox in the slitaz-tools
235 repo, it has tiny desktop tools such as a logout box. The first
236 SliTaz sub-project written in pure GTK is TazWeb and you can use it to learn
237 ways to use system() to include system commands in your frontend. For
238 example TazWeb uses wget for downloads and sed to add bookmarks.
239 </p>
240 <p>
241 Yad scripts should follow TazYad guidelines:
242 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">
243 README</a> and
244 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">
245 example code</a>
246 </p>
248 <a name="iconv"></a>
249 <h2>Implementation of iconv()</h2>
250 <p>
251 SliTaz uses iconv() provided by GNU glibc - any packages that offer
252 <code>libiconv</code> must use the library contained in <code>glibc-locale</code>.
253 There is therefore no longer a libiconv package (1.2 MB) in SliTaz.
254 </p>
256 <a name="pkgs"></a>
257 <h2>Tazpkg Packages</h2>
258 <p>
259 The tazpkg packages in SliTaz are automatically created via Tazwok and a
260 receipt in the wok. The Cookbook describes the
261 <a href="http://doc.slitaz.org/en:cookbook:wok">use of tools</a>
262 and the format of <a href="http://doc.slitaz.org/en:cookbook:receipt">receipts</a>.
263 These are required reading before we begin.
264 </p>
265 <p>
266 In terms of choice of package, the idea is to offer a package by task or
267 functionality, ie. the lightest application in the field and not duplicated.
268 Note that the current packages are not immutable, if you find an alternative
269 that is lighter, with more features or more <em>sexy</em> for a few extra KB,
270 you can suggest it on the Mailing List. Particular attention is given to
271 packages for the LiveCD, these should be stripped, removing unnecesary
272 dependencies and compiler options. In general candidate packages for the core
273 LiveCD are discussed on the Mailing List.
274 </p>
275 <p>
276 Before you begin to compile and create packages for SliTaz, be sure that the
277 work doesn't already exist in the
278 <a href="http://download.tuxfamily.org/slitaz/packages/undigest/">undigest</a>
279 wok provided by the primary SliTaz mirror. Don't forget that the members
280 of the list are there to help you and that the documentation of the
281 <a href="http://doc.slitaz.org/en:cookbook:wok">wok and tools</a>
282 exists to help you get started.
283 </p>
285 <a name="pkgs-naming"></a>
286 <h3>Naming of packages</h3>
287 <p>
288 In most cases the package name is the same as the source, except for
289 Python, Perl, PHP, Ruby and Lua modules. For example, the package
290 providing a Kid template system written in Python and XML is named:
291 <code>python-kid</code>.
292 </p>
294 <a name="website"></a>
295 <h2>Website Management</h2>
296 <p>
297 The website is managed via a mercurial repository, they can be cloned by:
298 </p>
299 <pre>
300 $ hg clone http://hg.slitaz.org/website
301 Or if you have the proper permissions:
302 $ hg clone http://repos.slitaz.org/website
303 </pre>
305 <h3>xHTML coding style</h3>
306 <p>
307 The pages and different <em>books</em> are coded in xHTML 1.0
308 transitional. The title of level 1 is used only once (at the top),
309 level 2 is the title of the document and levels 3 and 4 are then used for
310 the subtitles. If a list is used instead using smart anchors;
311 then that starts at the top, just after the title of level 2.
312 Paragraphs are contained in the tags <code>&lt;p&gt;&lt;/p&gt;</code>.
313 For indentation, we use tabs - the reason being semantics and to take
314 up less space in terms of octets (bytes). To put code, like the name of
315 a command inside a paragraph: <code>&lt;code&gt;</code> is the preferred
316 method. To view commands or to utilize a terminal, the web pages use
317 <code>&lt;pre&gt;</code> to display the formatted text. Example:
318 </p>
319 <pre>
320 $ command
321 </pre>
322 <p>
323 To view text that can be copied and pasted, such as scripts,
324 bits of code, sample configuration files, etc - we also use
325 <code>&lt;pre&gt;</code>, but with a CSS class named "script". Example:
326 </p>
327 <pre class="script">
328 &lt;pre class="script"&gt;
330 code...
332 &lt;/pre&gt;
333 </pre>
334 <p>
335 The <em>emphasized</em> words put themselves in the tag <code>&lt;em&gt;</code>
336 and internal links are relative. Remember to check the validity
337 of the code via the online <em>validator</em> of the W3C.
338 </p>
340 <a name="diff"></a>
341 <h2>Diff and patch</h2>
342 <p>
343 The utilities <code>diff</code> and <code>patch</code> are command-line tools
344 for creating and implementing a file containing differences between two files.
345 This technique is often used for collaboration and the changes made to the
346 original file can be clearly extracted. To create a <code>diff</code> file
347 readable by humans in a simple text editor, you must supply the <code>-u</code> option:
348 </p>
349 <pre>
350 $ diff -u file.orig file.new &gt; file.diff
351 </pre>
352 <p>
353 To apply a patch:
354 </p>
355 <pre>
356 $ patch file.orig file.diff
357 </pre>
359 <!-- End of content -->
360 </div>
362 <!-- Footer -->
363 <div id="footer">
364 Copyright &copy; <span class="year"></span>
365 <a href="http://www.slitaz.org/">SliTaz</a> - Network:
366 <a href="http://scn.slitaz.org/">Community</a>
367 <a href="http://doc.slitaz.org/">Doc</a>
368 <a href="http://forum.slitaz.org/">Forum</a>
369 <a href="http://pkgs.slitaz.org/">Packages</a>
370 <a href="http://bugs.slitaz.org">Bugs</a>
371 <a href="http://hg.slitaz.org/">Hg</a>
372 <p>
373 SliTaz @
374 <a href="http://twitter.com/slitaz">Twitter</a>
375 <a href="http://www.facebook.com/slitaz">Facebook</a>
376 <a href="http://distrowatch.com/slitaz">Distrowatch</a>
377 <a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a>
378 <a href="http://flattr.com/profile/slitaz">Flattr</a>
379 </p>
380 </div>
382 </body>
383 </html>