Wie funktioniert der Synchronisierungsprozess genau?
Ich habe eine gewisse Zeit lang WebDav dazu verwendet, meine Kalender auf einem Webserver zu veröffentlichen; das Hauptproblem dabei war, dass nur ein Mac-Kalender auf dem Server veröffentlicht werden konnte, während andere Benutzer diese Kalender nur abonnieren konnten, um die aktualisierte Version vom Server zu laden. So kann man zwar seine Kalender auf beliebig vielen Macs "synchronisieren", jedoch nur auf einem Computer die Kalenderdaten auch verändern. Die Benutzer der anderen Macs können immer nur die veränderte Version der Kalender lesend öffnen.
Das ist so, weil die WebDAV "Synchronisierung" in iCal hauptsächlich aus dem Kopieren der gesamten Kalenderdatei auf den Server (Veröffentlichen) und vom Server (Abonnieren) besteht. Dabei passiert keine echte Synchronisierung, die Objekt für Objekt prüft, ob sich Ereignisse und Aufgaben in einem Kalender verändert haben, ob neue hinzu gekommen oder alte gelöscht worden sind. Ich habe iSynCal (ursprünglich nur zur eigenen Verwendung) entworfen, um diese Beschränkung aufzuheben und alle meine Kalender auf allen Computern miteinander zu synchronisieren. Vor allem aber sind sie so auch auf allen Computern veränderbar... Zudem kann es recht nützlich sein, PHPiCalendar auf einer Maschine zu installieren, um Termine und Verabredungen von überall aus mit einem Webbrowser zu überprüfen. Einige gute Tutorials/Anleitungen zum Thema Aufsetzen von WebDAV in OS X und zur PHPiCalendar-Installation und -Konfiguration finden sich auf der Website von Greg Westin (auf Englisch).
iSynCal funktioniert auf ganz andere Art: wenn eine Synchronisierung gestartet wird, werden alle Daten des betreffenden Kalenderpaars analysiert und anschließend ihre Ereignisse und Aufgaben einzeln synchronisiert, so dass die neusten Ereignisse/Aufgaben die korrespondierenden im anderen Kalender überschreiben; zudem werden neu hinzugefügte Objekte dabei vom einen zum anderen Kalender kopiert.
Alle PIM (PersonalInformationManagement)-Anwendungen wie auch iCal identifizieren jedes Ereignis und jede Aufgabe eindeutig mit einer einzigartiger UID, die automatisch erzeugt wird, sobald ein neuer Eintrag in einem Kalender angelegt wird. Zur Information, in etwa sieht das dann so aus: DACD31F6-258C-11D8-A53A-000A9586DA02. iSynCal benutzt diese UID, um die Kalendereinträge während des Synchronsierungsvorgangs zu identifizieren. Wenn also ein Ereignis mit einer Beschreibung, Startzeit, Dauer, etc. auf dem einen Computer und später ein Ereignis mit denselben Merkmalen auf einem anderen Computer erstellt wird, werden diese beiden Ereignisse trotzdem durch iCal als verschieden angesehen, da sie unterschiedliche UID besitzen, daher können diese Ereginisse nur zwischen Kalendern kopiert, nicht aber (in irgendeiner Form) synchronisiert werden.
Um synchronisiert zu werden, darf ein Ereignis, oder eine Aufgabe mit iCal nur einmal auf einem Computer erstellt werden, damit es bzw. sie bei der nächsten iSynCal-Synchronisierung auf den anderen Kalender kopiert wird (die Option Ereignisse/Aufgaben kopieren, wenn nicht in beiden Kalendern vorhanden muss dazu aktiviert sein). Auf diese Weise löst jede spätere Änderung des Ereignisses oder der Aufgabe seine bzw. ihre Synchronisierung aus (die Option Entsprechende Ereignisse/Aufgaben synchronisieren, die bereits in beiden Kalendern vorhanden sind muss dazu aktiviert sein), da in diesem Fall das Ereignis oder die Aufgabe in beiden Kalendern dieselbe UID hat.
Bitte beachten sie, dass iCal auf beiden Computern beendet werden muss, bevor sie eine Synchronisierung durchführen, sonst können neue Daten nicht in die Kalender geschrieben werden. Aus diesem Grund beendet iSynCal automatisch iCal auf dem lokalen Computer, wenn sie auf Synchronisieren klicken. Bitte denken sie daran, iCal auch auf dem entfernten Computer zu beenden, bevor sie mit der Synchronisierung beginnen! Wenn sie iCal auch auf dem entferneten Mac automatisch durch iSynCal beenden lassen wollen, lesen sie bitte hier nach.