I have my calendar and contacts synchronized to Google. I use Google as the middle man (or women) between the different computers and platforms to keep data synchronized. It’s free with large amounts of storage and uses some what de facto and industry standards (CalDav, iCal, CSV, etc).
Using Google services as the middleware takes out a lot of cross platform syncing headaches. For example syncing the iPhone between the Mac and a PC will force you to remove the existing data on the phone and replace it with the current computer. This means it will take longer to sync (in theory) but also it’s annoying having to click the “OK” button every time. Also iTunes / iPhone has problems syncing the applications. If it exists on one computer and not the other it will start deleting the missing applications and add ones that are not on the iPhone. To solve this problem you have to download all the Apps from the Apps store before syncing the iPhone. I found this out the hard way.
Having data in the cloud allows web access to information any time any where as long as you have a compatible web browser and Internet access. Whilst the iPhone is capable of viewing full web pages with things synchronized it makes access faster and cheaper for those unlucky people who does not get free data with their iPhone plan (Thank you O2!).
I have my Email on my iPhone 3G using IMAP. Other options exists including POP, Gmail, Yahoo, AOL, Microsoft Exchange and mobileMe. I will not go into detail about accessing Email on the iPhone since it will retrieve mail from most of the common protocols. The only protocol I see missing is BlackBerry (for obvious reasons).
I have most of my “diary” data synchronized to Google which includes my calendar and contacts. I use Thunderbird with Lightning add on to get calendar functionality into Thunderbird and Google Calendar Provider to get the calendar to sync with Google Calendar. I use Spanning Sync on the mac to get it to sync with iCal. I have yet to get a solution working for Linux but with Google Calendar being web based it makes it easy to view, edit and save changes using a compatible web browser.
I had my contacts in Thunderbird synchronized with Google using Zindus add on. The problem with synchronizing Thunderbird Address Book with Google is that Thunderbird creates new contacts for people who you send / receive emails from which you may or may not want on your phone.
The only way to make calendar synchronization platform independent is to use Microsoft Exchange. Currently the iPhone SDK API does not allow access to contacts and calendar for any third party application. Free Microsoft Exchange services are available on the web but the one I am using for both calendar and contacts is NuevaSync. It supports Google Calendar, Contacts and Plaxo contacts. There are options for Email and Tasks but they do not work yet. The service is still in beta.
Warning: Make sure you back up your calendar and contacts before trying anything.
Create an account with NuevaSync. Once complete set up the calendar and contracts with either Google or Plaxo. Google offers an API so you would have to log into Google and grant the web service access to Google Calendar / Contacts. All of these instructions are displayed on screen. Once NuevaSync has been set up to sync with Google / Plaxo you need some information into your iPhone to get the sync’d data.
Go to:
Settings > Mail, Contacts, Calendars > Accounts
Click “Add Account…” > “Microsoft Exchange” and enter the following information:
Email – Your email address used to register with NuevaSync
Password – NuevaSync password
Server – www.nuevasync.com
Description – Can be anything you want
Click Next.
It should end up on the Exchange settings. Turn on the appropriate Contact and Calendar slide boxes to turn on the synchronization of these services with NuevaSync. Once that is done allow about one hour for it to pull down the data. My calendar appeared straight away but my contacts took couple of minutes.
NuevaSync
Ian Fernando Article
Alternative Life Hacker Microsoft Exchange Synchronization