Simon Koelsch coding software, using gadgets

4Jun/09Off

Google Wave – Ein erster Eindruck

Am 28.5. wurde Google Wave das erstemal auf der Developers Konferenz Google IO in San Francisco vorgestellt.
Die Praesentation[1] dauerte 1.20h und ist ein schoener erster Einstieg in die Ideen, welche hinter diesem Projekt stecken.

Hier zeigt Lars Rasmussen mit seinem Team schoen ueber mehrere Rechner verteilt wie einfach es ist, mit den Google eigenen Wave Applikationen zu Chatten, Teilnehmer zum Chat hinzuzufuegen, private Gespraeche zu fuehren, die History zurueckzuspielen und Dokumente zu tauschen. Bildergalerien werden einfach per "Drag and Drop" in die Anwendung gezogen worauf hin fast sofort eine Vorschau mit Thumbnails entsteht, obwohl die Bilder noch nicht komplett hochgeladen wurden.

Besitze ich nun einen Blog, kann ich diese Bildergalerie direkt aus Google Wave heraus einbinden. Aenderungen, zum Beispiel an einem Bildtitel, werden sofort sichtbar.
Das bedeutet Tastenanschlag fuer Tastenaschlag wird unmittelbar uebertragen. Ich kann meinem Kommunikationspartner also beim Tippen zusehen.

Die in der Einfuehrung gezeigte Webapplikation ist uebrigends mit dem Web Toolkit und HTML 5 gebaut[2].

Doch was ist denn Google Wave eigentlich ohne die bunten Webapplikationen betrachtet?

Protokolluebersicht

Google Wave ist vor allem erstmal ein erweitertes XMPP Protokoll. Damit erben wir sozusagen saemtliche Bestandteile von Jabber, das heisst die XML Basis, Adressierung, TLS, Buddylist-Konzept, etc.

Jetzt gibt es in Google Wave sogenannte Wavelets. Ein Wavelet besteht aus einer eindeutigen ID, einer Liste mit Berechtigungen und einem Satz von XML Dokumenten. Dieses Wavelet liegt dann beim Waveprovider des Erstellers. Moechte man nun dieses Dokument mit anderen Benutzern teilen, fuegt man die Benutzer der Berechtigungsliste hinzu. Die anderen Benutzer koennen dabei zum Beispiel nur Leserechte haben oder ebenfalls auch Schreibrechte.

Am Anfang wird dann der Wave Provider des Benutzers eine Kopie der fuer ihn zugaenglichen XML Dokumente erhalten. Aenderungen an den Dokumenten des Wavelets werden von da an in Echtzeit durch das Google Wave Protokoll an alle anderen Benutzer uebertragen. Durch jede Eingabe, jeden Tastenanschlag, entsteht also eine eigene "Wave"mit den Aenderungen zur vorherigen Dokumentenversion. Durch dieses System entstehen verschiedene Versionen der Ursprungsdokumente. Diese Versionen koennen jederzeit problemlos angefordert werden,  so entsteht ganz automatisch eine beliebig flexible History. Es ist also nicht nur moeglich einen Schritt zurueck zu gehen, sondern man kann ganz gezielt den Urzustand einer bestimmten Stelle des Dokuments herstellen.

Google Wave  ist also erstmal nur ein Protokoll, um Aenderungen an Dokumenten in Echtzeit zu publizieren.

Anforderungen und Probleme

Um diese Technik nutzen zu koennen benoetige ich also einen Wave Provider und meine Anwendung, welche die erstellten XML Dokumente in einer brauchbaren Form rendert.

Wave Provider wird es ueber kurz oder lang wohl recht viele geben. Da das Protokoll "Open Source" und recht ueberschaubar ist, wird es wahrscheinlich kein Problem sein, einen eigenen Server zu schreiben. Zur Google eigenen Serversoftware wurde im Vortrag leider nichts gesagt, auch nicht ueber die Systemanforderungen. Anforderungen sind fuer mich jetzt schlecht abzuschaetzen, aber ich denke hier wird es hohe Ansprueche an die Infrastruktur geben. Ich bin selbst kein grosser Freund von XMPP/Jabber, aber die grossen Jabber Server haben immer wieder Probleme durch erhebliche Netzlast die zum Beispiel durch Onlinestatus-Updates der Benutzer generiert werden. Jeder kann sich selbst ausrechnen was fuer Traffic generiert wird, wenn wirklich viele Benutzer, zum Beispiel waehrend einer Konferenz, ein Dokument in Echtzeit bearbeiten. Auf die technischen Probleme von XMPP/Jabber wird im Wiki zu PSYC entsrpechend eingegangen[3].

Ein weiteres Problem sehe ich in der Strukturierung des XMLs. Google zeigt zwar waehrend der Demo schoen, wie einfach es ist gemeinsam Dokumente zu bearbeiten und das jeder sich im Prinzip seinen eigenen Wave Server aufsetzen kann, trotzdem muesste dann auch das Dokumentnformat irgendwo spezifizieren da sich die darin enthaltenen Informationen sonst nicht rendern lassen. An eine offene Spezifikation aus der Community will ich irgendwie noch nicht so recht glauben.

Ob Google Wave also wirklich die Technik fuer eine neue Kommunikationsform wird, haengt vor allem davon ab, ob man sich gemeinsam auf ein entsprechendes Format zur Uebertragung dieser Kommunikation einigen kann. Bei Google Groups zum Thema Wave Protokoll wurde diese Problematik wohl kurz angesprochen[4], inzwischen scheint die Diskussion aber eingeschlafen zu sein.

In der Google Wave Robots API gibt es zwar ein Interface "Blip"[5], welches einen Knoten in einer Kommunikation repraesentiert, genauere Spezifikationen habe ich aber dazu leider noch nicht finden koennen.

Ausblick

Sicher das Wave Protokoll ist eine nette Sache. Ob es aber tatsaechlich die Kommunikation im Netz so massgeblich beeinflussen wird, wie ueberall prophezeit bleibt abzuwarten.

Sicher kann man sich aber sein, dass dieses Protokoll auf jedenfall kommen wird. Google hat die ersten Teile der Spezifikationen oeffentlich zugaenglich gemacht und ein kleines API Kit in Java und Python fuer Robots und aehnliche Anwendungsfaelle zur Verfuegung gestellt. Die Teilnehmer der Google IO Konferenz haben alle einen Sandbox Zugang erhalten und koennen vorab die Google Anwendungen und das Protokoll testen.

Mit der Zeit wird man sicher immer mehr Robots als Service zur Verfuegung haben. Anwendungsfaelle wie zum Beispiel eine schicke kontextabhaengige Rechtschreibkontrolle, automatisiertes Bloggen, etc. wurden ja im Vortrag schon demonstriert. Das die Google App Engine Python und Java unterstuetzt ist sicherlich auch kein Zufall und so findet man fuer kleinere Robots hier sogar in Google einen kostenlosen Hoster.

Ich bin gespannt was beim Sandboxtest rauskommt und wie gut das Protokoll tatsaechlich in einer echten Umgebung skaliert. Die Performance Problematik habe ich ja oben kurz angesprochen...

Ausserdem interessiert mich wie Google den Open Source Prozess umsetzt. Traditionell bestehen die Committer und Maintainer (also die Leute welche Aenderungen am Protokoll auch wirklich einspielen koennen) ja aus der Community welche entweder durch eine spezielle Gruppe ausgewaehlt werden oder eben direkt gewaehlt sind. Natuerlich bedeutet Open Source nicht die Verpflichtung diese Aufgaben an eine Community zu geben, aber die "Community Principles"[6] lassen auf etwas in dieser Richtung schliessen. Im Moment sind die Committer selbstverstaendlich noch die Entwickler bei Google[7] selbst.

Weiterfuehrende Links

Wer sich mit dem Thema naeher befassen will, dem empfehle ich folgende Links:

Einfuehrung von Google Wave auf der Google IO

Ein erster Entwurf der Protokollspezifikationen

Uebersicht ueber die Protokollarchitektur

Google Groups Diskussionen

Google Wave APIs

Fussnoten:

[1] Google Wave Introduction from Google IO - http://www.youtube.com/watch?v=v_UyVmITiYQ

[2] Went walkabout. Brought back Google Wave - http://googleblog.blogspot.com/2009/05/went-walkabout-brought-back-google-wave.html

[3] Technical Issues in Jabber - http://about.psyc.eu/Jabber

[4] Google Groups: Wavelets with different XML schemas - how to render? - http://groups.google.com/group/wave-protocol/browse_thread/thread/2d3fb5ce88dc3249

[5] Google Wave Robots API Javadoc - http://wave-robot-java-client.googlecode.com/svn/trunk/doc/index.html

[6] Google Wave Community Principles - http://www.waveprotocol.org/wave-community-principles

[7] Google Wave Committers - http://www.waveprotocol.org/committers

Kommentare (2) Trackbacks (1)
  1. interessanter artikel, netter überblick über die sache.

    kleiner tipp: auf rechtschreibung und zeichensetzung achten. außerdem dürften “echte” links anstelle von verweisen an’s ende des dokuments in zeiten von html 5 auch nicht mehr ein ding der unmöglichkeit sein. ;)

  2. Thx urmel :-)

    Ja das mit der Rechtschreibung und Zeichensetzung muss ich wohl nochmal fixen ;-)

    Das mit den Links im Artikel und den Fussnoten wird das naechstemal ein Plugin erledigen. Hab den Text zum grossteil Offline geschrieben und das dann nichtmehr korrigiert. Danke fuer den Hinweis ;-)