Sheeple, One Semester In

2010.02.26 in code

Last semester, during RCOS, I started working on a contact-management application for GNOME (Seed is mostly in maintenance mode, at this point), called (for lack of a better name, at the moment) Sheeple. I keep a carefully-organized, constantly-updated address book, so I spend a bit of time in whatever contact-management program I'm using, so this is something that matters a good bit to me personally.

The de-facto application for managing contacts on GNOME at the moment is, of course, the behemoth personal-information-management suite, Evolution. Evolution has a long history, and is a large codebase, written by a lot of people, over a very long time. It also looks a little bit outdated:

Not a pretty sight. Not to me, anyway, not in 2010, when my alternative is:

Another fundamental difference between the two is in their editing functionality. Address Book provides the ability to edit contacts inline; Evolution requires you to edit contact information in an overly-limited (while it can store more than four email addresses per contact, you can only edit four in the editor window... what!?) separate window.

I decided to start working on a more Address Book-like application for GNOME. After a bit of deliberation, I decided to have it backed by Evolution's evolution-data-server, so that people's contacts would transition over smoothly. This might have been a mistake, because the EDS API isn't beautiful, and there are very few complete, working bindings, but I've made it mostly work.

It's written (mostly - the EDS-related code is straight C, unfortunately) in Vala. It's my first Vala program, so it's been a learning experience — Vala seems nice, though there are a few bugs (I've reported one glaring bug which was acknowledged, though it hasn't been fixed yet), and some bindings are a little sketchy.

During the development, I discovered that Nokia was developing libosso-abook (for Maemo), an address book library that provides a lot of the functionality that I was planning for libsheeple. Unfortunately, libosso-abook is currently closed-source. Not cool, Nokia... Anyway, if they open-source it (it's under consideration, at the moment), I'll probably ditch most of libsheeple and base the Sheeple UI on top of that, because it's a ton of annoying code already done.

After the end of last semester, I had the following:

Lots of things are broken, but it's something. I don't have working syncing yet, and I believe writing back to EDS is broken at the moment (so no persistence of changes!), but those are things I plan on working on this semester...

There are slides and stuff available, too.