rss feed articles activities all_comments

indeedgeek.de

Florian Eitel

Groupware Protokolle

Wer träumt nicht von einer zentralen Verwaltung seiner PIM-Informationen? Groupware-Systeme unterstützten diesen Prozess indem sie die Daten zentral verwaltet und verschiedene Schnittstellen anbietet. In vielen Fällen wird eine Groupware nach ihrem Web-Frontend bewertet. Leider spielt diese eigentlich nur eine sehr untergeordnete Rolle. Das Hauptproblem konzentriert sich darauf, möglichst viele Clients mit dem System verbinden zu können. Deshalb möchte ich kurz einige interessante Techniken auflisten um den Austausch der Daten zu Realisieren.

Formate

Zumindest hier zeichnet sich langsam ein Standard ab. Für Termine hat iCalendar (oder kurz ical) langsam den älteren Konkurrenten vCalendar abgelöst. Mit iCalendar lassen sich allerdings nicht nur Termine sondern auch todo’s oder Journaleinträge damit verwalten. Leider ist das Format nicht ganz so schön (man ist ja langsam überall XML gewohnt) aber zumindest die meisten Datenfelder werden überall verstanden. Da man aber auch selbst Erweiterungen definieren kann, ist es doch möglich das Details in verschiedenen Anwendungen anders verstanden werden. Bei Kontakten hat sich vCard durchgesetzt, wofür weitgehend das selbe wie bei iCalendar gilt.

Protokolle

Leider sind dies ja nur Dateiformate. Meistens möchte man ja aber diese Daten zentral hinterlegen und mit verschiedenen Clients darauf zugreifen. Dazu sind einige Protokolle nötig, die diesen Transport realisieren. Hier möchte ich auch mein eigentliches Hauptaugenmerk legen.

Email

Hier ist es noch am einfachsten. POP ist Tot. IMAP ist Standard. Viel mehr muss man dazu nicht sagen. Interessant sind allerdings einige Erweiterungen für IMAP. Einmal wäre da IMAP-IDLE. Dabei meldet sich der Client am Server an und senden anschließend nur ab und zu keep-alive-Pakete. Der Server hingegen antwortet sobald eine neue Mail eintrifft. So hat man ein wunderbaren Mail-PUSH ohne jeden Aufwand. Erwähnenswert ist noch Sieve. Sieve. Stieve ist eine Programmiersprache in der sich Regeln wie zum Beispiel Abwesenheitsnachrichten, oder Spamregeln definieren lassen. Außerdem ist meistens nicht bekannt das man mit IMAP auch komplexe ACL’s definieren kann. So ist es möglich ein Postfach auch mehreren Personen zugänglich zu machen.

Kalender und Kontakte

XML-RPC

Einige Projekte wie eGroupware oder PHProject setzten auf XML-RPC zur Synchronisation. Zwar lässt sich so sehr einfach dagegen programmieren aber leider ist dies immer sehr Spezifisch auf die einzelne Anwendung. Deshalb finde ich diese Idee nicht sonderlich toll. Lieber ein standardisiertes Protokoll für alle!

WebDav

Eine sehr einfache Möglichkeit ist der Einsatz von WebDav wie er auch von subversion benutzt wird. WebDav ist eine Erweiterung zu HTTP, die es ermöglicht Dateien auch hochzuladen. So kann man einfach die jeweilige Datei (ical oder vcard) auf dem Server plazieren und diese herunter laden oder eben wieder schreiben. Das Problem ist nur: Jedes mal muss die gesamte Datei mit allen Einträgen heruntergeladen werden und bei Änderungen auf dem Server übertragen. Das kostet Zeit und macht verteiltes Arbeiten recht schwierig.

GroupDAV

GroupDav ist eine kleine Erweiterung zu WebDav die einfach nur festlegt jeder Event oder Kontakt liegt in einer einzelnen Datei in einem jeweiligen Unterordner. So muss immer nur eine Datei übertragen werden. Diese Idee finde ich noch von allen die beste Möglichkeit da man so auch einfach den Ordner lokal für offline Arbeit zwischenspeichern kann.

IMAP

Kolab definiert versteckte IMAP Ordner. Der jeweilige Client speichert Kontakte oder Termine als Email in den jeweiligen versteckten Ordner mit entsprechendem XML-Anhang. Die gesamte Kommunikation läuft so über IMAP Ordner. Ist eine nette Idee, allerdings finde ich den Gedanken sehr unschön meine Kontakte und Termine als XML-Anhang an eine versteckte Email ranzukleben. Ist irgendwie sehr umständlich und sicher nicht Sinn der Sache.

SyncML

SyncML hat sich ja längst auf allen Handys festgesetzt und auch erste Plugins für Desktop-Anwendungen sind verfügbar. Dazu beigetragen hat sicherlich funambol (früher Sync4J). Dies ist ein freier SyncML-Server der von Google-Anwendungen über Groupdav bis hin zum IPhone alles miteinander Syncen kann.

Kalender only

CalDav ist spätestens seit es Google in seinem Kalender unterstützt etwas populärer als GroupDAV. Es basiert ebenfalls auf WebDav allerdings kann man auch komplexere Abfrage-Queries an den Server stellen. Das macht es einerseits natürlich etwas effektiver als GroupDav allerdings auch komplexer zu Implementieren. Für Apache gibt es übrigens ein CalDav-Modul. Leider muss man Apache dafür neue übersetzten (was ich auf einem Server sehr ungern tue).

Kontakte only

Hier ist sicherlich eine der wichtigsten Lösungen LDAP. Fast jedes Programm kann auf LDAP zugreifen. Es bietet sehr gute Such Möglichkeiten und ist einfach zu erweitern. Leider hat man hier immer das Problem das man auf ein LDAP nur lesend zugreifen kann. Will man Einträge hinzufügen oder bearbeiten muss dies manuell auf dem Server geschehen. Deshalb wird von vielen Groupware-Systemen LDAP nur als Read-Only-Verzeichnis genutzt. Die eigentlichen Änderungen laufen über andere Protokolle. Serverseitig werden diese dann ins LDAP überführt.

Sonstiges

Eigentlich erwarte ich von einer Groupware, dass sie mehr als nur Emails, Kontakte, Termine und Todos unterstützt. Allerdings sieht es hier noch schlechter aus, als in den anderen Bereichen. Wünschenswerte Features wären zum Beispiel RSS (was leider meistens nur read-only für den Client ist. Also sprich der Client kann dem Server nicht mitteilen welche Items ich gelesen habe. Kennt hier jemand eine Lösung??), XMPP, IRC (Wäre doch Klasse wenn der komplette Verlauf, zum jeweiligen Kontakt, zentral abgespeichert wird) oder auch Bookmarks (ganz im grandiosen (neuen) delicious.com). Aber von solchen Ideen sind wir wohl noch ähnlich weit entfernt wie zu dieser Vision: Assoziative Gedächtnishilfe für mobile Datensammler

Ich hoffe ich konnte kurz einen Überblick über mögliche Techniken geben. Vielleicht kanntet ihr ja das ein oder Andere noch nicht. Sollte ich was vergessen haben, einfach in den Kommentaren melden! Zum Schluss mein Wunsch-Setup: IMAP (mit IDLE und Sieve), GroupDav, LDAP (read-only) und Funambol-Connector. SOGo (ein Fork von OpenGroupware.org) bietet mir zwar genau das, allerdings habe ich mit dem Kompilieren des Objective-C Quellcodes einige Probleme ;-).

Anmerkung 1: Ich konnte (noch) nicht alle Produkte und Protokolle ausprobieren, deshalb sind die Kommentare alle nur persönliche Empfindungen

Anmerkung 2: Mir ist aufgefallen ich verlinke sehr wenig auf andere Seiten. Ich hab diesmal sehr viel (vor allen) auf Wikipedia verlinkt. Findet ihr das besser?

Comments:

(howto comment?)

Prima Übersicht, danke! Mit WebDav hab ich mich bis jetzt noch nicht so richtig beschäftigt, sieht aber schon ziemlich gut aus.

Mit LDAP hab ich privat auch etwas herumexperimentiert, aber fand es für meine ~200 Kontaktdaten doch etwas zu übertrieben und zu aufwendig. Und auch das problem – wie du schon gesagt hast – das man nur lesend darauf zugreifen kann ist nicht gerade ideal.

Groupware-Lösungen hab ich alle schon durch und nichts hat wirklich gepasst. Entweder viel zu aufgeblasen, zu langsam, zu verbuggt oder einfach nur hässlich :) Zeit da selbst mal Hand anzulegen =)

Zwei kleine Anmerkungen,

a) mit GroupDAVv2 (kleine Änderungen zur Verbesserung der Kompatibilität) ist jeder CalDAV Server automatisch auch ein GroupDAV Server (und nahezu jeder WebDAV Server). Sprich, jeder CalDAV Server kann dann mit einem GroupDAV Client verwendet werden.

b) SOGo ist kein Fork von OpenGroupware.org. SOGo ist Teil des OGo Projektes und die Software wurde parallel zu OGo entwickelt. Der Groupwareteil wurde nicht von OGo abgespalten, sondern auf andere Anforderungen hin neu entwickelt. Die beiden Varianten existieren regulär nebeneinander weiter (Anwendungen mit ganz unterschiedlichem Fokus).

Gruss, Helge

Postet on by Helge Heß.

Vielen Dank für deine Ergänzung/Berichtigung!

Das wäre ja absolute Wahnsinn wenn das mit GrupDAVv2 so funktioniert. Ich habe mal dein groupdav-set.sh getestet konnte aber das DavRepo anschließend nicht nutzen. Könnte wohl daran liegen das in Kontact 1.2.9 bisher nur die Version 1 verfügbar ist (nur eine Vermutung).

Wie weit ist denn Version 2? Ich habe dein Proposal auf der GroupDAV-Mailingliste von Anfang August gelesen. Allerdings konnte ich noch nichts weiter dazu finden. Ich nehme an das es noch kein Update des Drafts gibt? Demnach wohl auch noch in keinen Libs/Clients implementiert?

Ich finde die Idee (soweit ich sie verstehe) von Groupdav (vor allem v2) absolut genial. Allerdings kommt es für mich als Außenstehender etwas “chaotisch” vor. Hat so bisschen was von Wlan-Draft-N … “Jeder” nutzt es ohne das es überhaupt vollständig spezifiziert wurde. Aber vielleicht bin ich auch einfach nicht genug in der Materie.

Ich hatte zumindest mal an eine Goupdav-Lib gedacht aber ich blick irgendwie noch nicht so ganz durch.

Der Ausdruck “Fork” war von mir vielleicht nicht ganz richtig gewählt. Ich habe vom Prinzip deine Aussage gemeint, aber wohl das Wort “Fork” etwas zu weit dafür ausgelegt.

Ich bin gespannt was sich in nächster Zeit bei euch so tut!

Kontact hat aktuell keine besonders gute GroupDAV Implementierung, selbst die v1 funktioniert ja nicht wirklich gut (hoffen auf Akonadi …).

Ein Update zum Draft gibt es noch nicht, wird es aber geben ;-) Ich versuche verschiedene Client Kollegen anzuhalten meinen Proposal schon umzusetzen.

Es ist in der Tat etwas unorganisiert. Geht leider nicht viel besser, wenn man so viele Leute mit möglichst wenig Aufwand zusammen bringen möchte ;-)