Od jakiegoś czasu jestem szczęśliwym posiadaczem urządzenia z Windows Mobile 6 na pokładzie. Jednym z powodów, który przeważył o jego zakupie była chęć “organizacji czasu”. Tyle się słyszy o możliwościach, jakie obecnie dają urządzenia mobilne, nowoczesne telefony komórkowe, laptopy, …, aleeee … .

Jak to by mogło być, żeby nie było żadnego “ale”. Wszystko jest pięknie, gdy mówimy o hermetycznych, homogenicznych środowiskach aplikacyjnych, gdzie klient i wspierająca go platforma serwerowa pochodzi z jednej stajni, od jednego producenta. Tutaj trzeba przyznać, że faktycznie w wypadku takich okoliczności wszystko wygląda cacy, trzeba mieć tylko na to “trochę” kasy i śmiga aż miło (a jeśli nie, to przed szefem zawsze jest na kogo zwalić winę – “płacimy za licencję, więc pomęczymy się z supportem dostawcy rozwiązania”). Nie mniej nie o tym ma być ten cały post.

Zmierzając powoli do meritum problemu napiszę, że strasznie doskwiera mi brak możności wykorzystania dobrodziejstw dawanych ludziom przez przepiękne, funkcjonalne i całkiem dobrze działające aplikacje web 2.0 oraz wspomagające je pakiety typu Open Source.

Zapewne większość z was zdąrzyła się już spotkać z Google Calendar. Muszę przyznać, że usługa ta bardzo przypadła mi do gustu (pewnie z tego powodu dorobiłem się w niej kilkunastu kalendarzy, każdy do innych “zadań specjalnych”). Dodatkowo prywatnie, ale i służbowo, do obsługi poczty internetowej używam Mozilla Thunderbird. I tutaj właśnie zaczyna się cała zabawa. Któregoś dnia “z nudów” postanowiłem trochę poeksperymentować, lekko pod kątem pewnych projektów, a trochę dla zaspokojenia własnej ciekawości i ułatwienia sobie życia. W ten oto sposób zrodziła się idea sprzężenia całego tego ustrojstwa w jeden, sprawnie funkcjonujący, dostępny 24h na dobę z każdego miejsca na świecie i z dowolnego “terminala”, czasem nawet mobilnego, “system zarządzania kalendarzem/zdarzeniami”.
Google Calendar, jako podstawa całego tego zamieszania, jest niezależny od czego kolwiek. Kolejny etap to integracja na drodze Thunderbird < -> Google Calendar. Jak szybko się okazało, udało się to dość szybko wprowadzić w życie – wystarczyły raptem 2 dodatki.
Pierwszy z nich to Lightning (pl. Błyskawice). Dość ciekawa zabawka, która pozwala z “prostego” i “prymitywnego” Thunderbirda uczynić coś znacznie bardziej zbliżonego do “konkurencyjnego” i komercyjnego Microsoft Outlooka – dodaje funkcjonalność kalendarzy oraz zadań. Swoją przygodę z nim zaczynałem, gdy ten był w wersji 0.7. Jakiś czas temu wyszła 0.8 i interfejs uległ znacznej poprawie, nawet komercyjne projekty już nie musiałyby się wstydzić podobnego (a część na pewno mogłaby zazdrościć).
Drugi dodatek to Provider for Google Calendar. To właśnie dzięki niemu możliwym stało się sprzężenie TB z gCal – dodaje on natywne (GData) wsparcie googlowego formatu iCala.
Co ciekawe i fajne, w ten sposób uzyskałem praktycznie bezproblemowe, dwukierunkowe synchronizowanie “lokalnego” kalendarza TB z gCalem. Póki co sprawuje się nadzwyczaj dobrze (żebym tylko nie zapeszył :P).

Jak widać pierwszy krok w całej batalii poszedł dość gładko i zachęcony pierwszym sukcesem postanowiłem zabrać się za zsynchronizowanie mojego Pocketa z pozostałymi elementami układanki. Niestety tutaj już tak kolorowo nie było, a w zasadzie powinienem pisać, że nadal nie jest. Googlałem za jakimś produktem, nawet komercyjnym, który ułatwiłby pełną synchronizację konta kalendarzowego z urządzeniem mobilnym i niestety nic ciekawego nie znalazłem.
Próby postanowiłem rozpocząć jednak od tych darmowych i pierwszą rzeczą, na która natrafiłem w swoich poszukiwaniach, był GMobileSync. Wszystko niby fajnie, ale potrafi on synchronizować tylko jeden kalendarz. Niestety to nie wystarczyło dla mnie, więc poszukiwania trwały dalej.
Ostatnio natknąłem niby to na cudowną platformę, wynik projektu Open Source, która potrafi zsynchronizować wszystko i ze wszystkim – Funambol. Jakże wielkie było moje rozczarowanie, gdy biorąc się za niego wczesnym wieczorem, musiałem pierwszą potyczkę poddać o 4 rano bez żadnego sukcesu.
Docelową platformą systemową dla Funambola miał się stać Windows 2000, przynajmniej tymczasowo. Instalator pięknie śmignął przez cały proces osadzania softu na dysku, więc nadeszła pora odpalić serwer. No i tutaj pojawiło się pierwsze ale – nie chciał powstać. Walczyłem z tym do 4 rano i dałem sobie spokój – w końcu kiedyś trzeba się trochę przespać. Kolejne starcie podjąłem już “wypoczęty” kolejnego dnia. Okazało się, że autorzy nie przewidzieli bariery 2046 znaków, jakie system Windows 2000 może przyjąć w ramach komend wydawanych z poziomu skryptów powłokowych. Tutaj był koleny cyrk – szukanie po wszystkich skryptach (a tych CMDków w Funambolu nie brakuje), w którym miejscu wykłada się z komunikatem zbyt długiego polecenia.

Kolejny etap stanowiła próba optymalizacji używanych zmiennych bazowych, które w dalszej koleności służyły do budowy zależności bibliotekowych i programowych pomiędzy kolejnymi modułami całej platformy. Ciężko tutaj pominąć fakt, że oparta jest ona o Java (odziwo nawet nie żre to zbyt wiele zasobów) i stąd ta konieczność budowania gigantycznie długich CLASSPATH do każdego z (koniecznych do odpalenia) modułów. Byłoby z tym mniej zachodu, gdybym stawiał to na OSie Linuxowym lub jakimś nowszym dziecku firmy Microsoft. Już taki Windows XP i kolejne są już dużo milsze i pozwalają na przeszło 8000 znaków w poleceniach shellowych, co pewnie zaoszczędziłoby mi całkiem sporo czasu.

Po tym jak udało się odpalić serwer, a w zasadzie w ramach poszukiwania weny pomiędzy kolejnymi próbami jego odpalenia, zacząłem się interesować w jaki sposób połączyć ten serwer z resztą docelowego rozwiązania. Z pomocą przyszła wtyczka do produktów Mozilli – sync4jmozilla.
Tutaj pojawia się kolejna piękna historia. O ile z samym podstawowym kalendarzem TB działała ona całkiem spoko, o tyle już z kalendarzami Google za bardzo nie chciała (udało się bez crasha zsynchronizować serwer Funambola tylko z jednym z 6 testowanych kalendarzy). Samo to już stanowiło dość spory problem. Do tego pojawił się kolejny – z serwerem nie za specjalnie można synchronizować poszczególne kalendarze w sposób niezależny. Za każdym razem trzeba było w opcjach konfiguracyjnych przełączać kalendarz źródłowy – na pewno do czynności wygodnych i funkcjonalnych nie należało. Tak więc po kilkudziesięciu crashach TB dałem sobie spokój z tą częścią zabawy. Nadszedł czas na następne testy.

Żeby nie było za mało rozczarował, to przetestowałem również klienta Funambola na Pocket PC. Zainstalował się elegancko, więc zabrałem się za próbę łączenia go z postawionym już serwerem. Wszystko cacy, tylko jak przyszło w końcu do zsynchronizowania zapisów z telefonu z bazą serwera, to klient lubił sobie złapać zwis mniej więcej w 1/2, czasem 2/3 wszystkich zapisów.

Po tych wszystkich załamkach z Funambolem postanowiłem sobie dać spokój z tą platformą. Postanowiłem jeszcze dać szansę innym rozwiązaniom. W pierwszej kolejności padło na niezwykle często reklamowany, wręcz cudowny projekt – CompanionLink for Google. Niby wszystko pięknie, tylko po instalacji okazało się, że niestety komunikacja musi odbywać się z pośrednictwem klienta pocztowego i niestety darmowego TB na liście nie było (bo przecież Outlook, Lotus, Novel, … są “lepsze”). W ten cudowny sposób odpadła kolejna szansa spełnienia moich “marzeń” 😛

W międzyczasie był jeszcze krótki romans z darmowym ScheduleWorld, który odziwo jest oparty o dobrze już wam znanego Funambola. Załamka przyszła po tym, jak po pięknym zaakceptowaniu ekranu Google Calendara pytającego o udostępnienie danych ScheduleWorld (bo to właśnie on ładnie przekierował do niego), wyłożył się on przy próbie importu danych. Jednocześnie ogłosił, żeby spróbować później.
Podjąłem jeszcze jedną próbę (i chyba na jakiś czas jedną z ostatnich). Otóż tym razem padło na nuevasync.com. Projekt w fazie beta, co niestety dało się odczuć po zarejestrowaniu się – po wpisaniu loginu i hasła serwer odmawiał dalszej współpracy. Przez jakiś czas na bank nie będę się do niego dobijał.

W ten oto sposób przebrneliście przez moje znoje i próby pełnej – dwukierunkowej – synchronizacji pomiędzy ThunderBirdem < -> Google Calendar oraz Pocket PC < -> Google Calendar (czy to z pośrednikami, czy też bez nich). Najbardziej poraża fakt, że Google wypuścił soft dla platformy Blackberry, są mniej lub bardziej udane rozwiązania dla produktów komercyjnych (Lotus, Novel, Microsoft, …), a nie ma czegoś dającego podobną funkcjonalnośc w ramach Open Source lub na zasadach freeware.
Jakiś przełom w tym temacie być może przyniesie, przedstawiony jakiś czas temu, projekt Google Gears przeznaczony dla platformy Windows Mobile 6.x. Założenia ma bardzo fajne (jak np. zdolność pracy aplikacji w trybie offline) i w notce można przeczytać o pierwszych wdrożeniach tego produktu w życie, ale czy przebije się na większą skalę

Tym optymistycznym (mam nadzieję) akcentem kończę ten, dość długi, wpis.

PS Jeśli ktoś zna jeszcze jakąś alternatywę, która działa, to czekam na informację.