In my quest to find the ultimate solution for contact list and calendar synchronization [syncproblenm, crossplatformdatasyncingsolutions], I decided to try out Funambol. Funambol is an open-source product formerly known as sync4j, which provides client and server sync applications, as well as a sync portal service at http://my.funambol.com. Funambol is closely, but not exactly, based on the SyncML standard.
I decided to run my own Funambol server (version 6), and synchronize it with four clients:
All but the iPhone were previously kept in sync manually via Pocket Mirror for the Treo.
Setting up a Funambol server was quite easy, at least for someone with basic technical skills. They thoughtfully provide the server in a ready-to-run package that includes all of the base host components, like Apache Tomcat and Java. You just need to extract the package, start the server, and run a simple configuration utility. The included PDF instructions are easy to follow. If you are behind a firewall, as most people are, you'll need to forward port 8080 to the machine running the Funambol server.
Funambol provides their own Outlook plugin, which installs easily, so I installed it on both Outlook clients and configured them to point at my server. Here's a lesson I learned when dealing with syncing Palm Pilots: Always choose one, and only one, client to be the "master sync source." When you first configure a sync solution, you will inevitably screw up the data somewhere, either nuking everything, or duplicating everything. I chose my work Outlook client as the master. I also backed up my home Outlook PST file. I first manually synced the work Outlook client, then did a one-way sync from the server to my home Outlook client. I ended up with several duplicate appointments on the home client, so I manually cleaned out the dupes, and did a standard two-way sync. When I synced the work client again, the dupes appeared on the work client, so I removed the dupes there as well. And here's where I ran into a problem: the duped appointments were missing all of the Exchange meeting data, so information about the meeting organizer and attendees was lost. Luckily, because I chose the work Outlook client as the master sync source, I could compare duped meetings on the work client and delete the dupe that was missing Exchange data. Unfortunately, I didn't realize the problem until I had deleted a few of the wrong dupes. Contacts synced fine between both clients.
There is no Funambol client for the Treo 650, so I tried the Nexthaus SyncJe client and the Synthesis SyncML client. The SyncJe client would connect to the Funambol server, but it couldn't see any of the data stores, so I couldn't use it. That left the Synthesis client. The Synthesis client would connect and sync, but I had several issues, presumably due to differences in adherence to the SyncML standard. I lost all contact pictures on the Treo, and several address fields were incorrectly combined or deleted. All-day appointments (like birthdays) were converted to 6 hour appointments randomly a day before or after the original date, and other meetings would mysteriously vanish. I suspected some of the issues were related to data on the Treo previously synced from Pocket Mirror, so I wiped the contacts and calendar clean, and re-synced from the Funambol server. After manually cleaning up the contact data in Outlook and syncing all clients, the contact info on the Treo was fine. But each time the Synthesis client synced, it would randomly screw up some part of the calendar. I ended up setting the Synthesis client to only do a one-way sync from the server, and never "write back" to the server. This prevented corruption of the server's sync data, but it also meant that I could never add new appointments from the Treo. And even in this case, some appointments would still never appear on the Treo.
When I picked up my iPhone 3G, I walked to a nearby coffee shop, sat down, launched the AppStore on the iPhone, downloaded the native Funambol client, configured it to point at my server, and synced. And just like that, I had all of my contact data on the iPhone. Upon careful inspection, however, I noticed two issues: 1) Email addresses were listed in a category called "Other", instead of "Email". This doesn't seem to cause any real problems, as I can email everyone fine. 2) Contact "Group" info was not synced. If you sync contact data from Outlook to the iPhone via a cable and iTunes, Outlook's Contact folder data will be translated into Group data on the iPhone. This information is not translated when syncing via Funambol, so all of my contacts are listed in one long list. I'm able to manually assign group information using the iPhone app ABGroups, and while the Group data is not synced with Funambol, it does seems to be preserved on the iPhone after syncing.
Apple currently doesn't allow third party software to modify the iPhone's calendar, so the Funambol client does not sync the calendar. This flat out stinks, and it makes you wonder if Apple is trying to force users to subscribe to their MobileMe service. In the mean time, I use Google Calendar's Outlook Connector to do a one-way sync from my work Outlook client, and I view the calendar using Google's iPhone-optimized Google Calendar web site. It works surprisingly well, and I can even see organizer and attendee data on the Google calendar. But it is far less than ideal, as I can only see the calendar when I have a network connection. Note that based on usage reports from Omar and others, I don't trust a two-way sync from Google calendar, so like the Treo, I cannot add new appointments on the iPhone. Come on Apple, open up the calendar!
After two months of usage, I'm still using Funambol on a daily basis. I occasionally get duplicate appointments in my calendars, but I'm not sure if it is Funambol or other issues (I've seen dupes appear when I modify my Exchange calendar via Entourage on the Mac). I don't think I would recommend Funambol as a bullet-proof calendar sync solution, but for Contact data, it does the trick. And in both cases, I like that I'm syncing everything without cables.
UPDATE: Well, today I updated my iPhone to firmware 2.0.2. After doing so, used the iPhone Funambol app to sync with my server as usual, and it decided to duplicate almost all of my contacts. Why? The firmware update? Was it because I added Group info? As much as I want Funambol to succeed as free alternative to MobileMe, I'm dubious of its reliablity.
Hi, did you report the error to the Funambol iPhone developers? They can be reached at https://core.forge.funambol.org/ds/viewForumSummary.do?dsForumId=405
Cheers
stef
Thanks for your comment Stefano. I added a post about the Contact Groups on a Funambol forum here:
https://myfunambol.forge.funambol.org/ds/viewMessage.do?dsForumId=262&dsMessageId=23991
I'm not sure if that was the right list. I must say, the Funambol forums are confusing and clunky to use, and I dislike that I need to publicly display an email address. I hope that the forums are updated to a more modern format at some point.
That all said, I'm still using Funambol for my iPhone contact management, and since the 2.0.2 iPhone update, everything has been working perfectly.
forgive my ignorance ...
I too installed the Funambol opensource on our linux machine. The funambol syncs the contact and iphone. however here is the my stupid question. Can the funambol server be used with the iPhone 3G firmware 2.0.x to push email/tasks/notes. For the life of me I can not find any docs/support for this? is it even possible?
tia
I don't think Funambol supports push messaging for the iPhone. Apparently this feature requires a phone to accept an SMS message that would launch an app - which the iPhone does not support.