Google Contacts API Update
Google announced a new version, 0.3, of their contacts data API yesterday. It adds a significant amount of flexibility, several new fields, and enhances existing fields. Some of the major changes include:
- Structured Postal Addresses – It is now possible to keep the structured address fields that Thunderbird has without converting them.
- A birthday field – I am currently working on enhancing the birthday field that will be present in Thunderbird 3, so the birthday values will be synchronized by default. If you use Thunderbird 2 the values will still be stored and displayed once you upgraded to 3.
- Website fields with various types (list)
- More phone number types
- A nickname field
It doesn’t look like all of the changes are available in Gmail yet, but you can see a few of them here.
I am going to start working on Version 0.3 sometime this week which will use the new API and hopefully include some of the most frequently requested enhancements. For those of you familiar with Bugzilla, I have a bug tracking my changes. I am going to focus heavily on Thunderbird 3 starting with version 0.3 and may drop support for 2 with future versions. If you are opposed to this please let me know and I will reconsider.
Here are some potential features. Please keep in mind that I have a full time internship that involves programming and am starting an online class soon, so I may have to delay some of these. The links are to bugs where I will track my progress.
- Code refactoring. This isn’t the most popular feature request, but I would like to like to reorganize the existing code with the new API and these enhancements in mind.
- Contact photos. I am working on contact photos in Thunderbird 3 and have a modified version of gContactSync 0.2.4 that will download photos from Google when adding contacts for the first time. Due to time constraints, 0.3 may be limited to downloading photos only in TB 3.
- Synchronizing all fields that only Thunderbird has and allow for customization of that data.
- Adding a new ‘Relation’ field. This describes the relationship between you and the contact (brother, sister, mother, father, child, coworker, etc.). I haven’t found an existing request for Thunderbird in Bugzilla, so maybe I could add it in Thunderbird rather than just gContactSync.
- Several more types of phone numbers. (list)
- Website field types, and possibly more fields.
- More advanced synchronization with a more intuitive wizard (pick an account, then all groups w/ mailing lists, one group, or no groups/all contacts, plus a few options). Syncing individual groups with address books instead of mailing lists would prevent nearly all error reports that I get.
- A button or context menu to synchronize only one directory.
There have been a few new versions of gContactSync 0.2. It is currently up to version 0.2.3 that handles mailing list bugs a bit more gracefully. Download.
Since the development of 0.3 is going to take some time, I am going to slow down development of 0.2 and let it get translated to more languages.
- ZaZy was kind enough to translate gContactSync to Italian (it). Updates to the locale will be in 0.2.4
- A Russian (ru-RU) translation is being worked on courtesy of Glk63 on BabelZilla.
- A French (fr-FR) translation is in progress by afroxav. Another translation was done by LaGrange.
- Mailing lists are evil. Just kidding, but they can be broken easily rending them (and their parent address book) useless. The cause of nearly every error report I have received so far is directly related to mailing lists.
- The nobody<id>@nowhere.invalid workaround helps but it is still possible to break mailing lists with this workaround.
- People would like to see gContactSync in their native language.
- People have good ideas and valuable suggestions. I have received a lot of feedback and requests. While I don’t have the time to implement every suggestion, I can at least try to add the more popular suggestions
- Creating a forum was a good idea.
Helping with Development
Or if you are good with icons and could make at least a sync button image I’m sure everyone would appreciate it.
As of 2 minutes ago, my extension now appears to work in Thunderbird 2 after some fun with nsIEnumerator and nsISupportsArray. The array documentation didn’t show the AppendElement method which, combined with [notxpcom] and [noscript] caused me a headache until I tried it. It also works in Thunderbird 3 with or without the patch from Bug 413260 applied.