Thursday, August 12, 2010

Good-bye Google Wave - Hello Etherpad

Am vierten August verkündete Goole im offiziellen Google Wave Blog, dass das Projekt eingestellt wird. Die Server werden zwar bis Jahresende weiter laufen und die Quelltexte sollen — wie vor über einem Jahr versprochen — veröffentlicht werden, allerdings wird das Projekt nicht weiter entwickelt.

Teile der bisherigen Entwicklung sollen weiterhin in anderen Google-Projekten Anwendung finden, Konzepte und Techniken hinter Google Wave sind in andere Google-Produkte wie Google Docs oder Google Mail eingeflossen.

Bereits in unserer Artikelserie zu Google Wave zogen Jochen Jörg und ich folgendes Fazit:

„Evtl. hätte Wave weniger komplex und auf das Wesentliche konzentriert starten sollen. Im Moment macht Wave, obwohl es schon seit einem Jahr in der Preview verfügbar ist, noch einen unfertigen Eindruck. [...] Die Zukunft wird zeigen, ob Google Wave ein Experiment aus den Google Labs bleiben wird oder ob es sich als eine Art Schweizer Taschenmesser für die Zusammenarbeit und Kommunikation in der Cloud etabliert.“

Es gibt „weniger komplexe“ Alternativen zu Google Wave. Neben Stand-Alone-Anwendungen wie SubEthaEdit von den CodingMonkeys gibt es Etherpad.

AppJet war ein Web 2.0-Startup, das 2007 u. a. von zwei Google-Mitarbeitern gegründet wurde. Der Fokus des Unternehmens war Etherpad. Etherpad ist ein web-basierter Echtzeit-Editor für kollaboratives Schreiben. Es bietet also das gleiche Kernfeature wie Google Wave, konzentriert sich aber auf das Wesentliche. AppJet wurde von Google gekauft und die Etherpad-Website wurde vorübergehend geschlossen. Allerdings ist der Quellcode von Etherpad komplett offen gelegt.

Auf einem Linux-Server mit Ubuntu ist es sehr einfach, Etherpad zu installieren.

Es gibt ein eigenes Repository für Etherpad. Dies muss man dem Paket-Manager APT bekannt machen. Dazu trägt man folgende Zeilen in die /etc/apt/sources.list-Datei ein:

deb http://etherpad.org/apt all .
deb http://ftp.de.debian.org/debian sid main non-free

Damit diese Repository verwendet wird, muss man updaten:
$ apt-get update

Dann lässt sich Etherpad einfach installieren:
$ apt-get install etherpad

Sämtliche Abhängigkeiten wie MySQL, Java und Scala sollten automatisch durch den Paketmanager aufgelöst werden. Ein dialog-gestützter Installer führt dann durch die Konfiguration. Man sollte sich im einfachsten Fall eine eigene Sub-Domain für Etherpad reservieren und diese in der Konfiguration bekanntgeben. In diesem Beispiel ist die Domain pad.mydomain.de.

Normalerweise wird dann Etherpad über das Start-Script unter /etc/init.d/etherpad gestartet. Da dieses Startscript aber keine Fehler in der Konsole meldet, sollten die ersten Startversuche über das gesprächigere Start-Script run-local.sh erfolgen. Eventuell muss - je nach Server - im Startup-Script vorher die Variable MXRAM=”1G” angepasst werden. 512M sollten für Etherpad ausreichend sein:

/usr/share/etherpad/etherpad $ ./bin/run-local.sh
Using config file: ./etc/etherpad.local.properties
Using mysql database type.
Establishing mysql connection (this may take a minute)...
mysql connection established.
HTTP server listening on http://localhost:9000/

Ob wirklich ein Etherpad auf Port 9000 lauscht, lässt sich leicht testen:
$ lynx localhost:9000

Falls Etherpad nicht funktioniert, kann man es über eine Properties-Datei konfigurieren:

/etc/etherpad/etherpad.local.properties

Natürlich möchte man in der Regel nicht, dass Etherpad im Internet über den Port 9000 erreichbar ist. Darum muss man den Apache entsprechend konfigurieren, dass ein Request auf dem Standardport 80 an Etherpad auf dem Port 9000 weitergeleitet wird. Dies geht am einfachsten über das Apache-Modul mod_proxy.

$ a2enmod proxy_http
Enabling proxy as a dependency
Module proxy installed; run /etc/init.d/apache2 force-reload to enable.
Module proxy_http installed; run /etc/init.d/apache2 force-reload to enable.

Ein virtueller Host kann nun über den Proxy an Etherpad weitergeleitet werden:

NameVirtualHost *
<VirtualHost *>
ServerName pad.mydomain.de
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/
ProxyPreserveHost on
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>

Jetzt sollte sich Etherpad auch über das Internet mit den Browser aufrufen lassen.