Stuff Michael Meeks is doing

This is my (in)activity log. You might like to visit Collabora Productivity a subsidiary of Collabora focusing on LibreOffice support and services for whom I work. Also if you have the time to read this sort of stuff you could enlighten yourself by going to Unraveling Wittgenstein's net or if you are feeling objectionable perhaps here. Failing that, there are all manner of interesting things to read on the LibreOffice Planet news feed.

Older items: 2021: ( J F M A M J J A S O N D ), 2019, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, legacy html


Evolution Express (for MeeGo)

Some ramblings about the creation of a new user interface for mail, calendaring etc. specifically for MeeGo; something I've been working on, amongst other things, for the last three months.

Why Express Mode ?

Initially for Moblin 2.1 we tried a more invasive re-working of the user-experience: called Anjal. That was not uniformly positive, missing many features (by design), and didn't have enough time to mature. As such, it was decided by the MeeGo team that we should try a new approach. This would take Evolution, and adapt its UI for the netbook screen-size, tweaking all the relevant defaults. We would merge the best features from Anjal, and then build from there. The result is some great MeeGo, netbook goodness, despite being done at high speed over three months.

It is important to realise that ~all netbooks have a 1024x600 screen - giving very, very few pixels - particularly vertically (most apps are tuned for at a minimum 1024x768) and as such lots of tweakage was needed to save vertical space. As Linus' Coding Style document suggests - vertical space is a non-renewable resource, and we need to conserve it: just adding scroll-bars is an ugly cheat. This quest for vspace is nastily exacerbated by the terrible touch-pads that so many net-books have, meaning we need lots of extra padding around widgets to avoid them being clicked by accident.

Who ?

The Evolution team of course ! None of this would have been possible without lots of help from Novell, RedHat, Intel, Collabora, and all of the other guys who have worked so hard over the years making it rock: thank you, it's been dead fun working with you all.

Having said that, there were some particular stars in the team here here: Chen who implemented IMAP-X (substantially improving IMAP interactivity). Federico for incisive bug fixing and squashing of the UI to fit into the available pixels. Matthew Barnes fixing defaults, moving search into the toolbar, and re-factoring and cleaning code. Srini - who wrote the original Anjal code, and advised / fixed issues, and whom with Ross Burton did the hard grind to get the evolution-data-server (e-d-s) port to DBus up-stream. Thanks too to Colin and Thiago who speedily reviewed and merged a core DBus threading fix without which our interactivity was terrible. Naturally the UI work was based on great advice and design from Nick Richards and Claire at Intel, and new icons from Hylke Bons & Jakub Steiner. Finally, I did some real Evolution hacking myself, which was fun after an eight year break, and I was dead pleased: the code base is far cleaner, more beautiful, and hack-able than it was back then; good stuff.

Where ?

In contrast to Moblin 2.1 which shipped with a very heavily patched e-d-s, Evolution etc. to make Anjal work, the code for Evolution Express is all up-stream. Matthew merged the 'express2' branch (based on gnome-2-30) into master yesterday - so all of this, and more, should ship in Gnome 3.0. The project plan (for what it is) is in the wiki here.

Simple setup and use

The first thing missing in Evolution was a simplified user experience. To this end, we split the Calendar from the Mailer + Addressbook. Of course, both are still implemented by the same process, but we tweaked the code to allow launching the Calendar without configuring Evolution first, and to avoid E-mail related interactions there. Providing separate .desktop files for each of the three also helps make them more findable in the application launcher.

Then of course, we want a simple first-time setup. Re-using the nice Mozilla generated provider database (thanks guys), we merged Srini's Anjal account setup code (which is now also available as an out-of-process capplet - with Evo updating properly on changes). This gives a great first-start experience:

first start wizard page 1 first start wizard finish page

Simplified Mailer

Firstly, Express mode is better when running under MeeGo - it will detect that we are using the netbook's window-manager, and maximise windows, and turn off the (un-necessary) Window-manager decoration, to save vspace. If you see no window decoration in a screenshot - that is because there is none.

Auditing the menus, and toolbars - it turned out there was a load of cruft that was not that useful for a typical netbook user, and possibly downright confusing. We added a semi-generic way to special case the UI XML descriptions for Express mode, and re-organised and simplified the 'search' bar into the toolbar to save vspace. We also dropped the huge, scary 'Cancel' button, since operations can be cancelled from the status bar anyway. The result looks like this:

mailer view

We also did a large, and hard-to-notice chunk of work to simplify the preferences dialog (so they actually stay on the screen), we also dropped preferences that are not relevant to the component, eg. the Calendar preferences from the mailer:

mailer preferences

The component switching functionality was discarded from the mailer, instead - we always launch the mail view - and a button to access the addressbook added to the toolbar. That view looks pretty similar to the existing Evolution view, but we had to cleanup and compress the Contact editor to get it onto the screen, that looks like this:

shrunken contact editor

Simplified Calendar

The calendar, luckily was sufficiently simple that we could remove the menu-bar altogether, (thus avoiding the horrible theme bug you can see in the close button jammed next to the menu-bar in the mailer shots). We also dropped the status bar (as in the addressbook) - since it is not that useful here. The result looks like this:

pretty new calendar view

The biggest beneficiary of removing extraneous component's settings is the calendar's property dialog - which looses its icon selector. We also removed the ability to manually select a timezone, instead always following the system timezone.

calendar prefs

The appointment editor, now so easy to trigger via the MyZone, was also extensively overhauled. For a long time this has been rather an unpleasant dialog. Now all Evolution users will get an improved tabbed look, that exposes more useful functionality in an easy-to-find way, rather than having some toolbar icon that pops a separate dialog out:

appointment editor

Panel integration

Not strictly Evolution of course, but Srini and Rob Bradford did some great work making the MyZone panel, and the clock drop-down work well with evolution-data-server to allow a pretty, integrated view of of what is going on. The time drop-down looks like this:

mailer view

Future work

There are no laurels to rest on here; work continues cleaning up the visual look (somewhat hindered by a last minute change of MeeGo theme). And implementing a list of missing feature and improvements. The wiki contains a plan. All help with that gratefully received - Evolution (these days) is a great place to start hacking, and there are lots of low hanging fruit around tweaking and improving the UI, not just for netbooks. Mail me, or check out Gnome Love to get involved.

Clearly the netbook work points to some of the UI deficiencies that we have suffered in Evolution for a while. Some of the work will appear in the stock version of Evolution, other changes I hope will inspire new, and better ways of doing PIM user interface in both products and of course evolution --express will allow you to check-out the work in GNOME 3.0.

For me, it's been a real pleasure to get involved in contributing to Evolution, and help to lead this work. Incidentally, (to whom it may concern), this very afternoon I shall be generously accepting free drinks at the aforementioned appointment from around 5pm-ish.


My content in this blog and associated images / data under images/ and data/ directories are (usually) created by me and (unless obviously labelled otherwise) are licensed under the public domain, and/or if that doesn't float your boat a CC0 license. I encourage linking back (of course) to help people decide for themselves, in context, in the battle for ideas, and I love fixes / improvements / corrections by private mail.

In case it's not painfully obvious: the reflections reflected here are my own; mine, all mine ! and don't reflect the views of Collabora, SUSE, Novell, The Document Foundation, Spaghetti Hurlers (International), or anyone else. It's also important to realise that I'm not in on the Swedish Conspiracy. Occasionally people ask for formal photos for conferences or fun.

Michael Meeks (michael.meeks@collabora.com)

pyblosxom