Canonical, the company behind the Ubuntu Linux distribution, is planning to overhaul the desktop panel and integrate social networking features in Ubuntu 10.04, codenamed Lucid Lynx. One of the key components of this effort is the Me Menu, which shipped in the Lucid alpha 3 last week.

The Me Menu, which Canonical unveiled in December, provides a unified interface for managing your presence on instant messaging and social networking services. A text box that is embedded in the menu allows users to publish status messages to all of their accounts. The menu also provides easy access to the standard account and identity configuration tools.

The Me Menu expands on the concept of Ubuntu's existing presence menu, which was included in the panel session applet in Ubuntu 9.04. Like the original presence menu, the new Me Menu is designed to work with GNOME's Empathy instant messaging client. When you post a status message in the menu, it will be propagated to all of your Empathy accounts. The social networking functionality in the new Me Menu is powered by Gwibber, my open source microblogging client.

I originally created Gwibber in 2007 with the goal of producing a multi-service social networking application for the GNOME desktop environment. I wanted to be able to communicate seamlessly with multiple social networking services and view all of the content in a combined stream. The project is now relatively mature and has tens of thousands of users. Gwibber was initially proposed for inclusion in Ubuntu last year when Canonical authored its "Social by Default" blueprint. It is included in Ubuntu 10.04 alpha 3, and brings support for Twitter, Identi.ca, Facebook, FriendFeed, Flickr, Digg, and Qaiku.

The new version of Gwibber is significantly more functional and robust. I've spent virtually all of my spare time fixing bugs and adding new features for the next release. One of the most significant enhancements is the multicolumn mode, which can display a series of streams horizontally in columns. Another major improvement is extensive support for Desktop CouchDB, which will enable users to synchronize their Gwibber accounts and configuration data between computers.

I improved Gwibber's user interface by adding a new compact mode for the navigation sidebar and a new toolbar at the bottom of the window that can be used to toggle the active accounts. I also added a new message style based on the Renkoo theme for Adium, which will be used by default in Empathy on Ubuntu 10.04.

Although Gwibber has come a very long way over the past six months, it's still missing some important features that will need to be added to make it competitive with the best proprietary microblogging tools. I'm currently working on adding OAuth compatibility, support for Twitter lists, and experimental nickname autocompletion. Those three features are still under development and will not be included in Gwibber for Ubuntu 10.04. I'm also planning to add support for Google's Buzz service when its APIs are enabled.

Gwibber's biggest weakness is the large memory footprint of the frontend and its relatively slow startup performance. The high memory overhead is caused by WebKit's in-memory caching, which we will fortunately be able to control better in future versions. The performance problems in Gwibber 2.29 are largely a side-effect of the program's dependence on CouchDB. I'm exploring some optimization tactics that could help to address the problem.

Gwibber and the Me Menu

In order to fit the Social by Default blueprint, I split Gwibber's messaging functionality into a separate background daemon that runs independently of the program's user interface. The daemon acts as a service that third-party applications can use to communicate with social networks. It handles all of the heavy lifting and makes it easy for other programs on the desktop to post and consume social networking messages.

When a user posts a message in the Me Menu's status textbox, the message will be relayed through Gwibber, which will publish it on all of the user's configured social networking accounts. The message will also be relayed to Empathy, which will set it as the user's current status across their instant messaging accounts. This feature makes it really easy for users to instantly broadcast their thoughts to every corner of their online presence.

I'm really pleased with the functionality that is offered by the Me Menu, but the implementation still has some weaknesses. It's not particularly well-suited for posting long messages due to the constrained space and the lack of an embedded character counter. These are issues that can be addressed as it matures.

In addition to support for posting status messages and controlling instant messaging presence, the Me Menu also has the ability to launch the account configuration dialogs for Gwibber, Empathy, and Canonical's Ubuntu One service. My friend Ken VanDine, who works on Canonical's desktop team, created a whole new account management tool for Gwibber that is designed to ensure that there is a consistent account management experience between Gwibber and Empathy.

The top of the Me Menu has an identity block that you can click to launch the GNOME desktop's "About Me" dialog. The identity block has a slot for the user's avatar, which will be used by Empathy. The avatar slot is still just a placeholder and isn't functional yet in alpha 3.

Ubuntu 10.04 is a Long-Term Support (LTS) release, which means that Canonical intends to provide updates on the desktop for three years instead of the usual 18 months. During the development cycle for an LTS release, the Ubuntu developers focus on stabilization rather than introducing a lot of new features. Feature freeze is now in full effect, which means that the developers are going to be working primarily on bugfixes between now and the final release in April. The first beta release will come next month.

You can refer to the official release notes for more details about alpha 3. The alpha release is obviously not yet ready for production use, but you can download it for testing purposes from the Ubuntu website.