Technik und Pflege der Debian-Webseiten
Debian Day auf der FrOSCon 2006
Wer ist Joey überhaupt?
- Entwickler von Freier Software
- Aktiver Debian-Entwickler
- Förderer Freier Software
- Bei Debian seit '96
- Arbeitet in vielen Teams mit
Gliederung des Vortrags
- Features
- Ein paar Zahlen
- Technik
- Details
Debian Webserver
- Verwaltet von einem Team
- Übersetzungen vieler Seiten
- Automatische Auswahl der Sprache
- Offline-Arbeit möglich
- Einheitliches Erscheinungsbild
- Dokumentation einbinden
- Aufgeteilte Zuständigkeiten
- Spiegel-Server (Mirrors)
Ein paar Zahlen
- Mehr als 170 Personen direkt beteiligt
- Mehr als 3250 englische Seiten
- Insgesamt 285 MB reiner Quellcode
- Davon ca. 1300 DSAs, 450 DWN und 200 Pressemitteilungen
- Mehr als 35400 Seiten insgesamt
- Davon ca. 8500 Dokumentation
- Insgesamt 32 unterstützte Sprachen
- 9 Sprachen haben mehr als 20 % übersetzt
- Französisch: 97.1 %, Deutsch: 89.8 %, Schwedisch: 78.4 %
- Nur 2 Sprachen mit 30 oder mehr veralteten Übersetzungen
(semi-automatisches Löschen veralteter Dateien) - Details
Zuständigkeiten
- Partitionen mit separaten Betreuern
- Webmaster: Ansprechpartner
- Webteam: Texte, Fehler, Korrekturen
- Übersetzer: Übersetzungen
- /ports/arch: Portierer
- /News/weekly: DWN-Team
- /News: Presse-Team
- /security: Sicherheits-Team
- /Bugs: Bugtracking, allgemein
- /vote: Secretary
- /CD: CD-Team
- /consultants: Firmen-Kontakt
- /events: Veranstaltungsteam, allgemein
Features im Detail
- Ähnliches Erscheinungsbild der Seiten
- Automatische Auswahl der passenden Sprache
- Zusätzliche Anzeige der Übersetzungen
- Einbinden von Neuigkeiten und Security-Updates
- Listen von Veranstaltungen, Neuigkeiten, Updates
- Synchronisieren von Übersetzungen
- Unterstützung von Übersetzern
- Schreibzugriff für Entwickler und Externe
Erscheinungsbild
Technik allgemein
- Archiv der Seiten im CVS-Repository
- Daher Geschichte und Versionierung
- Nebenläufiges Arbeiten möglich
- Synchronisieren von Übersetzungen
- Komplexes Build-System auf www-master
- Trennung von Archiv, www-master, www und Spiegel
- Koordination über Mailing-Liste
Informationsfluß
Build-System
- Läuft regelmäßig auf speziellem Rechner
- Erneuert nur zu ändernde Seiten
- Intensive Nutzung von Makefiles und Abhängigkeiten
- Kompletter Lauf dauert Stunden
- Aufgeteilt in mehrere Schritte
- Update, Web-Build, Doku-Build, Stats, Sync, Monitor
- Update ohne jegliche Interaktionen
- Teils automatische Auswertung von Logdateien
- Änderungen werden automatisch nach endlicher Zeit sichtbar
Website Meta Language
- Applikationsserver ist nicht möglich
- Datei-basiert, automatisierbar, SCM
- WML trennt Content von Design
- Design nur einmal ordentlich definieren
- Neue Seiten hinzufügen ist sehr einfach
- Bestehende Seiten zu pflegen ebenfalls
- Bonus: ePerl bietet unendliche Möglichkeiten
- Dadurch ist das Einbinden von Listen möglich
- Einbinden von Übersetzungen
- Nutzung von Gettext in generierten Passagen
- Umstelung auf WML ca. 1.7.98 durch Jay Treacy
WML-Beispiel 1
<define-tag pagetitle>Debian IRC Network moves to OFTC</define-tag> <define-tag release_date>2006-06-04</define-tag> #use wml::debian::news # $Id: index.wml,v 1.6 2006-09-14 15:03:02 joey Exp $ <p>Starting with today the Debian IRC host alias irc.debian.org directs to irc.oftc.net maintained by the Open and Free Technology Community (OFTC). An increasing number of online discussions has been taken place in this network already despite irc.debian.org pointing to a different network. In recognition of that, Debian has decided to move the irc.debian.org alias over.</p>The Debian project wishes to thank <a href="http://freenode.net/">\ Freenode</a>, the well-known Free Software friendly IRC network that has been providing the IRC service for Debian for the past years.</p> [..]
WML-Beispiel 2
#use wml::debian::template title="Latest News" NOHEADER="true"
#use wml::debian::recent_list
<h1><a href="/">Latest News</a></h1>
<p><:= get_recent_list ('$(CUR_YEAR)', '0', '$(ENGLISHDIR)/News', '',
'\d+\w*') :>
<hrline>
[..]
<p>News items from previous years can be viewed using the following pages:
<ul>
<:
for ($year = $(CUR_YEAR) - 1; $year >= 1997; $year --)
{
print qq' <li>Past news from <a href="$year/">$year</a>\n'
if -d "$(ENGLISHDIR)/News/$year";
}
:>
</ul>
Anzeige von Übersetzungen
Content Negotiation
- Eine von wenigen Seiten mit funktionierendem C/N
- Setzt konfigurierten Browser voraus
- Feature in Mozilla, Opera, Konqueror, Lynx, w3m, Safari, IE etc.
- Browser verlangt bestimmte Sprachen
- Server liefert automatisch passende Datei
- Nutzer muß die Sprache nicht dauernd umstellen
- Nutzer verliert die Sprache nicht
- Details
Verwaltung von Übersetzungen
- Dank CVS hat jede Datei eine Version
- Übersetzer speichern Version des Originals
- Dadurch lassen sich veraltete Seiten finden
- Warnung der Nutzer vor veralteten Dateien
- Eigenes Verzeichnis für jede Sprache
- Aggregation nach Build-Prozeß
- Kontrolle der Aktualität mit spezieller Vorlage
-
#use wml::debian::translation-check translation="1.2" - Details
Zusätzliche Dokumentation
- Debian Documentation Project (DDP)
- Dokumenation in SGML
- Teilweise in mehrere Sprachen übersetzt
- Verschiedene Formate können erzeugt werden
- Einbinden in den Webserver inkl. Übersetzungen
- Eigenes CVS-Archiv
- Erfordert DocBook/SGML-Tools statt WML
Push-Spiegeln
- Server bestimmt Zeitpunkt für Synchronisation
- Server benachrichtig Client und löst Spiegeln aus
- Signalling wird mit SSH implementiert
- Server kann nur genau eine Aktion auslösen
- Client antwortet mit
rsync-Aufruf - So bleibt das gesamte Netzwerk aktuell
- Signalling erfolgt am Ende des Build-Laufs
- Details
Zusammenfassung des Vortrags
- Features des Debian-Webservers
- Fakten zu www.debian.org
- Informationsfluß bei Pflege
- Aufteilung der Website
- Technik hinter www.debian.org
- Kurzer Einblick in WML
- Content-Negotiation
- Push-Mirroring