Let's Push Things Forward

Maximizing social utility for fun and (modest) profit

Previous Entry Share Next Entry

New features in Folks 0.4/0.5

A lot has been going on in the world of Folks lately, so it's time for another update. There have been a ton of fixes and clean-ups in the code (including some well-documented API breaks). We're narrowing down on another set of API breaks in our unstable 0.5.x branch before starting the stable 0.6.x branch. Our goal is to have very few (if any) API breaks after that.

Perhaps more importantly, we've added a lot of great features in the last few months. Read on for more (heavily-summarized) details.

I'd like to thank Intel for both sponsoring most of this work and understanding open source development. We were able to work in the open very early on and keeping things upstream was a goal, not a challenge. All the work is LGPL 2 or 2.1 and none of it requires copyright assignment.

New Fields

One big focus in 0.4.0 was adding a number of address-book-type fields, like:

• Role (within an Organization)
• Birthday
• Notes
• Postal address

In all, contacts from Folks support most of the generally-useful fields you'd find in a typical address book.

The remaining features are new as of version 0.5.0.

Primary backend

A design goal of Folks, since the beginning, has been to simplify the way writes happen. There is, at most, one (primary) backend which provides contact linking hints to the aggregator and which stores address-book-like contacts (which are generally fully-writable for all supported fields). This has historically been (hard-coded as) our simple key-file backend but it is now configurable.

Tracker backend

The new Tracker backend acts as an address book and supports both reads and writes. Creating this help fill out our support for local, address-book-like contacts, so that portion of Folks is in decent shape now. It can be set as the primary backend, though the default remains the key-file backend. My colleague, Raúl, did a great job putting this and a sizable set of tests together.

libsocialweb backend

We've also added a backend for libsocialweb which lets us expose contacts from various web services through Folks. This required a little work on libsocialweb itself to add a Contacts interface and implement it for a handful of services (so far, Facebook, Flickr, Twitter, and Last.FM). Alban picked up on Marco's work in this area, added the last three services and implemented the newer Folks interfaces for the libsocialweb backend.

I think this area is especially exciting, since it lets us include contacts' details from a very wide range of services in the future, just by adding more services to libsocialweb.

Potential Matches

A long-requested feature has been the ability to hint matches between various contacts within Folks (since it's tedious to have to manually discover them all yourself). This clears the way for us to make linking nicer in Empathy.

In the future, we'll be looking into making this process even easier.


Our handy folks-inspect utility has gotten a bit of attention to support the fields added since 0.4.0, making it even more useful for debugging.


I've followed up on Marco's initial QtContacts bindings for Folks (QtFolks) by adding additional fields and supporting contact adds, edits, and removes. The git respository is here and release tarballs here (for now).

I hope we can get our KDE-using friends interested in Folks now that we've got some decent Qt bindings!


The moment everyone has been waiting for:

(In case your browser can't play WebM: download here; YouTube version here)

The demos in the video are done through the QtFolks demo program because Empathy filters out non-IM contacts (at least as of this writing). But we'll certainly be supporting all Folks contacts in the Gnome 3.2 contacts features.

  • 1

Video not playing in Firefox 4

I'm not sure if this is a problem on my end or yours but the embedded video is not playing in Firefox 4.

Re: Video not playing in Firefox 4

Hmm - not sure. I tried it out in Epiphany (since I didn't want to move on to FF4 yet).

I'm quite sure my HTML is correct. Maybe FF4 doesn't include WebM support by default on some platforms?

  • 1

Log in