Der Code-Basar in neuem Glanz: TYPO3 4.0: TER 2.0
Das TER (TYPO3 Extension Repository) wird oft als das Herz des
TYPO3-Projekts angesehen. Die Plattform, die Kasper Skårhøj Ende 2002
zusammen mit TYPO3 3.5.0 veröffentlichte, dient als zentraler
Austauschpunkt für die mehr als tausend Erweiterungen, die von
Mitgliedern der Community entwickelt wurden. Der umfangreiche
Dokumentationsbereich, der durch das TER bereitgestellt wird, ist der
am häufigsten besuchte Bereich auf typo3.org.
Seit der Entwicklung des TER hat sich die Community stark vergrößert
und der Erfolg von TYPO3, der sich nicht zuletzt durch den einfachen
Austausch von Erweiterungen begründet, hat die Zugriffszahlen stetig
steigen lassen. Wie sich bald herausstellte, war das Repository dem
Ansturm der 25.000 registrierten Nutzer nicht mehr gewachsen. Die in
der Datenbank gespeicherten Erweiterungen nehmen zurzeit eine Größe
von mehr als 1,7 Gigabyte ein – kein Leichtgewicht bei tausenden
von Anfragen jeden Tag. Ein neues Repository soll hier Abhilfe
schaffen und, aufbauend auf ein neues Konzept, auch neue Möglichkeiten
bieten.
Auf der T3BOARD05 (TYPO3-Snowboard-Tour 2005) entstand zusammen mit Michael Hirdes und
Karsten Dambekalns ein erster Entwurf [1] zur Restrukturierung des TER. Die
wichtigsten Anforderungen an ein neues System waren Schnelligkeit,
Ausfallsicherheit und Erweiterbarkeit. Im Juli 2005 startete die Umsetzung des Konzepts, nachdem die Karlsruher Firma punkt.de
sich bereit erklärte, die Entwicklung des TER 2.0 finanziell zu
unterstützen.
Die Implementierung des ursprünglichen Repositories entpuppte sich
durch die intensiven Datenbankzugriffe im Laufe der Zeit als schlecht
skalierbar. Um das TER ausfallsicher zu gestalten, musste außerdem eine
Lösung geschaffen werden, die es auf einfache Weise ermöglicht, das
Repository auf andere Server zu spiegeln. Das TER 2.0 speichert deshalb alle Erweiterungen als Dateien in einer
Verzeichnisstruktur (s. Abb.). Beim Entwurf dieser Lösung
stand unter anderem das ebenfalls dateibasierte Debian Package System Pate.
Extension Manager mit SOAP-Anbindung
Auch die internen Abläufe haben sich deutlich verändert. Um eine
Erweiterung in das neue Repository hochzuladen, ruft nun eine angepasste
Version des Extension-Managers eine bestimmte Funktion des TER 2.0 per SOAP-Schnittstelle auf. Der SOAP-Server nimmt die Anfrage
entgegen und speichert die Erweiterung als Datei in seinem
Verzeichnisbaum. Anschließend wird der Index aller verfügbaren
Erweiterungen (extensions.xml.gz) aktualisiert. Für das Herunterladen einer Anwendung braucht sich der Extension
Manager weder wie bisher (via POST), noch über eine SOAP-Anfrage mit
dem Hauptserver zu verbinden. Er lädt lediglich das
Extensionsverzeichnis (extensions.xml.gz) herunter und erhält damit
alle notwendigen Informationen, um eine Liste aller verfügbaren
Erweiterungen darzustellen. Hat der Nutzer sich für eine Anwendung
entschieden, lädt der Extension Manager die entsprechende .t3x-Datei
direkt aus dem Verzeichnisbaum.
Die wichtigsten Neuerungen |
Die Erweiterungen, die das neue Extension Repository bilden, basieren auf PHP5 und wurden von Grund auf neu entwickelt. Für die Übertragung der Erweiterungen vom Extension Manager zum Repository kommt das SOAP-Protokoll zum Einsatz, ältere Versionen des Extension Managers werden aber nach wie vor unterstützt. |
Das neue Repository ist deutlich schneller und erlaubt, neben der Spiegelung auf andere Server, auch das Aufsetzen eigener Repositories. |
Für die Dokumentation wird intern das DocBook-Format unterstützt. Zahlreiche Ausgabeformate wie PDF und Windows Help Files (.chm) werden in Zukunft verfügbar sein. |
Die neue SOAP-Schnittstelle wird also nur bei speziellen und eher
selten benötigten Funktionen eingesetzt, etwa um neue Erweiterungen
herunterzuladen oder Extension Keys zu registrieren. In allen anderen
Fällen wird durch den direkten Dateizugriff eine enorme Entlastung des
Servers und damit ein genereller Geschwindigkeitszuwachs erreicht.
Doppelt gespiegelt hält besser
Verzeichnisse und Dateien lassen sich durch Tools wie Rsync [2] sehr
einfach auf andere Server spiegeln. Wenn es in Zukunft mehrere Mirrors
des TER gibt, wird der Extension Manager automatisch den aktuell
schnellsten Server auswählen und die Erweiterungen von diesem
herunterladen.
Da durch das Spiegeln des TER alle dort gespeicherten Informationen
öffentlich sind, wird es in Zukunft keine privaten Erweiterungen mehr
geben können. Während der Umstellung des Repositories auf das TER 2.0
werden daher alle nicht-öffentlichen Erweiterungen gelöscht. Eine
frühzeitige Warnung wird rechtzeitig auf typo3.org veröffentlicht
werden. Wenn eine Extension, etwa während der Entwicklung, nur
innerhalb eines bestimmten Personenkreises ausgetauscht werden soll,
kann auf einfache Weise ein Repository auf dem eigenen Webserver
angelegt und dessen Adresse der Konfiguration des Extension Managers
hinzugefügt werden.
Neue Möglichkeiten
Bei der Entwicklung des TER 2.0 wurde darauf geachtet, die
serverseitig
benötigten Funktionen modular auf verschiedene Extensions
aufzuteilen (siehe Kasten). Diese Aufteilung ermöglicht es auch anderen
Entwicklern, auf einfache Art und Weise neue Funktionen beizutragen,
ohne
dass der Kern des Repositories verändert werden muss. Nachdem das TER
2.0 seine Feuertaufe bestanden hat, werden seit langem gewünschte
Funktionen verwirklicht.
Geplant ist unter anderem ein Bewertungssystem, mit dem die
Mitglieder der Community Rezensionen zu den veröffentlichten
Erweiterungen schreiben und diese bewerten können. Auch die
automatische Analyse von Erweiterungen auf bestimmte Sicherheitslücken
oder das Ausführen von Unit-Tests sind denkbare Ergänzungen.
Neues Format für Dokumente
Auch das Rendering und die Anzeige von
Dokumenten wurde in eine eigene Komponente verfrachtet. Die Erweiterung
„ter_doc“ konvertiert regelmäßig die Handbücher der neu hochgeladenen
Erweiterungen in das intern verwendete DocBook-Format. Anschließend
werden diverse Ausgabeformate durch separat installierte Erweiterungen
(„ter_doc_html“ etc.) erzeugt. Das XML-basierte DocBook ist ideal für die Speicherung von
Dokumentationen und Artikeln geeignet und eröffnet, neben der
automatischen Erzeugung zahlreicher Ausgabeformate, auch weitere
wichtige Möglichkeiten bei der Erstellung, Pflege und Übersetzung von
Dokumenten. Obwohl Handbücher langfristig gesehen von vornherein im
DocBook-Format produziert werden sollten, kann der TYPO3-Entwickler
die Dokumentation seiner Erweiterung nach wie vor als
OpenOffice-Writer-Datei
beifügen. Die Dokumente werden – sofern der Autor die empfohlene Vorlage [3] verwendet hat – problemlos konvertiert.
Aufteilung des TER 2.0 in unterschiedliche Komponenten: |
„ter“: Der Kern stellt den zentralen SOAP-Server bereit und ist die oberste Instanz bei der Vergabe von Extension Keys. |
„ter_fe“: Die Frontend-Plugins zur übersichtlichen Anzeige aller Erweiterungen und zum registrieren von Extension Keys sind hier zusammengefasst. |
„ter_doc“: Die Dokumentation wird durch diese Erweiterung verwaltet und falls nötig in das DocBook-Format umgewandelt. |
„ter_doc_html“, „ter_doc_pdf“ etc.: Jedes Ausgabeformat wird durch eine eigene Erweiterung realisiert, die sich in die Hauptkomponente „ter_doc“ einklinkt. |
„ter_i18n“: Diese geplante Erweiterung wird die Übersetzungsfunktionen enthalten. |
Die Roadmap
Die TYPO3-Version 4.0 wird bereits den neuen Extension Manager
enthalten, der den Zugriff auf das TER deutlich beschleunigen wird.
Äußerlich wird sich zunächst kaum etwas ändern, da zuerst die
Basis-Funktionen integriert werden. Anfang nächsten Jahres wird es dann
eine erweiterte Version des Extension Managers mit einigen spannenden
neuen Funktionen geben, die das Entwicklerdasein einfacher machen. Das
Extension Repository befindet sich bei Redaktionsschluss noch in der
Testphase und kann, aller Voraussicht nach, kurz vor oder nach der
Veröffentlichung von TYPO3 4.0 online gehen. Anschließend wird es
noch einige Wochen dauern, bis auch äußerlich die neuen
Möglichkeiten und Funktionen in Erscheinung treten. Wer zur weiteren Entwicklung des TER beitragen möchte, ist herzlich
eingeladen im typo3.org-Team [4] mitzuwirken. Insbesondere bei der
Weiterentwicklung des Documentation-Frameworks ist tatkräftige
Unterstützung willkommen.