website view de/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 (2021-01-22)
parents 6f448baa38a7
children
line source
1 <!DOCTYPE html>
2 <html lang="de">
3 <head>
4 <meta charset="UTF-8">
5 <title>SliTaz-Schmiede</title>
6 <meta name="description" content="slitaz Entwickler Schmiede">
7 <meta name="keywords" lang="en" content="slitaz, devel, hg, bugs">
8 <meta name="author" content="Christophe Lincoln, HGT">
9 <?php include("../../lib/html/meta-link.html"); ?>
10 </head>
11 <body>
13 <?php
14 include("../../lib/html/header.de.html");
15 include("../../lib/html/nav.de.html");
16 include("../../lib/lang.php");
17 ?>
19 <!-- Content -->
20 <section id="content">
22 <h2>Gemeinschaftliche Verwaltung</h2>
24 <ul>
25 <li><a href="#kiss">„KISS“ und Standards respektieren.</a></li>
26 <li><a href="#tank">Rechner für die Entwicklung und die Internetpräsenz.</a></li>
27 <li><a href="#repos">Mercurial-Depots.</a></li>
28 <li><a href="#gui">Grafische Oberflächen in GTK und CGI</a></li>
29 <li><a href="#iconv">Implementierung von iconv().</a></li>
30 <li><a href="#pkgs">SliTaz-Pakete erzeugen.</a></li>
31 <li><a href="#website">Verwaltung der Internetpräsenz.</a></li>
32 </ul>
34 <h2 id="kiss">„KISS“ und Standards respektieren</h2>
36 <p>
37 „Keep it small and simple (KISS)“: befolgen Sie die besten Standards, entwerfen und schreiben
38 Sie sorgfältig Dokumentation von hoher Qualität, erzeugen Sie ein stabiles und robustes System und
39 halten Sie das Wurzeldateisystem <code>rootfs</code> in dem Direktstatrt-ISO-Abbild so klein, dass
40 es auf Rechnern mit mindestens 128 MiB Arbeitsspeicher geladen werden kann. Dennoch ist es möglich
41 GTK+2, Dialog, Kommandoprozeduren oder PHP-Werkzeuge in die Distribution zu übernehmen. Die Idee ist,
42 keine Doppelarbeit zu leisten und nicht schmalspurig zu denken...
43 </p>
45 <h2 id="tank">Entwicklungstank - Rechner für die Entwicklung und die Internetpräsenz</h2>
47 <p>
48 Jeder Mitwirkende kann sich über einen sicheren Zugang an dem Projekt-Rechner anmelden, kann dort
49 Plattenplatz belegen, ein Verzeichnis <code>Public</code> anlegen und alle Entwicklerwerkzeuge nutzen.
50 Entwickler können Pakete erzeugen und Verwalter der Spiegel-Depots können diese synchronisieren.
51 Auf diesem Rechner befindet sich auch der Kompilierungsautomat, die Dateien zum Laden über das
52 Netzwerk und „SliTaz Pro“: <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
53 </p>
55 <p>
56 Anleitungen zum Erstellen von Paketen auf diesem Rechner finden sich im Kochbuch:
57 <a href="http://doc.slitaz.org/de:cookbook:buildhost">Entwicklungstank</a>.
58 </p>
60 <h2 id="repos">Mercurial-Depots</h2>
62 <p>
63 SliTaz-Mercurial- (oder Hg-) Depots können von jedem unter dem URL
64 <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a> angesehen und dupliziert werden.
65 Benutzer mit Schreibrecht können über die Adresse <code>repos.slitaz.org</code> direkt auf
66 die Depots zugreifen. Beim Schreiben müssen ein Benutzername und ein Kennwort angegeben werden.
67 Mercurial verwendet Python. Es kann auf SliTaz mit <code>tazpkg get-install mercurial</code>
68 installiert werden.
69 </p>
71 <h3>~/.hgrc</h3>
73 <p>
74 Vor dem Transfer des ersten Beitrags auf den Entwicklungsrechner (mit <code>hg push</code>)
75 muss eine korrekte Konfigurationsdatei <code>~/.hgrc</code> erstellt werden. Darin sollte
76 Ihre E-Mail-Adresse und Ihr richtiger Name enthalten sein. Hier ein Beispiel:
77 </p>
78 <pre class="script">
79 [ui]
80 username = Vorname Nachname &lt;name@example.de&gt;
81 </pre>
83 <h4>Duplizieren, Ändern, Änderungen lokal übernehmen und Änderungen transferieren</h4>
85 <p>
86 Ein Depot, z.B. der Wok <code>wok</code>, wird wie folgt lokal dupliziert:
87 </p>
88 <pre>
89 $ hg clone http://repos.slitaz.org/wok
90 </pre>
91 <p>
92 Jetzt muss das Verzeichnis <code>wok</code> als Arbeitsverzeichnis eingestellt werden, sonst funktionieren die
93 <code>hg</code>-Kommandos nicht. Zum Anzeigen aller oder nur der letzten Änderungen:
94 </p>
95 <pre>
96 $ hg log
97 $ hg head
98 </pre>
99 <p>
100 Nach dem Hinzufügen oder Ändern von einer oder auch mehrerer Dateien den Änderungsstatus anzeigen
101 und die Änderungen lokal übernehmen:
102 </p>
103 <pre>
104 $ hg add
105 $ hg status
106 $ hg commit -m "kurze beschreibung der vorgenommenen änderungen"
107 $ hg log
108 </pre>
109 <p>
110 Mit <code>hg rollback</code> können Sie die letzte Änderung rückgängig machen. Bevor Sie die
111 Änderungen in das Depot transferieren, sollten Sie zwischenzeitliche Änderungen anderer übernehmen:
112 </p>
113 <pre>
114 $ hg pull
115 $ hg push
116 </pre>
117 <p>
118 Das ist schon alles; Ihre Änderungen, Quellprogramme oder Korrekturen sind jetzt im Depot.
119 </p>
121 <h4>Ein lokal dupliziertes Depot aktualisieren</h4>
123 <p>
124 Ein lokal dupliziertes Depot kann aus dem SliTaz-Depot aktualisiert werden mit:
125 </p>
126 <pre>
127 $ hg pull -u
128 </pre>
130 <h4>Weitere nützliche Kommandos</h4>
132 <p>
133 Weitere <code>hg</code>-Kommandos:
134 </p>
135 <ul>
136 <li><code>hg help</code> : Zeigt alle möglichen Kommandos.</li>
137 <li><code>hg rollback</code> : Die letzte Aktion (commit, pull, push) rückgängig machen.</li>
138 <li><code>hg log &lt;package&gt;</code> : Das Änderungsprotokoll eines Paketes zeigen.</li>
139 <li><code>hg head</code> : Die letzte Änderung anzeigen.</li>
140 </ul>
142 <h2 id="gui">Grafische Oberflächen - reines C/GTK, Yad, Vala/Genie und CGI</h2>
144 <p>
145 Es gibt viele Möglichkeiten, mit „open source“-Produkten eine Benutzeroberfläche zu erzeugen.
146 Bis zur Version 3.0 von SliTaz haben wir hauptsächlich Gtkdialog verwendet, um gefällige
147 und komplexe Oberflächen in GTK zu erstellen, wobei die Anweisungen ausgeführt wurden ohne
148 übersetzt werden zu müssen. Aber gtkdialog wird nicht mehr gewartet und es fehlen viele
149 neuere GTK-Funktionalitäten. Daher sind wir bei einfachen Grafikfenstern auf Yad umgestiegen.
150 Bei der Verwaltung des Systems und der Pakete sowie bei den Konfigurationswerkzeugen sind wir
151 auf TazPanel umgestiegen, eine Web-Oberfläche mit CGI-Nutzung, die mit xHTML&nbsp;5 und CSS&nbsp;3
152 programmiert wird.
153 </p>
154 <p>
155 Yad ist sehr einfach, kann aber keine komplexen Oberflächen erzeugen: schon
156 zwei oder drei Einträge mit Marken und einige Schaltflächen sind nicht möglich. Daher mussten
157 wir eine andere Möglichkeit suchen. Der Vorteil eines Interpreters ist, dass die Anweisungen
158 nicht übersetzt werden müssen sondern zur Laufzeit verarbeitet werden, was die Anwendung
159 allerdings verlangsamt.
160 Programme in C zu schreiben ist komplex und daran werden sich weniger Mitwirkende beteiligen, da
161 Kommandoprozeduren leichter zu verstehen sind. Daher lautet die Richtlinie jetzt:
162 unsere Kommandoprozeduren beibehalten und verbessern und Benutzeroberflächen dafür in GTK oder CGI
163 zur Verfügung stellen.
164 </p>
165 <p>
166 Es gibt viele neue Programmiersprachen, die GTK verwenden, z.B. Genie, Vala oder GTKaml.
167 Beachten Sie aber, dass sie nicht so verbreitet sind wie C und GTK und nicht wirklich
168 leichter zu erlernen und zu nutzen sind. Für einfache Grafikfenster können Sie Kommandoprozeduren
169 benutzen. Sie können auch Vala benutzen, aber reines GTK braucht für ein einzelnes Fenster auch nur 14
170 Anweisungszeilen:
171 </p>
172 <pre>
173 #include &lt;gtk/gtk.h&gt;
175 int main(int argc, char *argv[])
176 {
177 GtkWidget *window;
179 gtk_init(&amp;argc, &amp;argv);
180 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
181 g_signal_connect (G_OBJECT (window), "destroy",
182 G_CALLBACK (gtk_main_quit), NULL);
184 gtk_widget_show(window);
185 gtk_main();
186 return 0;
187 }
188 </pre>
189 <p>
190 Wenn Sie sich nicht sicher sind, welche Programmiersprache Sie verwenden sollen, können Sie Ihre Wahl
191 bei der „Mailing“-Liste zur Diskussion stellen.
192 Wenn Sie nur eine einfache grafische Oberfläche brauchen, können Sie sich <code>tazbox</code> im
193 Depot <code>slitaz-tools</code> ansehen; das Paket enthält kleine Programme für die grafische Oberfläche
194 wie z.B. ein Abmeldefenster. TazWeb ist das erste Teilprojekt von SliTaz, das in reinem GTK geschrieben
195 wurde.
196 Sie können es ansehen um zu lernen, wie man die Funktion <code>system()</code> in einer grafischen
197 Oberfläche verwenden kann. So verwendet TazWeb beispielsweise <code>wget</code> zum Dateitransfer und
198 <code>sed</code> um Lesezeichen hinzuzufügen.
199 </p>
200 <p>
201 Yad-Anweisungsprozeduren sollten die TazYad-Richtlinien befolgen:
202 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">README</a> und
203 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">Programmierbeispiele</a>
204 </p>
206 <h2 id="iconv">Implementierung von iconv()</h2>
208 <p>
209 SliTaz verwendet iconv() aus der GNU glibc - alle Pakete, die <code>libiconv</code> anbieten,
210 müssen die Bibliothek aus <code>glibc-locale</code> verwenden.
211 Daher gibt es kein Paket <code>libiconv</code> (1.2 MB) mehr in SliTaz.
212 </p>
214 <h2 id="pkgs">SliTaz-Pakete erzeugen</h2>
216 <p>
217 Für die offizielle Paketerzeugung werden die Kochwerkzeuge verwendet. Diese sind in dem Paket
218 <code>cookutils</code> enthalten, das in jedem SliTaz-System installiert ist, wie auch das
219 <a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a>
220 für die Verwendung der Kochwerkzeuge. Damit werden Pakete erzeugt, die von Tazpkg verwaltet werden können.
221 </p>
222 <p>
223 Die Pakete werden bei SliTaz automatisch von <a href="http://cook.slitaz.org/">„Cooker“</a> aus einem
224 Quellpaket und einem Rezep im Wok erzeugt. Im Kochbuch ist das Format der
225 <a href="http://doc.slitaz.org/de:cookbook:receipt">Rezepte</a> beschrieben.
226 Die Beschreibung der Kochwerkzeuge und der Rezepte sollten Sie gelesen haben, bevor Sie mit der
227 Paketerzeugung beginnen.
228 </p>
229 <p>
230 Bei der Auswahl eines Paketes für SliTaz sollten nur solche in Betracht kommen, die
231 nützlich sind und funktionieren. Davon sollten Sie das kleinste verfügbare auswählen.
232 Es sollten nicht mehrere Pakete mit gleicher Funktionalität erstellt werden.
233 Die aktuelle Auswahl der Pakete ist aber nicht festgeschrieben. Wenn es eine Alternative zu einem Paket
234 gibt, die noch kleiner ist, mehr Funktionen enthält oder mit ein paar KB mehr <em>attraktiver</em> ist,
235 kann die Übernahme bei der „Mailing“-Liste diskutiert werden.
236 Besondere Anforderungen werden an Pakete gestellt, die in Direktstart-ISO-Abbilder
237 übernommen werden sollen. Bei diesen sollten Symbolinformationen aus den Objektprogrammen
238 sowie unnötige Abhängigkeiten und Übersetzeroptionen entfernt werden.
239 Im Allgemeinen werden solche Pakete vor der Freigabe ebenfalls bei der „Mailing“-Liste zur
240 Diskussion gestellt.
241 </p>
242 <p>
243 Bevor Sie beginnen, Pakete für SliTaz zu übersetzen und erzeugen, stellen Sie zur Vermeidung von
244 Doppelarbeit sicher, dass es etwas entsprechendes nicht schon im
245 <a href="http://download.tuxfamily.org/slitaz/packages/undigest/">inoffiziellen Wok</a>
246 gibt. Die Mitglieder der „Mailing“-Liste geben gerne Hinweise und das
247 <a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a>
248 sollte für Anfänger hilfreich sein.
249 </p>
251 <h3 id="pkgs-naming">Benennung von Paketen</h3>
253 <p>
254 In den meisten Fällen stimmt der Name des Paketes mit dem Namen des Quellpaketes überein. Ausnahmen sind
255 Python, Perl, PHP, Ruby und Lua-Module. Beispielsweise heisst das Paket,
256 das ein „Kid template system“, in Python und XML geschrieben, enthält:
257 <code>python-kid</code>.
258 </p>
260 <h2 id="website">Verwaltung der Internetpräsenz</h2>
262 <p>
263 Die Internetpräsenz wird über das Mercurial-Depot <code>website</code> administriert. Dieses kann
264 dupliziert werden mit:
265 </p>
266 <pre>
267 $ hg clone http://hg.slitaz.org/website
268 oder wenn Sie die entsprechende Berechtigung haben:
269 $ hg clone http://repos.slitaz.org/website
270 </pre>
272 <h3>xHTML-Programmierstil</h3>
274 <p>
275 Die Seiten und verschiedene <em>Handbücher</em> sind in xHTML&nbsp;1.0&nbsp;transitional
276 programmiert. Die Überschrift der Stufe 1 wird nur einmal (ganz oben) verwendet,
277 Stufe 2 ist der Titel des Dokuments und die Stufen 3 und 4 werden für weitere Abstufungen
278 der Überschriften benutzt. Wenn eine Liste statt „smart anchors“ verwendet wird,
279 beginnt sie oben, direkt unterhalb einer Überschrift der Stufe 2.
280 Absätze werden in die Markierungen <code>&lt;p&gt;&lt;/p&gt;</code> eingeschlossen.
281 Für Einrückungen werden Tabulatoren verwendet. Dies ist in der Semantik begründet und sie
282 benötigen weniger Speicherplatz. Zur Darstellung von Kommandonamen oder ähnlichem innerhalb
283 eines Absatzes wird vorzugsweise <code>&lt;code&gt;</code> verwendet.
284 Beispiele für die Anwendung von Kommandos in einem Terminal werden als formatierter Text mit
285 <code>&lt;pre&gt;</code> ausgegeben, z.B.:
286 </p>
287 <pre>
288 $ command
289 </pre>
290 <p>
291 Zur Anzeige von Text, der kopiert und eingefügt werden kann, wie etwa Kommandoprozeduren,
292 Quellprogrammausschnitte, Konfigurationsdateien usw. wird ebenfalls
293 <code>&lt;pre&gt;</code> verwendet, aber mit einer CSS-Klasse namens “script”. Beispiel:
294 </p>
295 <pre class="script">
296 &lt;pre class="script"&gt;
298 code...
300 &lt;/pre&gt;
301 </pre>
302 <p>
303 <em>Hervorgehobene</em> Wörter erhalten das Merkmal <code>&lt;em&gt;</code>
304 und interne Verknüpfungen sind stets relativ. Denken Sie auch daran, Ihr Programm
305 mit dem <em>„validator“</em> des W3C auf Konformität zu prüfen.
306 </p>
308 <h2 id="diff">Diff und patch</h2>
310 <p>
311 Die Programme <code>diff</code> und <code>patch</code> dienen der Erstellung einer Datei, die
312 Unterschiede zwischen zwei Dateien enthält und mit deren Hilfe die Änderungen angewendet werden können.
313 Diese Technik wird oft angewendet, wenn mehrere Personen an einem Projekt arbeiten, damit Änderungen
314 an einer Originaldatei klar extrahiert werden können. Um eine <code>diff</code>-Datei zu erstellen,
315 die mit einem Texteditor für Menschen gut lesbar ist, muss die Option <code>-u</code> angegeben werden:
316 </p>
317 <pre>
318 $ diff -u file.orig file.new &gt; file.diff
319 </pre>
320 <p>
321 Zum Anbringen der Änderungen an der Originaldatei:
322 </p>
323 <pre>
324 $ patch file.orig file.diff
325 </pre>
327 <!-- End of content -->
328 </section>
330 <?php include("../../lib/html/footer.html"); ?>
332 </body>
333 </html>