website diff de/devel/forge.php @ rev 1312

german pages de/devel/ and de/artwork/ updated according to english pages
author Hans-G?nter Theisgen
date Sun Apr 23 17:06:09 2017 +0100 (2017-04-23)
parents 702cf77de7a6
children 38797c549c69
line diff
     1.1 --- a/de/devel/forge.php	Fri Jul 27 10:52:12 2012 +0200
     1.2 +++ b/de/devel/forge.php	Sun Apr 23 17:06:09 2017 +0100
     1.3 @@ -1,1 +1,331 @@
     1.4 -../../en/devel/forge.php
     1.5 \ No newline at end of file
     1.6 +<!DOCTYPE html>
     1.7 +<html lang="de">
     1.8 +<head>
     1.9 +	<meta charset="UTF-8">
    1.10 +	<title>SliTaz-Schmiede</title>
    1.11 +	<meta name="description" content="slitaz Entwickler Schmiede">
    1.12 +	<meta name="keywords" lang="en" content="slitaz, devel, hg, bugs">
    1.13 +	<meta name="author" content="Christophe Lincoln, HGT">
    1.14 +	<?php include("../../lib/html/meta-link.html"); ?>
    1.15 +</head>
    1.16 +<body>
    1.17 +
    1.18 +<?php 
    1.19 +include("../../lib/html/header.de.html");
    1.20 +include("../../lib/html/nav.de.html"); 
    1.21 +include("../../lib/lang.php"); 
    1.22 +?>
    1.23 +
    1.24 +<!-- Content -->
    1.25 +<section id="content">
    1.26 +
    1.27 +<h2>Gemeinschaftliche Verwaltung</h2>
    1.28 +
    1.29 +<ul>
    1.30 +	<li><a href="#kiss">„KISS“ und Standards respektieren.</a></li>
    1.31 +	<li><a href="#tank">Rechner für die Entwicklung und die Internetpräsenz.</a></li>
    1.32 +	<li><a href="#repos">Mercurial-Depots.</a></li>
    1.33 +	<li><a href="#gui">Grafische Oberflächen in GTK und CGI</a></li>
    1.34 +	<li><a href="#iconv">Implementierung von iconv().</a></li>
    1.35 +	<li><a href="#pkgs">SliTaz-Pakete erzeugen.</a></li>
    1.36 +	<li><a href="#website">Verwaltung der Internetpräsenz.</a></li>
    1.37 +</ul>
    1.38 +
    1.39 +<h2 id="kiss">„KISS“ und Standards respektieren</h2>
    1.40 +
    1.41 +<p>
    1.42 +	„Keep it simple (KISS)“: befolgen Sie die besten Standards, entwerfen und schreiben
    1.43 +	Sie sorgfältig Dokumentation von hoher Qualität, erzeugen Sie ein stabiles und robustes System und
    1.44 +	halten Sie das Wurzeldateisystem <code>rootfs</code> in dem Direktstatrt-ISO-Abbild so klein, dass
    1.45 +	es auf Rechnern mit mindestens 128 MiB Arbeitsspeicher geladen werden kann. Dennoch ist es möglich
    1.46 +	GTK+2, Dialog, Kommandoprozeduren oder PHP-Werkzeuge in die Distribution zu übernehmen. Die Idee ist
    1.47 +	keine Doppelarbeit zu leisten und nicht schmalspurig zu denken...
    1.48 +</p>
    1.49 +
    1.50 +<h2 id="tank">Entwicklungstank - Rechner für die Entwicklung und die Internetpräsenz</h2>
    1.51 +
    1.52 +<p>
    1.53 +	Jeder Mitwirkende kann sich über einen sicheren Zugang an dem Projekt-Rechner anmelden, kann dort
    1.54 +	Plattenplatz belegen, ein Verzeichnis <code>Public</code> anlegen und all Entwicklerwerkzeuge nutzen.
    1.55 +	Entwickler können Pakete erzeugen und Verwalter der Spiegel-Depots können diese synchronisieren.
    1.56 +	Auf diesem Rechner befindet sich auch der Kompilierungsautomat, die Dateien zum Laden über das
    1.57 +	Netzwerk und „SliTaz Pro“: <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
    1.58 +</p>
    1.59 +
    1.60 +<p>
    1.61 +	Anleitungen zum Erstellen von Paketen auf diesem Rechner finden sich im Kochbuch: 
    1.62 +	<a href="http://doc.slitaz.org/de:cookbook:buildhost">Entwicklungstank</a>.
    1.63 +</p>
    1.64 +
    1.65 +<h2 id="repos">Mercurial-Depots</h2>
    1.66 +
    1.67 +<p>
    1.68 +	SliTaz-Mercurial- (oder Hg-) Depots können von jedem unter dem URL
    1.69 +	<a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a> angesehen und dupliziert werden.
    1.70 +	Benutzer mit Schreibrecht können über die Adresse <code>repos.slitaz.org</code> direkt auf
    1.71 +	die Depots zugreifen. Beim Schreiben müssen ein Benutzername und ein Kennwort angegeben werden.
    1.72 +	Mercurial verwendet Python. Es kann auf SliTaz mit <code>tazpkg get-install mercurial</code>
    1.73 +	installiert werden.
    1.74 +</p>
    1.75 +
    1.76 +<h3>~/.hgrc</h3>
    1.77 +
    1.78 +<p>
    1.79 +	Vor dem Transfer des ersten Beitrags auf den Entwicklungsrechner (mit <code>hg push</code>)
    1.80 +	muss eine korrekte Konfigurationsdatei <code>~/.hgrc</code> erstellt werden. Darin sollte
    1.81 +	Ihre E-Mail-Adresse und Ihr richtiger Name enthalten sein. Hier ein Beispiel:
    1.82 +</p>
    1.83 +<pre class="script">
    1.84 +[ui]
    1.85 +username = Vorname Nachname &lt;name@example.de&gt;
    1.86 +</pre>
    1.87 +
    1.88 +<h4>Duplizieren, Ändern, Änderungen lokal übernehmen und Änderungen transferieren</h4>
    1.89 +
    1.90 +<p>
    1.91 +Ein Depot, z.B. der Wok <code>wok</code>, wird wie folgt lokal dupliziert:
    1.92 +</p>
    1.93 +<pre>
    1.94 + $ hg clone http://repos.slitaz.org/wok
    1.95 +</pre>
    1.96 +<p>
    1.97 +Jetzt muss das Verzeichnis <code>wok</code> als Arbeitsverzeichnis eingestellt werden, sonst funktionieren die 
    1.98 +<code>hg</code>-Kommandos nicht. Zum Anzeigen aller oder nur der letzten Änderungen:
    1.99 +</p>
   1.100 +<pre>
   1.101 + $ hg log
   1.102 + $ hg head
   1.103 +</pre>
   1.104 +<p>
   1.105 +Nach dem Hinzufügen oder Ändern von einer oder auch mehrerer Dateien den Änderungsstatus anzeigen und die Änderungen
   1.106 +lokal übernehmen:
   1.107 +</p>
   1.108 +<pre>
   1.109 + $ hg add
   1.110 + $ hg status
   1.111 + $ hg commit -m "kurze beschreibung der vorgenommenen änderungen"
   1.112 + $ hg log
   1.113 +</pre>
   1.114 +<p>
   1.115 +Mit <code>hg rollback</code> können Sie die letzte Änderung rückgängig machen. Bevor Sie die
   1.116 +Änderungen in das Depot transferieren, sollten Sie zwischenzeitliche Änderungen anderer übernehmen:
   1.117 +</p>
   1.118 +<pre>
   1.119 + $ hg pull
   1.120 + $ hg push
   1.121 +</pre>
   1.122 +<p>
   1.123 +Das ist schon alles; Ihre Änderungen, Quellprogramme oder Korrekturen sind jetzt im Depot.
   1.124 +</p>
   1.125 +
   1.126 +<h4>Ein lokal dupliziertes Depot aktualisieren</h4>
   1.127 +
   1.128 +<p>
   1.129 +Ein lokal dupliziertes Depot kann aus dem SliTaz-Depot aktualisiert werden mit:
   1.130 +</p>
   1.131 +<pre>
   1.132 + $ hg pull -u
   1.133 +</pre>
   1.134 +
   1.135 +<h4>Weitere nützliche Kommandos</h4>
   1.136 +
   1.137 +<p>
   1.138 +Weitere <code>hg</code>-Kommandos:
   1.139 +</p>
   1.140 +<ul>
   1.141 +	<li><code>hg help</code> : Zeigt alle möglichen Kommandos.</li>
   1.142 +	<li><code>hg rollback</code> : Die letzte Aktion (commit, pull, push) rückgängig machen.</li>
   1.143 +	<li><code>hg log &lt;package&gt;</code> : Das Änderungsprotokoll eines Paketes zeigen.</li>
   1.144 +	<li><code>hg head</code> : Die letzte Änderung anzeigen.</li>
   1.145 +</ul>
   1.146 +
   1.147 +<h2 id="gui">Grafische Oberflächen - reines C/GTK, Yad, Vala/Genie und CGI</h2>
   1.148 +
   1.149 +<p>
   1.150 +	Es gibt viele Möglichkeiten, mit „open source“-Produkten eine Benutzeroberfläche zu erzeugen.
   1.151 +	Bis zur Version 3.0 von SliTaz haben wir hauptsächlich Gtkdialog verwendet, um gefällige
   1.152 +	und komplexe Oberflächen in GTK zu erstellen, wobei die Anweisungen ausgeführt wurden ohne
   1.153 +	übersetzt werden zu müssen. Aber gtkdialog wird nicht mehr gewartet und es fehlen viele
   1.154 +	neuere GTK-Funktionalitäten. Daher sind wir bei einfachen Grafikfenstern auf Yad umgestiegen.
   1.155 +	Bei der Verwaltung des Systems und der Pakete sowie bei den Konfigurationswerkzeugen sind wir
   1.156 +	auf TazPanel umgestiegen, eine Web-Oberfläche mit CGI-Nutzung, die mit xHTML&nbsp;5 und CSS&nbsp;3
   1.157 +	programmiert wird.
   1.158 +</p>
   1.159 +<p>
   1.160 +	Yad ist sehr einfach, kann aber keine komplexen Oberflächen erzeugen: schon 
   1.161 +	zwei oder drei Einträge mit Marken und einige Schaltflächen sind nicht möglich. Daher mussten
   1.162 +	wir eine andere Möglichkeit suchen. Der Vorteil eines Interpreters ist, dass die Anweisungen
   1.163 +	nicht übersetzt werden müssen sondern zur Laufzeit verarbeitet werden, was die Anwendung
   1.164 +	allerdings verlangsamt.
   1.165 +	Programme in C zu schreiben ist komplex und daran werden sich weniger Mitwirkende beteiligen, da
   1.166 +	Kommandoprozeduren leichter zu verstehen sind. Daher lautet die Richtlinie jetzt:
   1.167 +	unsere Kommandoprozeduren beibehalten und verbessern und Benutzeroberflächen dafür in GTK oder CGI
   1.168 +	zur Verfügung stellen.
   1.169 +</p>
   1.170 +<p>
   1.171 +	Es gibt viele neue Programmiersprachen, die GTK verwenden, z.B. Genie, Vala oder GTKaml.
   1.172 +	Beachten Sie aber, dass sie nicht so verbreitet sind wie C und GTK und nicht wirklich
   1.173 +	leichter zu erlernen und zu nutzen sind. Für einfache Grafikfenster können Sie Kommandoprozeduren
   1.174 +	benutzen. Sie können auch Vala benutzen, aber reines GTK braucht für ein einzelnes Fenster auch nur 14
   1.175 +	Anweisungszeilen:
   1.176 +</p>
   1.177 +<pre>
   1.178 +#include &lt;gtk/gtk.h&gt;
   1.179 +
   1.180 +int main(int argc, char *argv[])
   1.181 +{
   1.182 +	GtkWidget *window;
   1.183 +
   1.184 +	gtk_init(&amp;argc, &amp;argv);
   1.185 +	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   1.186 +	g_signal_connect (G_OBJECT (window), "destroy",
   1.187 +			G_CALLBACK (gtk_main_quit), NULL);
   1.188 +
   1.189 +	gtk_widget_show(window);
   1.190 +	gtk_main();
   1.191 +	return 0;
   1.192 +}
   1.193 +</pre>
   1.194 +<p>
   1.195 +	Wenn Sie sich nicht sicher sind, welche Programmiersprache Sie verwenden sollen, können Sie Ihre Wahl
   1.196 +	bei der „Mailing“-Liste zur Diskussion stellen.
   1.197 +	Wenn Sie nur eine einfache grafische Oberfläche brauchen, können Sie sich <code>tazbox</code> im
   1.198 +	Depot <code>slitaz-tools</code> ansehen; das Paket enthält kleine Programme für die grafische Oberfläche
   1.199 +	wie z.B. ein Abmeldefenster. TazWeb ist das erste Teilprojekt von SliTaz, das in reinem GTK geschrieben wurde.
   1.200 +	Sie können es ansehen um zu lernen, wie man die Funktion <code>system()</code> in einer grafischen
   1.201 +	Oberfläche verwenden kann. So verwendet TazWeb beispielsweise <code>wget</code> zum Dateitransfer und
   1.202 +	<code>sed</code> um Lesezeichen hinzuzufügen.
   1.203 +</p>
   1.204 +<p>
   1.205 +	Yad-Anweisungsprozeduren sollten die TazYad-Richtlinien befolgen:
   1.206 +	<a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">README</a> und
   1.207 +	<a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">Programmierbeispiele</a>
   1.208 +</p>
   1.209 +
   1.210 +<h2 id="iconv">Implementierung von iconv()</h2>
   1.211 +
   1.212 +<p>
   1.213 +	SliTaz verwendet iconv() aus der GNU glibc - alle Pakete, die <code>libiconv</code> anbieten,
   1.214 +	müssen die Bibliothek aus <code>glibc-locale</code> verwenden.
   1.215 +	Daher gibt es kein Paket <code>libiconv</code> (1.2 MB) mehr in SliTaz.
   1.216 +</p>
   1.217 +
   1.218 +<h2 id="pkgs">SliTaz-Pakete erzeugen</h2>
   1.219 +
   1.220 +<p>
   1.221 +	Für die offizielle Paketerzeugung werden die Kochwerkzeuge verwendet. Diese sind in dem Paket <code>cookutils</code>
   1.222 +	enthalten, das in jedem SliTaz-System installiert ist, wie auch das 
   1.223 +	<a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a> für die Verwendung der Kochwerkzeuge. Damit werden Pakete erzeugt, die von TazPKG verwaltet werden können.
   1.224 +</p>
   1.225 +<p>
   1.226 +	Die Pakete werden bei SliTaz automatisch von <a href="http://cook.slitaz.org/">„Cooker“</a> aus einem
   1.227 +	Quellpaket und einem Rezep im Wok erzeugt. Im Kochbuch ist das Format der
   1.228 +	<a href="http://doc.slitaz.org/de:cookbook:receipt">Rezepte</a> beschrieben.
   1.229 +	Die Beschreibung der Kochwerkzeuge und der Rezepte sollten Sie gelesen haben, bevor Sie mit der
   1.230 +	Paketerzeugung beginnen.
   1.231 +</p>
   1.232 +<p>
   1.233 +	Bei der Auswahl eines Paketes für SliTaz sollten nur solche in Betracht kommen, die
   1.234 +	nützlich sind und funktionieren. Davon sollten Sie das kleinste verfügbare auswählen.
   1.235 +	Es sollten nicht mehrere Pakete mit gleicher Funktionalität erstellt werden.
   1.236 +	Die aktuelle Auswahl der Pakete ist aber nicht festgeschrieben. Wenn es eine Alternative zu einem Paket
   1.237 +	gibt, die noch kleiner ist, mehr Funktionen enthält oder mit ein paar KB mehr <em>attraktiver</em> ist,
   1.238 +	kann die Übernahme bei der „Mailing-Liste“ diskutiert werden.
   1.239 +	Besondere Anforderungen werden an Pakete gestellt, die in Direktstart-ISO-Abbilder
   1.240 +	übernommen werden sollen. Bei diesen sollten Symbolinformationen aus den Objektprogrammen
   1.241 +	sowie unnötige Abhängigkeiten und Übersetzeroptionen entfernt werden.
   1.242 +	Im Allgemeinen werden solche Pakete vor der Freigabe ebenfalls bei der „Mailing-Liste“ zur
   1.243 +	Diskussion gestellt.
   1.244 +</p>
   1.245 +<p>
   1.246 +	Bevor Sie beginnen, Pakete für SliTaz zu übersetzen und erzeugen, stellen Sie zur Vermeidung von
   1.247 +	Doppelarbeit sicher, dass es etwas entsprechendes nicht schon im
   1.248 +	<a href="http://download.tuxfamily.org/slitaz/packages/undigest/">inoffiziellen Wok</a>
   1.249 +	gibt. Die Mitglieder der „Mailing-Liste“ geben gerne Hinweise und das
   1.250 +	<a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a>
   1.251 +	sollte für Anfänger hilfreich sein.
   1.252 +</p>
   1.253 +
   1.254 +<h3 id="pkgs-naming">Benennung von Paketen</h3>
   1.255 +
   1.256 +<p>
   1.257 +	In den meisten Fällen stimmt der Name des Paketes mit dem Namen des Quellpaketes überein. Ausnahmen sind
   1.258 +	Python, Perl, PHP, Ruby und Lua-Module. Beispielsweise heisst das Paket,
   1.259 +	das ein „Kid template system“, in Python und XML geschrieben, enthält:
   1.260 +	<code>python-kid</code>.
   1.261 +</p>
   1.262 +
   1.263 +<h2 id="website">Verwaltung der Internetpräsenz</h2>
   1.264 +
   1.265 +<p>
   1.266 +	Die Internetpräsenz wird über das Mercurial-Depot <code>website</code> administriert. Dieses kann dupliziert
   1.267 +	werden mit:
   1.268 +</p>
   1.269 +<pre>
   1.270 + $ hg clone http://hg.slitaz.org/website
   1.271 +  oder wenn Sie die entsprechende Berechtigung haben:
   1.272 + $ hg clone http://repos.slitaz.org/website
   1.273 +</pre>
   1.274 +
   1.275 +<h3>xHTML-Programmierstil</h3>
   1.276 +
   1.277 +<p>
   1.278 +	Die Seiten und verschiedene <em>Handbücher</em> sind in xHTML&nbsp;1.0&nbsp;transitional
   1.279 +	programmiert. Die Überschrift der Stufe 1 wird nur einmal (ganz oben) verwendet,
   1.280 +	Stufe 2 ist der Titel des Dokuments und die Stufen 3 und 4 werden für weitere Abstufungen
   1.281 +	der Überschriften benutzt. Wenn eine Liste statt „smart anchors“ verwendet wird, 
   1.282 +	beginnt sie oben, direkt unterhalb einer Überschrift der Stufe 2.
   1.283 +	Absätze werden in die Markierungen <code>&lt;p&gt;&lt;/p&gt;</code> eingeschlossen.
   1.284 +	Für Einrückungen werden Tabulatoren verwendet. Dies ist in der Semantik begründet und sie
   1.285 +	benötigen weniger Speicherplatz. Zur Darstellung von Kommandonamen oder ähnlichem innerhalb
   1.286 +	eines Absatzes wird vorzugsweise <code>&lt;code&gt;</code> verwendet.
   1.287 +	Beispiele für die Anwendung von Kommandos in einem Terminal werden als formatierter Text mit
   1.288 +	<code>&lt;pre&gt;</code> ausgegeben, z.B.:
   1.289 +</p>
   1.290 +<pre>
   1.291 + $ command
   1.292 +</pre>
   1.293 +<p>
   1.294 +	Zur Anzeige von Text, der kopiert und eingefügt werden kann, wie etwa Kommandoprozeduren,
   1.295 +	Quellprogrammausschnitte, Konfigurationsdateien usw. wird ebenfalls
   1.296 +	<code>&lt;pre&gt;</code> verwendet, aber mit einer  CSS-Klasse namens “script”. Beispiel:
   1.297 +</p>
   1.298 +<pre class="script">
   1.299 +&lt;pre class="script"&gt;
   1.300 +
   1.301 +code...
   1.302 +
   1.303 +&lt;/pre&gt;
   1.304 +</pre>
   1.305 +<p>
   1.306 +	<em>Hervorgehobene</em> Wörter erhalten das Merkmal <code>&lt;em&gt;</code>
   1.307 +	und interne Verknüpfungen sind stets relativ. Denken Sie auch daran, Ihr Programm
   1.308 +	mit dem <em>„validator“</em> des W3C auf Konformität zu prüfen.
   1.309 +</p>
   1.310 +
   1.311 +<h2 id="diff">Diff und patch</h2>
   1.312 +
   1.313 +<p>
   1.314 +	Die Programme <code>diff</code> und <code>patch</code> dienen der Erstellung einer Datei, die 
   1.315 +	Unterschiede zwischen zwei Dateien enthält und mit deren Hilfe die Änderungen angewendet werden	können.
   1.316 +	Diese Technik wird oft angewendet, wenn mehrere Personen an einem Projekt arbeiten, damit Änderungen
   1.317 +	an einer Originaldatei klar extrahiert werden können. Um eine <code>diff</code>-Datei zu erstellen,
   1.318 +	die mit einem Texteditor für Menschen gut lesbar ist, muss die Option <code>-u</code> angegeben werden:
   1.319 +</p>
   1.320 +<pre>
   1.321 + $ diff -u file.orig file.new &gt; file.diff
   1.322 +</pre>
   1.323 +<p>
   1.324 +Zum Anbringen der Änderungen an der Originaldatei:
   1.325 +</p>
   1.326 +<pre>
   1.327 + $ patch file.orig file.diff
   1.328 +</pre>
   1.329 +
   1.330 +<!-- End of content -->
   1.331 +</section>
   1.332 +
   1.333 +<?php include("../../lib/html/footer.html"); ?>
   1.334 +
   1.335 +</body>
   1.336 +</html>