136 lines
4.4 KiB
Plaintext
136 lines
4.4 KiB
Plaintext
|
|
The Evolution Project specification
|
|
Miguel de Icaza.
|
|
|
|
|
|
* Introduction
|
|
|
|
Evolution is a project aiming at providing the free software
|
|
community with a professional, high-quality tool for managing
|
|
mail, appointments, tasks and other personal information
|
|
tools.
|
|
|
|
We want to make Evolution a system that addresses our needs
|
|
(the free software development community) and we believe that
|
|
by addressing our needs, we will provide a system that will
|
|
scale in the years to come for other users that are just
|
|
starting to use computers and the internet.
|
|
|
|
The main objectives of Evolution are to provide these powerful
|
|
features, and to make the user interface as pretty and
|
|
polished as possible.
|
|
|
|
Evolution is a GNOME application.
|
|
|
|
Evolution will copy the best user interface bits and the best
|
|
ideas and features found on contemporary groupware systems.
|
|
|
|
* The overall organization
|
|
|
|
A bar similar to outlook provides shortcuts for accessing the
|
|
various resources managed by Evolution: mail folders,
|
|
contacts, tasks, journal entries, notes, messages and other
|
|
user-defined destinations.
|
|
|
|
* User interface widgets
|
|
|
|
** The ETable package
|
|
|
|
This package provides a way of displaying and editing tables.
|
|
|
|
Tables are displayed based on a TableColumn definition that
|
|
defines the layout used for the display. Table Columns can be
|
|
nested, and the package does grouping of information displayed
|
|
according to the criteria defined there.
|
|
|
|
This is used in multiple places troughout evolution: it is
|
|
used for the Mail summary display, for the TODO display and
|
|
TODO new data entry and for the address book.
|
|
|
|
Nesting in the address book can be performed on various
|
|
fields. For example, a first level of nesting could be
|
|
"Company" and a second level would be "Country" the result is
|
|
a 2-level tree that can be collapsed expanded and contains the
|
|
information sorted/grouped by those two criteria.
|
|
|
|
The user interface for this will be copied from Outlook: the
|
|
possibility of adding and removing fields with drag and drop
|
|
as well as grouping using drag and drop.
|
|
|
|
* The Mail system
|
|
|
|
** The Mail sources
|
|
|
|
The mail system will support 4 sources of mail:
|
|
|
|
POP3 (transfer to a local file).
|
|
IMAP
|
|
Local mbox format in $MAIL.
|
|
Local mbox format that have other delivery points.
|
|
|
|
On top of that, it will be possible to browse existing mbox
|
|
archives (and possibly other formats in the future, like
|
|
Mailbox and Maildir).
|
|
|
|
** Storing the mail
|
|
|
|
Mail that gets incorporated into the system is stored in mbox
|
|
format, and summary files are provided for quick access to the
|
|
files. No modifications to the file on disk is performed (I
|
|
am not quite sure about this, perhaps we want to add the
|
|
status flags and some method for adding metadata to the mail).
|
|
|
|
Summary files are rebuilt on demand or rebuild if the mbox
|
|
file and the summary file have got out of sync.
|
|
|
|
A Metadata system that will enable us to attach information to
|
|
a message will have to be designed and implemented (enabling
|
|
users to add annotations to mails, and special keywords and
|
|
flags in a per-message fashion).
|
|
|
|
** Virtual folders
|
|
|
|
Virtual folders will enable users to read/browse their mail in
|
|
new ways: by specifying search criterias, these folders will
|
|
contain messages that match the criteria given.
|
|
|
|
There is more information about this in the libcamel
|
|
directory.
|
|
|
|
We will index all headers from a message, and possible the
|
|
contents of messages and keep those on a separate file, to
|
|
enable users to query their mail database.
|
|
|
|
** Mail summary display
|
|
|
|
The summary will be displayed using the ETable package, to
|
|
enable users to add a number of sorting criteria and various
|
|
display methods for the summary view.
|
|
|
|
The Outlook methods for displaying will be present on the
|
|
system.
|
|
|
|
Message threading will be supported in Evolution.
|
|
|
|
** Message display engine
|
|
|
|
We are going to be using a combination of
|
|
libcamel/limime/libjamie to parse messages and render them
|
|
into an HTML buffer.
|
|
|
|
* The HTML engine
|
|
|
|
The GtkHTML engine will be used to display messages, and will
|
|
be extended to support a number of features that we require:
|
|
internal handling of characters will be based on Unicode
|
|
|
|
* The message composer
|
|
|
|
Regular features found in composers will be added: connecting
|
|
the composer to the address book, support for drag and drop
|
|
for including attachments, editing the message, archiving
|
|
drafts and archiving messages sent.
|
|
|
|
We will probably be extending the GtkHTML engine to support
|
|
editing of HTML text.
|