aboutsummaryrefslogblamecommitdiffstats
path: root/help/Design
blob: ae5cb911eb1af6b612b8329d31b8255f4bb21d9b (plain) (tree)






































































































































                                                                      

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.