Federlesen #9: Social-Software bei der Apache Software Foundation

Know-how  –  2 Kommentare

Das Web wird zunehmend sozialer und mobiler. Nicht erst seit Web 2.0 spielen Kollaborationsanwendungen wie Wikis oder Blogs eine große Rolle. Mit etablierten Techniken wie JSPWiki, Roller oder Newcomern wie Abdera, Rave, Shinding, Wookie und Wave leistet auch die Apache-Community ihren Beitrag.

Das wichtigste Kommunikationsmittel der Apache Software Foundation (ASF) sind Mailinglisten. Da Mails textbasiert sind, lassen sie sich unabhängig vom Server oder Client-Produkt gut archivieren und durchsuchen, was für die Apache-Community nach wie vor ein zwingendes Argument ist.

Zusätzlich kamen bei der Dokumentation der Apache-Projekte bislang entweder das Wiki-System moin-moin oder Confluence statt des eigenen Produkts JSPWiki zum Einsatz. Den Umstand verteidigt das Infrastruktur-Team selbstironisch damit, dass diese Produkte zwar nicht von Apache sind, aber doch viele Apache-Produkte enthalten ("we are in fact 'eating our own dog food' only baked into a pie!"). Das könnte sich nun ändern, da JSPWiki kurz vor der Ernennung zum Top-Level-Projekt steht – dazu später mehr.

Für alle Apache-Projekte gibt es ein zentrales Blog-System, das auf dem Blog-Server Apache Roller beruht. Hier geben ASF und Projekte ihre Pressemitteilungen oder Produktneuheiten bekannt. Leider ist seine Installation, obwohl technisch möglich, nicht an den zentrale Apache-LDAP-Server angebunden. Dadurch ist die Nutzung des Systems auf wenige Blog-Schreiber aus den Apache-Projekten eingeschränkt, da der dafür benötigte Zugang separat zu beantragen ist.

Roller existiert seit 10 Jahren und wurde ursprünglich von Dave Johnson für einen O'Reilly-Artikel geschrieben. Seit 2011 ist die Technik ein eigenes Top-Level-Projekt. Trotz kleiner Committer-Anzahl wird das Projekt weiterentwickelt und bei IBM und Oracle als Blog-System eingesetzt. Im Rahmen von Googles Summer of Code 2011 entstand eine Erweiterung für mobile Geräte, die mit der kommenden Version 5.1 verfügbar sein soll.

Für sein lesenswertes Buch "RSS and Atom in Action" hatte Johnson einen Blogapps-Server entwickelt, der JSPWiki und Roller miteinanderkombiniert. Ihn hat er später noch um die inzwischen eingeschlafenen OpenSocial-Container SocialSite und OpenSoSuite ergänzt, die jedochseit drei Jahren nicht mehr weiterentwickelt werden. Für ältere Roller-Versionen existieren Erweiterungen oder alternativen Themes, die noch nicht für die aktuelle Version verfügbar sind.

Eine gute und schnelle Einstiegsmöglichkeit für die Verwendung von Roller bietet BitNami mit einem aus MySQL und Tomcat bestehenden Installationspaket an. Alternativ stellt es der Dienstleister als fertige Images für VMware oder EC2 kostenlos bereit. Wer Roller selbst mit Tomcat installieren möchte, nimmt den Datenbanktreiber und die Datei roller-custom.properties mit den Datenbankverbindungseinstellungen in den Klassenpfad auf. Nach der Installation der roller.war-Datei steht der Blog-Server unter der URL http://localhost:8080/roller zur Verfügung.

Früh wurden Blog-Einträge als Feeds zu Verfügung gestellt. Um diese in einer Programmiersprache weiterzuverarbeiten, gibt es für die verbreiteten Feed-Formate RSS oder Atom spezialisierte Bibliotheken. Für die Feed-Bearbeitung mit Java ist die die Bibliothek Apache Abdera weit verbreitet. Vor über fünf Jahren hatte IBM sie für das Atom-Format und das Atom Publishing Protocol (APP) implementiert und an Apache zur Weiterentwicklung übergeben. Für dieses Jahr ist neben der Bugfix-Version 1.2 ein Major-Update 2.0 mit einem Redesign und neuen Funktionen geplant. Da bei Abdera 2 die Pakete nach org.apache.abdera2.* umbenannt wurden, ist Altcode anzupassen.

Um beispielsweise die Titel der Atom-Feed-Einträge des Apache-Blogs anzuzeigen, muss man dem Abdera-Parser nur die passende URL übergeben und bei den Einträgen den Titel ausgeben.

Abdera abdera = new Abdera();
Parser parser = abdera.getParser();
URL url = new URL(
"http://blogs.apache.org/foundation/feed/entries/atom");
Document<Feed> doc = parser.parse(url.openStream(), url.toString());
Feed feed = doc.getRoot();
System.out.println(feed.getTitle());
for (Entry entry : feed.getEntries()) {
System.out.println("\t" + entry.getTitle());
}

Neben einen Konsumenten-Client kann Abdera einen APP-Produzenten-Server realisieren.

Das seit 2007 im Apache-Incubator befindliche JSPWiki hat eine ebenso lange Geschichte wie Roller. Es basiert auf JavaServer Pages (JSP) und entstand 2001. Nach einer langen Incubator-Zeit wird es bald als Top-Level-Projekt verfügbar sein. Die derzeit verfügbare JSPWiki-Version 2.8.5 wird bis auf die Umbenennung der Paketnamen identisch mit der ersten offiziellen Apache-Version 3.0 sein.

Die Installation von JSPWiki geht einfach durch das Deployment der Datei JSPWiki.war in einen Webcontainer. Weitere Konfigurationseinstellungen werden nach dem Aufruf von http://localhost:8080/JSPWiki/Install.jsp durch den Installationswizard abgefragt . Wichtig ist, sich den dort angezeigten Administratorzugang zu notieren und unter Windows doppelte Backslashes zu verwenden, zum Beispiel jspwiki.fileSystemProvider.pageDir = C:\\Data\\jspwiki. Hierhin kann man die fertigen Startseiten von JSPWiki-corepages_de.zip entpacken. Alle weiteren Einstellungen lassen sich entweder über die Oberfläche, wie die Auswahl eines Themes, oder in der Konfigurationsdatei WEB-INF/jspwiki.properties anlegen. Dort kann der Entwickler beispielsweise die Benutzer- und Gruppenverwaltung von den XML-Dateien groupdatabase.xml und userdatabase.xml über die Property

jspwiki.userdatabase = org.apache.wiki.auth.user.JDBCUserDatabase

auf eine Datenbank umstellen. Alternativ gibt es für frühere Versionen ein LDAP-Plug-in für die Benutzerverwaltung. Das Plug-in ist manuell zu installieren und seine Paketnamen in der Property jspwiki.plugin.searchPath zu registrieren. Will man Wiki-Einträge als RSS-Feed zur Verfügung stellen, setzt man dazu die Property jspwiki.rss.generate auf "true".

Da JSPWiki einfach aufgebaut ist und alle Informationen als Textdateien vorliegen, lässt sich ein Wiki mit seiner Grundstruktur und Einstellungen ohne viel Aufwand duplizieren oder ändern. JSPWiki wird nicht nur als eigenständige Software für Wikis eingesetzt, sondern ist zum Beispiel in der Portal-Software von Liferay als Wiki-System integriert.

Trotz einer großen Nutzerzahl haben die Entwickleraktivitäten, trotz oder wegen der langen Incubator-Zeit, erst durch das erste Apache-Release wieder zugenommen. Deswegen wird es sicherlich noch einige Zeit dauern, bis die für ältere Versionen existierenden Plug-ins für die aktuelle verfügbar sind. Trotzdem war der Schritt zu Apache für die Zukunftsfähigkeit von JSPWiki wichtig, da nur so eine stetige Weiterentwicklung gewährleistet war. Andererseits war der Schritt von einem Chefentwickler als "gütigen Diktator" hin zu einer basisdemokratischen Entwicklung auch mit einem längeren Lernprozess verbunden.