Suche
Bosanski Dansk Deutsch English Español Français Indonesian Italiano Português Русский 中文 日本語

Gemeinschaftliche Verwaltung

„KISS“ und Standards respektieren

„Keep it small and simple (KISS)“: befolgen Sie die besten Standards, entwerfen und schreiben Sie sorgfältig Dokumentation von hoher Qualität, erzeugen Sie ein stabiles und robustes System und halten Sie das Wurzeldateisystem rootfs in dem Direktstatrt-ISO-Abbild so klein, dass es auf Rechnern mit mindestens 128 MiB Arbeitsspeicher geladen werden kann. Dennoch ist es möglich GTK+2, Dialog, Kommandoprozeduren oder PHP-Werkzeuge in die Distribution zu übernehmen. Die Idee ist, keine Doppelarbeit zu leisten und nicht schmalspurig zu denken...

Entwicklungstank - Rechner für die Entwicklung und die Internetpräsenz

Jeder Mitwirkende kann sich über einen sicheren Zugang an dem Projekt-Rechner anmelden, kann dort Plattenplatz belegen, ein Verzeichnis Public anlegen und alle Entwicklerwerkzeuge nutzen. Entwickler können Pakete erzeugen und Verwalter der Spiegel-Depots können diese synchronisieren. Auf diesem Rechner befindet sich auch der Kompilierungsautomat, die Dateien zum Laden über das Netzwerk und „SliTaz Pro“: tank.slitaz.org

Anleitungen zum Erstellen von Paketen auf diesem Rechner finden sich im Kochbuch: Entwicklungstank.

Mercurial-Depots

SliTaz-Mercurial- (oder Hg-) Depots können von jedem unter dem URL http://hg.slitaz.org/ angesehen und dupliziert werden. Benutzer mit Schreibrecht können über die Adresse repos.slitaz.org direkt auf die Depots zugreifen. Beim Schreiben müssen ein Benutzername und ein Kennwort angegeben werden. Mercurial verwendet Python. Es kann auf SliTaz mit tazpkg get-install mercurial installiert werden.

~/.hgrc

Vor dem Transfer des ersten Beitrags auf den Entwicklungsrechner (mit hg push) muss eine korrekte Konfigurationsdatei ~/.hgrc erstellt werden. Darin sollte Ihre E-Mail-Adresse und Ihr richtiger Name enthalten sein. Hier ein Beispiel:

[ui]
username = Vorname Nachname <name@example.de>

Duplizieren, Ändern, Änderungen lokal übernehmen und Änderungen transferieren

Ein Depot, z.B. der Wok wok, wird wie folgt lokal dupliziert:

 $ hg clone http://repos.slitaz.org/wok

Jetzt muss das Verzeichnis wok als Arbeitsverzeichnis eingestellt werden, sonst funktionieren die hg-Kommandos nicht. Zum Anzeigen aller oder nur der letzten Änderungen:

 $ hg log
 $ hg head

Nach dem Hinzufügen oder Ändern von einer oder auch mehrerer Dateien den Änderungsstatus anzeigen und die Änderungen lokal übernehmen:

 $ hg add
 $ hg status
 $ hg commit -m "kurze beschreibung der vorgenommenen änderungen"
 $ hg log

Mit hg rollback können Sie die letzte Änderung rückgängig machen. Bevor Sie die Änderungen in das Depot transferieren, sollten Sie zwischenzeitliche Änderungen anderer übernehmen:

 $ hg pull
 $ hg push

Das ist schon alles; Ihre Änderungen, Quellprogramme oder Korrekturen sind jetzt im Depot.

Ein lokal dupliziertes Depot aktualisieren

Ein lokal dupliziertes Depot kann aus dem SliTaz-Depot aktualisiert werden mit:

 $ hg pull -u

Weitere nützliche Kommandos

Weitere hg-Kommandos:

Grafische Oberflächen - reines C/GTK, Yad, Vala/Genie und CGI

Es gibt viele Möglichkeiten, mit „open source“-Produkten eine Benutzeroberfläche zu erzeugen. Bis zur Version 3.0 von SliTaz haben wir hauptsächlich Gtkdialog verwendet, um gefällige und komplexe Oberflächen in GTK zu erstellen, wobei die Anweisungen ausgeführt wurden ohne übersetzt werden zu müssen. Aber gtkdialog wird nicht mehr gewartet und es fehlen viele neuere GTK-Funktionalitäten. Daher sind wir bei einfachen Grafikfenstern auf Yad umgestiegen. Bei der Verwaltung des Systems und der Pakete sowie bei den Konfigurationswerkzeugen sind wir auf TazPanel umgestiegen, eine Web-Oberfläche mit CGI-Nutzung, die mit xHTML 5 und CSS 3 programmiert wird.

Yad ist sehr einfach, kann aber keine komplexen Oberflächen erzeugen: schon zwei oder drei Einträge mit Marken und einige Schaltflächen sind nicht möglich. Daher mussten wir eine andere Möglichkeit suchen. Der Vorteil eines Interpreters ist, dass die Anweisungen nicht übersetzt werden müssen sondern zur Laufzeit verarbeitet werden, was die Anwendung allerdings verlangsamt. Programme in C zu schreiben ist komplex und daran werden sich weniger Mitwirkende beteiligen, da Kommandoprozeduren leichter zu verstehen sind. Daher lautet die Richtlinie jetzt: unsere Kommandoprozeduren beibehalten und verbessern und Benutzeroberflächen dafür in GTK oder CGI zur Verfügung stellen.

Es gibt viele neue Programmiersprachen, die GTK verwenden, z.B. Genie, Vala oder GTKaml. Beachten Sie aber, dass sie nicht so verbreitet sind wie C und GTK und nicht wirklich leichter zu erlernen und zu nutzen sind. Für einfache Grafikfenster können Sie Kommandoprozeduren benutzen. Sie können auch Vala benutzen, aber reines GTK braucht für ein einzelnes Fenster auch nur 14 Anweisungszeilen:

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
	GtkWidget *window;

	gtk_init(&argc, &argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect (G_OBJECT (window), "destroy",
			G_CALLBACK (gtk_main_quit), NULL);

	gtk_widget_show(window);
	gtk_main();
	return 0;
}

Wenn Sie sich nicht sicher sind, welche Programmiersprache Sie verwenden sollen, können Sie Ihre Wahl bei der „Mailing“-Liste zur Diskussion stellen. Wenn Sie nur eine einfache grafische Oberfläche brauchen, können Sie sich tazbox im Depot slitaz-tools ansehen; das Paket enthält kleine Programme für die grafische Oberfläche wie z.B. ein Abmeldefenster. TazWeb ist das erste Teilprojekt von SliTaz, das in reinem GTK geschrieben wurde. Sie können es ansehen um zu lernen, wie man die Funktion system() in einer grafischen Oberfläche verwenden kann. So verwendet TazWeb beispielsweise wget zum Dateitransfer und sed um Lesezeichen hinzuzufügen.

Yad-Anweisungsprozeduren sollten die TazYad-Richtlinien befolgen: README und Programmierbeispiele

Implementierung von iconv()

SliTaz verwendet iconv() aus der GNU glibc - alle Pakete, die libiconv anbieten, müssen die Bibliothek aus glibc-locale verwenden. Daher gibt es kein Paket libiconv (1.2 MB) mehr in SliTaz.

SliTaz-Pakete erzeugen

Für die offizielle Paketerzeugung werden die Kochwerkzeuge verwendet. Diese sind in dem Paket cookutils enthalten, das in jedem SliTaz-System installiert ist, wie auch das Kochwerkzeuge-Handbuch für die Verwendung der Kochwerkzeuge. Damit werden Pakete erzeugt, die von Tazpkg verwaltet werden können.

Die Pakete werden bei SliTaz automatisch von „Cooker“ aus einem Quellpaket und einem Rezep im Wok erzeugt. Im Kochbuch ist das Format der Rezepte beschrieben. Die Beschreibung der Kochwerkzeuge und der Rezepte sollten Sie gelesen haben, bevor Sie mit der Paketerzeugung beginnen.

Bei der Auswahl eines Paketes für SliTaz sollten nur solche in Betracht kommen, die nützlich sind und funktionieren. Davon sollten Sie das kleinste verfügbare auswählen. Es sollten nicht mehrere Pakete mit gleicher Funktionalität erstellt werden. Die aktuelle Auswahl der Pakete ist aber nicht festgeschrieben. Wenn es eine Alternative zu einem Paket gibt, die noch kleiner ist, mehr Funktionen enthält oder mit ein paar KB mehr attraktiver ist, kann die Übernahme bei der „Mailing“-Liste diskutiert werden. Besondere Anforderungen werden an Pakete gestellt, die in Direktstart-ISO-Abbilder übernommen werden sollen. Bei diesen sollten Symbolinformationen aus den Objektprogrammen sowie unnötige Abhängigkeiten und Übersetzeroptionen entfernt werden. Im Allgemeinen werden solche Pakete vor der Freigabe ebenfalls bei der „Mailing“-Liste zur Diskussion gestellt.

Bevor Sie beginnen, Pakete für SliTaz zu übersetzen und erzeugen, stellen Sie zur Vermeidung von Doppelarbeit sicher, dass es etwas entsprechendes nicht schon im inoffiziellen Wok gibt. Die Mitglieder der „Mailing“-Liste geben gerne Hinweise und das Kochwerkzeuge-Handbuch sollte für Anfänger hilfreich sein.

Benennung von Paketen

In den meisten Fällen stimmt der Name des Paketes mit dem Namen des Quellpaketes überein. Ausnahmen sind Python, Perl, PHP, Ruby und Lua-Module. Beispielsweise heisst das Paket, das ein „Kid template system“, in Python und XML geschrieben, enthält: python-kid.

Verwaltung der Internetpräsenz

Die Internetpräsenz wird über das Mercurial-Depot website administriert. Dieses kann dupliziert werden mit:

 $ hg clone http://hg.slitaz.org/website
  oder wenn Sie die entsprechende Berechtigung haben:
 $ hg clone http://repos.slitaz.org/website

xHTML-Programmierstil

Die Seiten und verschiedene Handbücher sind in xHTML 1.0 transitional programmiert. Die Überschrift der Stufe 1 wird nur einmal (ganz oben) verwendet, Stufe 2 ist der Titel des Dokuments und die Stufen 3 und 4 werden für weitere Abstufungen der Überschriften benutzt. Wenn eine Liste statt „smart anchors“ verwendet wird, beginnt sie oben, direkt unterhalb einer Überschrift der Stufe 2. Absätze werden in die Markierungen <p></p> eingeschlossen. Für Einrückungen werden Tabulatoren verwendet. Dies ist in der Semantik begründet und sie benötigen weniger Speicherplatz. Zur Darstellung von Kommandonamen oder ähnlichem innerhalb eines Absatzes wird vorzugsweise <code> verwendet. Beispiele für die Anwendung von Kommandos in einem Terminal werden als formatierter Text mit <pre> ausgegeben, z.B.:

 $ command

Zur Anzeige von Text, der kopiert und eingefügt werden kann, wie etwa Kommandoprozeduren, Quellprogrammausschnitte, Konfigurationsdateien usw. wird ebenfalls <pre> verwendet, aber mit einer CSS-Klasse namens “script”. Beispiel:

<pre class="script">

code...

</pre>

Hervorgehobene Wörter erhalten das Merkmal <em> und interne Verknüpfungen sind stets relativ. Denken Sie auch daran, Ihr Programm mit dem „validator“ des W3C auf Konformität zu prüfen.

Diff und patch

Die Programme diff und patch dienen der Erstellung einer Datei, die Unterschiede zwischen zwei Dateien enthält und mit deren Hilfe die Änderungen angewendet werden können. Diese Technik wird oft angewendet, wenn mehrere Personen an einem Projekt arbeiten, damit Änderungen an einer Originaldatei klar extrahiert werden können. Um eine diff-Datei zu erstellen, die mit einem Texteditor für Menschen gut lesbar ist, muss die Option -u angegeben werden:

 $ diff -u file.orig file.new > file.diff

Zum Anbringen der Änderungen an der Originaldatei:

 $ patch file.orig file.diff