Canonical has lifted the curtains on some ambitious plans to reinvent the GNOME panel. The changes, which could potentially debut in the next major version of Ubuntu, will help simplify the desktop user experience and clean up superfluous panel clutter. Although the proposed changes look very promising, getting third-party application developers to integrate with the new panel functionality could prove challenging.

Canonical has been working on an incremental panel overhaul under the umbrella of its Ayatana desktop enhancement initiative. The company introduced a number of experimental changes to the GNOME panel in previous versions of Ubuntu. These changes include the messaging indicator applet and instant messaging status menu. Ubuntu 10.04, which is scheduled for release in April, will take this tinkering to the next level with a more holistic overhaul. Canonical plans to produce a new messaging status interface for the panel called the Me Menu and also aims to replace the icon notification area with a more modern streamlined menu system.

The underlying technical design of the notification icon area replacement is based largely on KDE's Status Notifier specification. The KDE community recently submitted the specification to the FreeDesktop.org interoperability project with the aim of making it a desktop-neutral standard. Canonical views the nascent specification as a promising alternative to the current notification area and has elected to adopt it rather than starting from scratch. The company's desktop team is actively developing a GNOME implementation of the specification. It will be used in Ubuntu 10.04, but they hope that it will also be adopted by the upstream GNOME community.

Ted Gould, a software engineer at Canonical who played a major role in developing Ubuntu's messaging indicator menu, wrote a blog entry this week to describe the scope and intent of the new status notifier project. The goal is to completely replace the current notification area panel applet, which is also sometimes referred to as the system tray.

"For too long on the Free Software desktop there has been a systray that is simply out of control. It provides for an arbitrary window with arbitrary behavior that developers have used arbitrarily. This provides a difficult interface for users as they don't know what to expect," wrote Gould. "Enough bitching. We're going to fix it."

The current notification area panel applet uses the System Tray Protocol Specification, which was originally authored in 2002 by Havoc Pennington. This legacy spec uses X11's XEmbed protocol to allow applications to dock their icons in a container that is supplied by the desktop environment. This approach is an anachronistic hack that is sorely in need of modernization. The new approach, as defined by KDE's Status Notifier specification, will use the D-Bus interprocess communication protocol and enforce a much higher level of consistency in how status icons are used.

In the notification area, each individual application will be represented by a top-level menu item. This approach will make it possible for the entire notification area to be treated as a single combined menubar. To make it easy for third-party application developers to take advantage of the new functionality, Canonical has developed a simple library, called libappindicator, that wraps the D-Bus API. This library can convert a conventional Gtk+ menu widget into a status notifier menu.

Many applications that use the notification area today already have a context menu of some kind that is tied to the popup-menu event of the Gtk+ status icon widget. In theory, it shouldn't be particularly difficult for these applications to be adapted so that their existing notification area context menu—with a few tweaks—is handed over to libappindicator. As a temporary measure, legacy support will be available for applications that still use the old XEmbed style of notification icon.

In practice, there will likely be some edge cases that don't fit entirely within the parameters of the new notifier specification. One could argue that such edge cases shouldn't be present in the desktop anyway. The tight constraints of the new system and the lack of tolerance for deviation are potentially advantageous in the sense that it will not permit inconsistent behavior. Not all developers are happy with the current state of the specification, however. Compromises may need to be made in order to accommodate functionality that can't be discarded.

Another challenge for Canonical's plan is the growing maturity of GNOME 3, which promises to bring a far more drastic change to the structure and behavior of the desktop. If the GNOME community's experimental shell—which is currently under active development—eliminates the current panel system, then Canonical's new notification area applet won't get used for very long. This prospect might deter some third-party developers from taking the time to conform with the specification. It's worth noting, however, that Canonical's proposed system would not be hard to adapt to work with the new shell. In fact, using D-Bus instead of XEmbed will make it easier for projects like GNOME Shell to control the manner in which the new notification area is presented.

Me Menu

The second part of Canonical's grand plan for panel perfection is a concept that the company calls the Me Menu. Based partly on Ubuntu's current presence applet, the new Me Menu will serve as a one-stop shop for configuring messaging status and social networks. Designed by Ubuntu founder Mark Shuttleworth himself, the Me Menu is expected to be one of the highlights of Ubuntu 10.04.

Much like the current presence menu, it will offer tight integration with the Empathy instant messaging client, allowing users to control their status and availability settings. It will also integrate with the Gwibber microblogging client to make it possible for users to post status messages to Twitter, Identi.ca, Facebook, and other services directly through a textbox in the Me Menu. Another major goal of the Me Menu is to provide a single access point for account management. The user will be able to use the menu to launch account configuration for Gwibber, Empathy, and Ubuntu One.

As the creator and lead developer of the Gwibber project, I was made aware of some of these plans during the recent Ubuntu Developer Summit. I'm currently developing an improved Gwibber backend daemon that will be lighter and more robust. I'm also experimentally using CouchDB for Gwibber account management with the goal of facilitating account synchronization via Canonical's Ubuntu One service. In collaboration with Canonical, I hope to bring nifty microblogging integration to the Ubuntu desktop. The company is contributing code and usability expertise to the project.

Conclusion

Ubuntu 10.04 will be a long-term support (LTS) release, which means that Canonical will be supporting it with updates on the desktop for three years and on the server for five years. That makes it an important release for the company. The LTS development cycle typically comes with a much stronger emphasis on robustness rather than new features. The Me Menu and new notification area are major exceptions to the rule. As such, the projects will be subjected to a high standard of quality control. If they aren't ready for widespread use, it's highly unlikely that Canonical will ship them in a half-baked state. It won't become clear until a bit later in the cycle if they are going to make it in on time.

Canonical's plans are ambitious and could potentially bring a lot of value to the desktop. I'm obviously biased as a technical stakeholder in some of the plans on the roadmap, but I genuinely think that users will benefit from the proposed enhancements. Canonical's collaboration with the KDE community on the notification area specification is a win for interoperability. The new Me Menu seems like a logical approach for Canonical to move forward its work on messaging integration.