Gemeinschaftliche Verwaltung
- „KISS“ und Standards respektieren.
- Rechner für die Entwicklung und die Internetpräsenz.
- Mercurial-Depots.
- Grafische Oberflächen in GTK und CGI
- Implementierung von iconv().
- SliTaz-Pakete erzeugen.
- Verwaltung der Internetpräsenz.
„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:
hg help
: Zeigt alle möglichen Kommandos.hg rollback
: Die letzte Aktion (commit, pull, push) rückgängig machen.hg log <package>
: Das Änderungsprotokoll eines Paketes zeigen.hg head
: Die letzte Änderung anzeigen.
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