LOCKSS Plugin Dokumentation (deutsch)

Plugins

Dieses Dokument dient der Information über die Funktionsweise der in LOCKSS/LuKII verwendeten Plugins. Es handelt sich um eine sinngemäße Übersetzung des englischsprachigen Originals, zu finden unter: http://lockss.stanford.edu/lockss/Plugins
Wozu dient die Plugin-Schicht?

Für einige Teile des Sammlungs- und Sicherungsprozesses werden spezifische Angaben zu den verwendeten Publikationsplattformen benötigt. Um beispielsweise einen Zeitschriftenband einzuspielen, muss der Crawler Links folgen, die auf Seiten dieses Bandes zeigen, nicht aber Seiten einsammeln, die nicht zum Band gehören. Die Regeln darüber, welche URLs als “Teil eines Bandes” angesehen werden, hängen vom Aufbau der entsprechenden Webseite und Namenskonventionen ab, die sich von Repositorium zu Repositorium bzw. Zeitschrift zu Zeitschrift unterscheiden.

Die Plugin-Schicht ermöglicht es, dass ein großer Teil des Codes generisch aufgebaut ist, während alle für eine Publikation spezifischen Details in eigene Plugins ausgelagert werden können. Dies ermöglicht es, inkrementell mehr und mehr Plattformen bzw. Zeitschriften hinzuzufügen, ohne LOCKSS im Kern verändern zu müssen. Plugins können von Herausgebern, Verlagen, den Betreibern von Repositorien, der Community oder dem LOCKSS-Team geschrieben werden.

Was wird in einem Plugin festgelegt?

Die Einstellungen eines Plugins können in drei Bereiche eingeteilt werden:

    Die Webseite des Herausgebers
    Die Struktur der dort publizierten Zeitschriften
    Den Inhalt innerhalb von Zeitschriften

Die folgenden Beispiele sind repräsentativ und umfassen nicht alle möglichen Einstellungen.

Webseiten variieren hinsichtlich:

Authentifizierung. Diese kann etwa auf Basis von IP-Adressen, HTTP-Authentifizierung oder Formularen erfolgen.

Fehlerbehandlung. Manche Systeme verhalten sich so, dass sie anstelle eines HTTP-Fehlers bei nicht aufzufindenden Seiten einen HTTP-Erfolg anzeigen und eine nur menschenlesbare Fehlermeldung liefern (also dass die Seite nicht gefunden wurde - Fehler 404). Diese Seiten müssen erkannt und als Fehler, nicht als Inhaltsseite behandelt werden.

Crawl Limits. Es gibt Webseiten, die entweder Zeit- oder Volumenbegrenzungen für Crawler wie z.B. LOCKSS-Boxen vorgeben.

Die Struktur von auf Webseiten publizierten Zeitschriften kann sich u.a. im Hinblick auf folgende Charakteristika unterscheiden:

Crawl Zeitplan. Zeitschriften werden in unterschiedlichen Rhythmen herausgegeben. Das System muss wissen, wann es neue Inhalte einsammeln und bereits archivierte Inhalte überprüfen soll.

Crawl Regeln. Um einen Band oder eine Ausgabe einer Zeitschrift einzusammeln, benötigt das System einen Einstiegspunkt (eine oder mehrere Start-URLs) und Regeln, die festlegen welche verknüpften URLs als Teil des Bandes bzw. der Ausgabe anzusehen sind.

Konfigurationsinformation. Jede Publikationsplattform muss über das Userinterface die nötigen Informationen abfragen, um Inhalte (z.B. Zeitschriften) auf der Webseite auseinanderzuhalten. Für viele Systeme bestehen diese Informationen aus der Start-URL und dem Namen mit Bandangabe der einzusammelnden Zeitschrift. Andere Publikationsformate können hingegen komplexere Information erfordern.

Variierende Inhalte innerhalb von Zeitschriften haben Auswirkungen auf:

Filterregeln. Eine LOCKSS-Box überprüft regelmäßig die Inhalte die sie aufbewahrt um sicherzustellen, dass diese vollständig und unversehrt sind. Dies geschieht indem gleiche Inhalte in den anderen Boxen miteinander verglichen werden. Allerdings können viele der gespeicherten Seiten Bereiche enthalten die nicht zum Kerninhalt gehören und einige dieser Bereiche - etwa Werbung oder personalisierte Einstellungen - sind nicht bei jeder Abfrage dieselben. Da jede Box eigenständig Inhalte sammelt, können verschiedene Boxen unterschiedliche Versionen einer Seite gespeichert haben, obwohl die Kerninhalte übereinstimmen. Zeitschrift- oder verlagsspezifische Regeln definieren für das System, welche Teile einer Seite sich inhaltlich unterscheiden dürfen.

Wie ist die Plugin-Schicht aufgebaut?

LOCKSS verfügt über ein Java-Framework um Plugin-Entwickler zu unterstützen. Auf unterster Ebene besteht dieses aus einigen Interfaces, die von jedem Plugin implementiert werden müssen. Immer wenn spezielle Einstellungen vom System benötigt werden könnten, wird die implementierende Methode eines dieser Interfaces aufgerufen. Die Javadoc-Dokumentation der aktuellen Plugin-API[1] ist online verfügbar und wird nächtlich aktualisiert.

Die meisten Plugins müssen allerdings nur selten spezielle Aktionen durchführen. Daher gibt es Basis-Klassen, die o.g. Interface implementieren und welche standardisiertes Verhalten für die meisten Methoden bereitstellen. Die Dokumentation für diese Basis-Plugin-API[2] ist ebenfalls online verfügbar.
Wie wird ein Plugin geschrieben und getestet?

Es gibt ein Werkzeug[3], das Entwickler beim Schreiben und Testen von Plugins unterstützt. Die meisten Plugins werden mit Hilfe dieses Werkzeugs erstellt. Etwas kompliziertere Plugins erfordern das Erweitern o.g. Basisklassen und die Implementierung bzw. das Überschreiben jener Methoden, deren Standardverhalten unerwünscht ist. Üblicherweise handelt es sich dabei um einige wenige Klassen mit jeweils vier oder fünf Methoden.

Die Erweiterung der Basisklassen ist jedoch keine Voraussetzung. Wenn die Webseite bzw. der zu sammelnde Inhalt sich von dem, was dem LOCKSS-Team bei der Implementation vorschwebte, deutlich unterscheidet, kann der Entwickler eines Plugins einige oder alle Plugin-Interfaces völlig nach eigenem Ermessen implementieren. Darüberhinaus sollen einige generische Plugins für die weitverbreitetsten Publikationsplattformen entstehen[4]. Ein Plugin-”Entwickler” soll diese dann durch das Beantworten einer Reihe von Fragen konfigurieren, anstatt Java-Code zu schreiben.

[1] http://www.lockss.org/lockssdoc/gamma/daemon/org/lockss/plugin/package-summary.html
[2] http://www.lockss.org/lockssdoc/gamma/daemon/org/lockss/plugin/base/package-summary.html
[3] http://lockss.stanford.edu/lockss/Plugin_Tool
[4] Im Rahmen des LuKII-Projekts ist ein Plugin für die in Deutschland weit verbreitete Repository-Software OPUS entstanden [verlinken...]