Wednesday, January 30, 2008

Funambol Community Showcase #2: Yahoo Plug-in

This is the second showcase of Funambol projects. I started this with SyncEvolution a month ago. Today I am showcasing a contacts and calendar synchronization tool, to sync your Yahoo data with a Funambol server. It is a cool project, because it allows you to get your Yahoo data synched on all the devices we support (north of 800, these days... including iPhone and Android ;-)

The developer is Paulo Sergio Lopes Fernandes of Portugal. With his name, he could certainly be a Brazilian soccer player (maybe with a cool nickname, like Pele' or Kaka' or Zico), but he apparently prefers software....

BTW, we have a very active development community in Portugal. Their schools are extremely good. I have been really pleased with everything that has come out of there. Friendly people, good software, decent food. The future Silicon Valley?

Enough with my stuff, let's talk about the Funambol Yahoo plug-in.

Funambol Yahoo Plug-in

By Paulo Fernandes
pauloslf@gmail.com

Overview

The Funambol Yahoo! PIM Plug-in uses the Funambol API to synchronize PIM data between SyncML servers (such as myFUNAMBOL at my.funambol.com ) an
d Yahoo! The objective was to achieve two-way synchronization between both systems. Yahoo! has both a calendar and a contact manager so the goal was to synchronize the events and contacts in Yahoo! with the Funambol server.

Interesting Aspects, Challenges, etc.

My first big challenge was to find a way to interact with th
e Yahoo! server. My first try was to use html scrapping: first, I downloaded the page, then I analyzed the html. This solution had many problems, the first was the amount of data downloaded from server, the other was to create regular expressions to get the data needed from a huge html string.

I decided to look around for other software using Yahoo! services and I discovered the Yahoo! widgets (yes, I know they are quite popular but I am not a Windows user). I thought that the widgets might have a smarter way to access Yahoo! By looking around, I found out that the communication is done via simple XML. With a little patience, I understood the meaning of each xml tag and the links where it should be posted.


Another problem was that whenever two different systems are synchronized, you need to decide if a field in the server is equivalent to a field in the client. For example, Funambol stores email as personal email and business email while Yahoo! uses 'email' and 'alternate1' and 'alternate2'. I had to make lots of small decisions to allow safe synchronization.

Using the Funambol Yahoo! PIM Plug-in

The main purpose of Yahoo! PIM Plug-in is to allow users to keep their Yahoo! PIM data (contacts and calendar) in sync with their phone, Outlook, Thunderbird, etc.

The Funambol Yahoo! Plug-in is very easy to use! The first step is to download it from Sourceforge.

This plug-in exists both for Linux and Windows. On Windows, you just need to download the .exe file, install it and you are ready to go. On Linux, you need to download the .zip file, extract it, and run the script ./runYahoo.sh.


The user interface is the same, on your first run, you will see:

The first step is configure your personal data. To do this, use Edit > Communication Settings, then you will see a screen that allow you to configure your login for Funambol and Yahoo!

After this, you can also specify if you want to sync both calendar and contacts, or just one. To do this, go to Edit > Synchronization settings.


Future Plans

I plan to improve the functionality of calendar syncing and to keep an eye on how the interfaces to the Yahoo! PIM service evolves, to see if there is an opportunity for optimization. I would also like to see it get a new user interface, like the Funambol Outlook Plug-in uses, if anyone is interested, feel free to help :) ).

URL / pointers for more info: Firebug.