August 11, 2006

Micro-Evolution: Dates and Contacts

Author: Nathan Willis

The developers at Opened Hand have released a pair of lightweight, low-resource applications for calendaring and address book management. They were designed to run on small embedded systems such as Nokia's 770 Internet Tablet and the Sharp Zaurus -- but that doesn't mean you can't use them on your desktop Linux box just as easily.

Both Dates and Contacts (the calendar and address book, respectively) are built to interact with Evolution Data Server (EDS). EDS was originally written for Ximian's Evolution email/calendar/addrebbook/tasklist client to expose Evolution's database of contacts, calendar events, and email desktop-wide, thus allowing easy integration with other applications.

For a long time, a number of GNOME apps -- such as the clock/calendar panel applet -- have used EDS without relying on Evolution. Dates and Contacts do the same thing; Dates uses libecal and Contacts libebook. While neither Opened Hand app sports the advanced features of Evolution or competing large groupware apps, they are small, fast, and easy to use.

Getting started

You can download tarball releases of version 0.1 of both applications from Both should compile on any system with up-to-date GNOME development packages (in particular, look for a package named evolution-data-server-dev).

Launch contacts from the command line. What you get is a simple, two-paned window with an alphabetical list of contacts on the left and a detail view to the right. The bottom of the Contacts windows has a "live" incremental search box that displays search results in the left pane as you type.

If you already use Evolution, Contacts will automatically read in your existing contact database -- and changes you make within either app will be visible in the other. If you use Thunderbird or another client to manage your address book, it is painless to import the data with Evolution's built-in import wizard.

This release of Contacts seems to support multiple phone, email, and address fields for each contact, plus one nickname, photo, homepage, and note per contact. It does not read other information (such as birthdays), but it does not destroy it from the database.

Dates and Contacts. Click to enlarge

Contacts exists entirely as a single window, regardless of what operation you are performing. That means, for instance, that opening up a contact to edit its details replaces the contents of the main window, rather than opening a child window. No doubt that is the result of targeting embedded systems.

Dates also lives entirely within a single window. The main pane is a calendar view; at the bottom right are a pair of zoom-in/zoom-out buttons. Clicking on them lets you switch between year, month, week, day, and detailed day views -- an interesting interpretation of the "zoom" metaphor. You can add events with one mouse-click, and rearrange and resize events by dragging them around on the calendar view. As with Contacts, Dates picks up events already in your Evolution calendar.

Dates is obviously still a work-in-progress. The current release has a grayed-out repeating events tab, which may be a deal-breaker for some users. And some calendaring features supported by Evolution -- such as remote subscriptions -- are not implemented at all. Dates seems to pick up the multiple personal calendars that you can define and assign colors to in Evolution, but it does not let you create new ones.

Nevertheless, I found the interface to be well-thought-out and easy to use, which for daily use is more important. Almost all implemented operations can be accomplished with the mouse -- a necessity for mobile platforms, but a nice convenience on the desktop as well. I look forward to trying out the more complex features as they get added in future releases; hopefully the additional complexity won't come at the cost of ease of use.

Don't miss the bus

Along with Dates and Contacts, Opened Hand also sponsors an accompanying project, embedded EDS. The traditional EDS uses Bonobo and CORBA for interprocess communication, but embedded EDS uses's lower-overhead D-Bus instead.

You can download and compile the embedded EDS on your desktop machine to try it out. Currently you have to check it out from the public Subversion repository (the instructions are on the project page), and make sure that you compile it with the --with-dbus flag. And don't worry; you can have both the standard EDS and the D-Bus-enabled embedded EDS installed and running simultaneously on one system without trouble.

You probably won't notice much difference between the D-Bus and non-D-Bus-enabled versions of the software (certainly not in terms of speed), but as development progresses on Dates and Contacts, they may make changes to the API, so in the future you may get access to additional features with the D-Bus version.

Evolution has a lot of great features, but one of its weaknesses is its all-or-nothing approach. I don't like the way it handles email, and using it as just a calendar seems like tremendous overhead. On the other hand, many of the other calendaring apps available for Linux are far less stable. Dates is a nice, middle-of-the-road solution. And Contacts is fast and easy to use -- a simple address book app that packs in more than its simple address book competitors.

Click Here!