The Mozilla
Organization
At A Glance
Feedback
Get Involved
Newsgroups
License Terms
Newsbot
Developer Docs
Roadmap
Projects
Ports
Module Owners
Hacking
Get the Source
Build It
Testing
Download
Bugzilla
Bug Writing
Tools
View Source
Tree Status
New Checkins
Submit A Bug
FAQ
Search
mozilla mail/news architecture

This is an overview of the components involved in mozilla mail/news, with the main contact person for each area. Although it's ok to send mail, we encourage everyone to use the mail-news newsgroup. If you have a question, chances are other people have the same question.

Architecture

Our general plan is to bring the critical pieces of Messenger over to mozilla/5.0 and rewrite/reorganize code as we need to in order to fit in. Some of the major pieces of work are described here.

Networking (owner: Scott MacGregor)

We are porting all of our protocol handlers to work in the new netlib world. We are doing two fundamental things to make this work:

  • We are using a "proxied stream" interface between the netlib thread and the protocol module. So all of the code you're used to seeing in mkpop3.c, mknews.c, etc. will be living on the mozilla thread, and there will be a stream interface across the thread boundary to netlib.
  • We are converting all of the "up-calls" from the protocol handlers to the rest of the backend (see libmsg) into XP-COM interfaces to avoid tight coupling between components.
  • We are converting our big pile of IMAP code into the new world. (owners: David Bienvenu, Scott MacGregor, Jeff Tsai)
Database (owners: David McCusker, David Bienvenu)

We are developing a new database strategy for mail/news (summary files and address books).

  • We have developed a database abstraction called MDB which we hope will be general enough to allow databases great and small to live under its API. Netscape's mail/news group will be providing a relatively simple text-based database under that API for Messenger 5.0.
  • Our 5.0 implementation of MDB is called MORK. If you're interested in mail/news databases, lots of design discussion is happening in the mail-news newsgroup
User Interface (owners: Alec Flett, Candice Huang, Jean-Francois Ducarroz)

We are committed to the XPFE strategy and toolkit. We do not expect to write much, if any, platform specific UI using MFC, PowerPlant, or Motif. Our user interface is written in XUL and CSS. We are working on a new visual appearance for mail/news right now.

RDF Data sources (owner: Scott Putterman)

In mozilla, all mail/news items (e.g. messages in the thread pane, folders/newsgroups in the folder pane) are represented as an RDF graph composed of nodes and properties. The classes which manage the graph also fulfill two other roles

  • Command processing. Most of the commands which can be run on mail/news data are dispatched by RDF's "composite data source" down to individual data sources like mail/news.
  • View layer. The order of view in the UI (e.g. sorting, message threading) is the order that data sources present the graph to RDF. So, in the model/view/controller paradigm, we consider our DB to be model, our data sources to be view, and the XUL FE code to be controller.
libmime (MIME Parsing) (owner: Rich Pizzarro)

The client side libmime has been reworked to provide mime parsing for Messenger 5.0. This is a more modular component with an XP-COM interface rather than a statically linked library as was the case in previous releases. This module will implement a generic stream converter interface that is currently supported. Also a part of this development is the creation of the ability to write Content Type Handler Plugins for libmime. This effort can be seen at the following link: Content Type Handler Plugins

Mail Composition Back End (owner: Rich Pizzarro)

The Mail Composition back end is responsible for the assembly and creation of RFC822 messages to be delivered either via SMTP or NNTP services. You also have the ability to save RFC822 files to disk. Full documentation on the new interfaces is available at the following link: Mail Composition Back End
 

Copyright © 1998-2000 The Mozilla Organization.
Last modified June 28, 1999.