1999 Linux Symposium

the gnome mailer


1999 home

The GNOME Mailer, utilizing the Bonobo Component Model

The GNOME Mailer will support all major mail backend formats and protocols, will provide an intuitive and attractive user interface, and will support sophisticated message organization and threading technologies. The mailer will also integrate tightly with the other groupware components, including the contact manager and the calendar. Our intent is to beat Microsoft Outlook.

The GNOME Mailer is not a research project; it would be inappropriate for us to devise an entirely new design concept and wait to find out whether or not it works. Our design is based on a number of proven elements of other mail systems, including the DEC Pachyderm research project, Sun's JavaMail API definition, and Mozilla's Grendel mail program.

The design of the mailer is centered around the Bonobo component model. The GNOME Mailer will be built out of a number of self-contained well-defined components, each of which solves a very specific problem. These components are then glued together and collectively act as the mailer.

There are two main parts to the GNOME Mailer: The Mail Service Component and the user interface component, or frontend. The mailer's frontend communicates with the mail service across a process boundary via CORBA. The user interface is thus decoupled from the actual mail storage. Splitting the user interface from the mail storage makes it possible to plug in any number of mailer frontends. So, for example, it will be possible to outfit the mailer with a text-based interface, a web-based interface, or an IMAP proxy which would allow legacy mail clients access to the powerful semantics of our mail storage service, described in greater detail below.

The Mail Service Component handles access to the mail backends -- the files and network servers which actually store the mail. Its interface provides methods for fetching mails and mail folders and for manipulating the backends. The Mail Service Component has a native backend which can store mail in a way particularly tailored to the GNOME Mailer. This is described more below.

The mail frontend, which includes the GUI, is made up of a number of components. One component, the Mail Summary View component, handles displaying mail folders and allowing the user to manipulate them. The Mail Message View component is designed to display a single mail message. To do this, it uses a large number of small components which are each good at displaying one particular type of mail object, be it text, attached HTML, an attached image, or things like business cards. These small components are referred to as Mail Object Components, and are embedded into the Mail Message View component using the Bonobo embedding facilities. Finally, the Mail Composition Component provides the GUI that is used to compose messages and send them. The Mail Composition Component communicates with the Mail Service Component to actually send the mail.

The job of the main GNOME Mailer program is to tie all of these components together in a coherent way. The main program handles component initialization and sets up the intercomponent communication paths. This part of the mailer will be written in a widely-known scripting language which will be outfitted with CORBA bindings. Using a scripting language for the main program makes it easy for hobbyists to begin hacking on the mailer quickly, and to get a complete view of the mailer's design. The main program manages the behavior of the user interface, dispatching to the proper interface methods when the user triggers an event and manipulating the graphical display as appropriate. Controlling the UI behavior in a script makes it especially easy for hackers to tweak the user interface.

© 2000 Linux Symposium.  All Rights Reserved.