Come funziona la sincronizzazione
Per un certo periodo di tempo ho utilizzato il protocollo WebDav per pubblicare e sottoscrivere i miei calendari su un web server direttamente da iCal; il problema era che solo uno dei miei Mac poteva pubblicare i calendari sul server mentre gli altri potevano soltanto sottoscriverli, quindi con questo sistema è possibile avere i propri calendari "sincronizzati" su quanti Mac si desidera ma solo uno di questi computer, quello che "pubblica", potrà apportare modifiche ai calendari, gli altri potranno solo aggiornare la loro copia locale in caso di modifiche apportate dal Mac che li pubblica.
Questo accade perché la modalità di "sincronizzazione" WebDav di iCal consiste in una banale copia dell'intero file del calendario sul server (pubblicazione) e dal server (sottoscrizione), non viene effettuata alcuna reale sincronizzazione elemento per elemento che controlli se alcuni eventi o attività dei calendari siano stati recentemente aggiunti o modificati. Ho scritto iSynCal (inizialmente per uso personale) proprio per superare questo limite ed avere i miei calendari sincronizzati su tutti i miei Mac e, soprattutto, modificabili da tutti i miei Mac ... in seguito mi è tornato comunque utile installare PHPiCalendar su uno di questi computer per avere la possibilità di visionarli da qualunque parte del mondo con un semplice browser. Potete trovare ottime istruzioni passo-passo su come configurare WebDAV su OS X e sull'installazione e configurazione di PHPiCalendar sul sito web di Greg Westin.
iSynCal funziona in maniera totalmente differente: quando viene avviata una sincronizzazione esso analizza i dati della coppia di calendari in questione e ne sincronizza tutti gli eventi ed attività uno per uno, facendo sì che gli elementi più recenti sovrascrivano il loro corrispondente sull'altro calendario e, se sono stati aggiunti eventi o attività, che i nuovi elementi vengano copiati da un calendario all'altro.
Tutte le applicazioni per la gestione dei dati personali come iCal identicano ogni elemento (evento o attività) utilizzando un identificatore univoco (UID) che viene generato automaticamente nel momento in cui il nuovo elemento stesso viene aggiunto al calendario; solo per la vostra conoscenza, questo UID è qualcosa del tipo DACD31F6-258C-11D8-A53A-000A9586DA02.
Dato che iSynCal fa largo uso dell'UID di ogni elemento dei calendari durante la sincronizzazione e che usa unicamente questo dato per l'identificazione di eventi ed attività, se doveste creare su un computer un evento con una certa descrizione, data e ora di inizio, durata, ecc. e poi creaste su un secondo computer un altro evento all'apparenza identico al primo (perché avrebbe la stessa descrizione, data e ora di inizio, durata, ecc.) allora iSynCal riconoscerebbe questi due eventi come eventi differenti a causa dei loro diversi UID, quindi essi potrebbero solo essere copiati fra calendari e in nessun modo sincronizzati.
Per essere correttamente sincronizzato un evento o attività deve essere creato da iCal solo una volta, su di un solo computer, così che esso venga copiato sull'altro calendario alla prima sincronizzazione con iSynCal (l'opzione Copia eventi/attività non presenti deve essere attiva). Siccome così facendo l'evento avrà lo stesso UID su entrambi i calendari, esso sarà correttamente sincronizzato in seguito ad una modifica ad esso apportata su uno dei calendari (l'opzione Sincronizza eventi/attività già esistenti deve essere attiva).
Fate molta attenzione: iCal non deve essere in esecuzione su entrambi i computer prima di eseguire qualsiasi processo di sincronizzazione, altrimenti i calendari non potranno essere salvati e alcuni dati potrebbero essere persi. iSynCal chiuderà automaticamente iCal sul computer locale (quello che esegue iSynCal) quando una sincronizzazione viene avviata, quindi dovrete avere cura di chiudere iCal sul computer remoto prima di avviare una sincronizzazione!Se volete che iSynCal chiuda automaticamente iCal anche sul Mac remoto seguite questo link.