diff options
Diffstat (limited to 'doc/Design')
-rw-r--r-- | doc/Design | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/doc/Design b/doc/Design new file mode 100644 index 0000000000..ae5cb911eb --- /dev/null +++ b/doc/Design @@ -0,0 +1,135 @@ + +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. |