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 and a number of auxiliary CORBA servers that act as the storage backends. Evolution will copy the best user interface bits and the best ideas and features found on contemporary groupware systems. * Evolution internals. Evolution can store its information locally (files for mail, calendar and address book) or on a remote server (imap/pop, cap, ldap). Given the importance of syncing in this modern PDA world, the Evolution GUI acts as a client to the data repository. The data repository is a GUI-less CORBA server called Wombat. Wombat provides a unified access system to the calendar and addressbook data (doing mail is a bit hard, so we are leaving this as a TODO item for now). Wombat's CORBA interfaces are notifier-based. This means that CORBA requests sent to Wombat do not return values inmediately, but rather than for Wombat requests the user has to provide a CORBA object that will be notified of what happened. Yes, that sounds hairy. It is actually pretty simple. It basically means that you submit requests to Wombat, and a callback is invoked in your code when the request has been carried away. This enables a Palm to sync to the repository without having the GUI for Evolution running. It also means that volunteers will be able to write text-based and web-based versions of Evolution (not me though :-). * Evolution as a platform Evolution is more than a client for managing the above information: Evolution is a platform for building groupware applications that use the above components to get their work done. To achieve this Evolution is designed to be scriptable, and it exports its internals trough CORBA/Bonobo. It is implemented as a collection of Bonobo containers and Bonobo components. There is a clean separation between the views (the user interface) and the model (the view). The views that we are writing are GNOME based, and they talk to the Wombat CORBA server. Wombat takes care of notifications to the various clients for the data. * 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). ** Folders Michael Zucchi is working on a system that will let users easily define rules for splitting their incoming mail into physical folders. A further refinement to Folders are Virtual Folders. This basically provides a powerful search and viewing facility for mail. It works like this: when a mail is "incorporated" into Evolution it is scanned and indexed. Then users can enter queries into Evolution that will search the entire database of messages. ** 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. Ettore has been working on adding editing support to the GtkHTML and he is working currently on a Bonobo component that will provide a ready-to-use Bonobo control for embedding into other applications. git.cgi/freebsd-ports-gnome/log/x11-toolkits?h=gnome-3.24&id=a5b78fe72f221277e2e7ae6d9aa2ed30079d316e&showmsg=1'>Expand)AuthorAgeFilesLines * - Fix build with gcc 3.4 [1]pav2004-09-206-6/+65 * BROKEN on 5.x: Does not compilekris2004-09-192-2/+14 * Fix recent XPM buffer overflows as described atmarcus2004-09-174-0/+202 * Fix build with gcc 3.4bland2004-09-056-0/+128 * Utilize X_WINDOW_SYSTEM.nork2004-09-042-7/+6 * - Resign on maintainership of my FreeBSD portspav2004-09-022-2/+2 * - Don't hardcode shlib versionspav2004-08-2960-116/+200 * Update to 2.4.9. This is just a quick fix release that prettyadamw2004-08-266-28/+6 * Update to 2.4.8.marcus2004-08-268-6/+32 * Slightly harder to deal with than ports/70328, but tweak tcl80 and tk80ade2004-08-243-416/+259 * add flu 2.13ijliao2004-08-234-0/+61 * - Sneak CXX into configure script as CC. Configure script ignores CXX and keepspav2004-08-221-1/+2 * Maintainer no longer has time to work on this port. But thanks for yourlinimon2004-08-211-1/+1 * Build shared library with -fPIC to fix build on amd64arved2004-08-201-0/+11 * - Move notif2 from x11-toolkits to x11-themes.pav2004-08-205-49/+0 * My territory, suggested by ijliao. :pclsung2004-08-201-1/+1 * mirror.ac.uk -> mirrorservice.orgvs2004-08-192-2/+2 * - Fix build with gcc 3.4 [1]bland2004-08-185-52/+56 * Fix build with gcc 3.4 (friend of typedef is prohibited by C++ standard).bland2004-08-171-0/+11 * Fix plist.bland2004-08-172-0/+3 * Fix plist.bland2004-08-172-1/+2 * - new options:dinoex2004-08-173-5/+29 * USE_INTLTOOL_VER -> USE_INC_LIBTOOL_VER to let lthack actuallybland2004-08-171-1/+1 * Update to 0.10.1, this fixed some serious bugs of 0.10.0.mezz2004-08-171-0/+7 * Ruby/PanelApplet is a Ruby binding of libpanel-applet.mezz2004-08-164-0/+59 * Ruby/GtkSourceView is a Ruby binding of gtksourceview-1.0.x.mezz2004-08-164-0/+56 * Update to version 2.2.3.steve2004-08-1511-118/+121 * fix build for (at least my) 4.10 (box)oliver2004-08-154-4/+24 * Fix STC build.fjoe2004-08-158-0/+52 * NO_LATEST_LINK=yesfjoe2004-08-154-0/+4 * - Update to 0.10.0.mezz2004-08-155-21/+34 * BROKEN: Unfetchablekris2004-08-151-0/+2 * Update to 2.4.7 which has the fix for the FileSelector bug as well asmarcus2004-08-156-146/+6 * Fix a bug in GtkFileChooser which prevent files to be opened.bland2004-08-154-0/+140 * Fix build with GCC 3.4.2.marcus2004-08-141-0/+10 * - Update to 1.0.1pav2004-08-1416-1738/+30 * Update to 3.3.3lofi2004-08-144-6/+27 * Update to 2.4.6bland2004-08-146-8/+10 * Update to version 1.1.9krion2004-08-144-6/+6 * Fix location of pkg-config-filevs2004-08-132-3/+3 * Update lang/ruby18 to 1.8.2-preview2.knu2004-08-121-0/+414 * Add p5-Tk-ResizeButton 0.01, a resizeable button to be used in avanilla2004-08-115-0/+41 * Update to 2.4.5bland2004-08-103-3/+9 * - Update to 0.4.1. [1]mezz2004-08-094-18/+9 * Use new libtool scheme.mezz2004-08-094-104/+2 * - Update to 2.0.3.mezz2004-08-083-21/+11 * Add to ipv6 category.lofi2004-08-051-1/+1 * Fix warnings when doing make deinstall by applying some @unexecmarcus2004-08-054-2/+8 * Sync the MIME search directories from gnome-vfs. This fixes somemarcus2004-08-054-2/+4 * Move devel/autoconf->devel/autoconf253 and devel/automake->devel/automake15ade2004-08-045-5/+26 * Update to 1.4.1.marcus2004-08-035-147/+19 * - wx-config now points to wxgtk2-2.4.configfjoe2004-08-018-7/+6 * Update to 1.0.6, and use the new libtool scheme.marcus2004-07-273-17/+5 * Register missing CONFLICTS, mostly on xorg-libraries-*anholt2004-07-273-1/+5 * Remove references to mirror.ac.ukvs2004-07-263-6/+3 * * Fix detection of i18n support [1]marcus2004-07-263-31/+6 * - Chase redirectpav2004-07-254-4/+4 * Since this port uses custom LIBTOOLFLAGS, make sure to use its includedmarcus2004-07-251-1/+1 * [1] Only utilize ATK_ROLE_EMBEDDED if it exists.adamw2004-07-243-14/+13 * Bump PORTREVISION as these need to be recompiled with X.Org.marcus2004-07-241-0/+1 * Update to 1.0.5.adamw2004-07-242-3/+3 * - Add the X_WINDOW_SYSTEM={xorg,xfree86-4,xfree86-3} variable to bsd.port.mk,anholt2004-07-246-20/+13 * Retire QT2. QT3 was released a few years ago and QT4 will be released soon.arved2004-07-2315-2364/+0 * Update to 0.5.17arved2004-07-233-14/+11 * upgrade to 1.043ijliao2004-07-212-3/+3 * update to xfce4-4.0.6oliver2004-07-193-3/+4 * Add scx, a GUI library for Scheme.pav2004-07-185-0/+85 * Put back USE_INC_LIBTOOL_VER=13 and lthack to fix build withbland2004-07-161-2/+2 * Whitespace cleanup.bland2004-07-161-1/+1 * - Correct shared library numbers to match current state of GNOME.pav2004-07-1648-0/+448 * - Update to 1.0pav2004-07-1524-304/+388 * Update to version 1.2.7krion2004-07-144-6/+6 * Update to 2.6.0bland2004-07-146-59/+42 * Update to 0.5.1 and fix dependency.perky2004-07-123-6/+5 * - Fix plist after latest libtool changepav2004-07-121-1/+0 * - Portlintpav2004-07-121-1/+1 * Fix LIB_DEPENDS for wxgtk2-utils-devel port.fjoe2004-07-116-36/+28 * BROKEN: Broken dependencykris2004-07-111-0/+2 * Update to 2.4.4bland2004-07-104-8/+6 * Update to version 2.4.0krion2004-07-107-51/+30 * Update to version 2.4.0krion2004-07-105-142/+33 * Apply a big libtool patch to allow porters to use the libtool installed bymarcus2004-07-1050-50/+50 * sorteik2004-07-091-2/+2 * - Fix examples build trigger.bland2004-07-081-5/+5 * Fix LATEST_LINK.bland2004-07-081-1/+2 * Update to 2.6.2bland2004-07-081-11/+8 * Add libgnomeuimm 2.6.0 after repocopy from libgnomeuimm,bland2004-07-086-117/+88 * Change email address for my ports.sem2004-07-081-1/+1 * Patch Makefile.in in pre-configure instead of post-patch:fjoe2004-07-074-4/+4 * - Register conflict with newly added Gtk2 incarnation of this portpav2004-07-071-0/+2 * After repocopy from x11-toolkits/gtkdatabox, add gtkdatabox2, Gtk+2 widgetpav2004-07-076-27/+39 * Update to 2.6.2.1.adamw2004-07-073-3/+4 * Update to version 1.2.6krion2004-07-034-6/+6 * Unbreak on 5.8 by doing some creative patching. While at it, assigntobez2004-07-022-5/+24 * Still BROKEN with perl 5.8.4kris2004-07-021-2/+2 * BROKEN: Build failskris2004-07-021-0/+2 * Update to 2.4.4bland2004-07-022-3/+3 * Autotools cleanup. Remove autoconf257 (259), automake17 (18), andade2004-07-021-2/+4 * Update to 0.5.16 (unbreak w. gtk+-2.4), thanks to Jochen Huhmannvs2004-06-283-15/+14 * Update to 1.5perky2004-06-283-6/+40 * Fix order.fjoe2004-06-281-1/+1 * New ports:fjoe2004-06-28121-0/+4450 * - Update to 1.2.5pav2004-06-274-6/+6 * Add gtkmm 2.4.3 after repocopy from gtk--2, a C++ wrapper for GTK+,bland2004-06-266-2424/+2111 * Add support for a mime database in ${X11BASE} as well as ${LOCALBASE}.marcus2004-06-264-2/+28 * Depend on Mozilla since certain Firefox ports are broken after the recentmarcus2004-06-251-3/+2 * We have a new Mono vict^W^W^Wolunteer! John Merryweather Cooper has offeredmarcus2004-06-254-4/+4 * - Update to 1.0.29pav2004-06-2412-20/+44 * Add fxscintilla, an implementation of Scintilla editing widget for FOXpav2004-06-245-0/+44 * Update to 2.6.2bland2004-06-233-4/+3 * - update pkg-plist for gnustep-stabledinoex2004-06-231-5/+5 * Add -fPIC to CFLAGS since some depents use plib in shared libraries.des2004-06-221-2/+2 * Remove the WITH_XUNICODE knob I once added, since fltk-xunicode is wayknu2004-06-221-24/+1 * Set an expiry date of 2004-08-20 for these BROKEN/IGNORE/FORBIDDENkris2004-06-221-1/+3 * Add new port for py-gui 1.4,perky2004-06-215-0/+319 * Remove expired ports, plus the three ports that depended on them.kris2004-06-216-490/+0 * - rename patchfiledinoex2004-06-212-0/+1 * Unbreak by upgrading to 3.11.1.thierry2004-06-215-84/+23 * - Add a patching I forgot in previous commitpav2004-06-214-0/+16 * - Update to 0.93pav2004-06-2124-168/+672 * BROKEN: Unfetchablekris2004-06-191-0/+2 * - udpate to 0.9.3dinoex2004-06-172-3/+3 * - udpate to 0.9.3dinoex2004-06-174-19/+93 * Update to version 3.12krion2004-06-163-4/+5 * Update to 2.6.2.marcus2004-06-152-3/+3 * Not broken for Perl > 5.8.4vs2004-06-151-1/+1 * Chase the gstreamer shared lib version, and bump PORTREVISION wheremarcus2004-06-154-4/+4 * Sort plist.bland2004-06-122-26/+26 * Update to 2.4.3.marcus2004-06-124-6/+6 * - Upgrade to 804.027.vanilla2004-06-114-7/+33 * Update to version 3.2.3lofi2004-06-102-2/+1 * - Update to version 3.11.r1;thierry2004-06-076-130/+587 * - Readd distinfo for dropshadow patchpav2004-06-052-0/+4 * Update to 2.6.2.marcus2004-06-052-3/+3 * Update to 2.4.2.marcus2004-06-056-10/+10 * Update to 2.2.12bland2004-06-0512-40/+12 * Sync with new bsd.autotools.mkade2004-06-056-23/+15 * 5.x's <usbhid.h> lacks __BEGIN_DECLS / __END_DECLS, so we need to wrapdes2004-06-032-7/+6 * add missing fileijliao2004-06-032-1/+2 * Putting commit bit in storage. I don't have the timepatrick2004-06-031-1/+1 * - Move to new category x11-themes.pav2004-06-0213-112/+0 * - gtk-qt-engine was moved from x11-toolkits to x11-themespav2004-06-021-1/+0 * Repocopy x11-toolkits/gtk-qt-engine to x11-themes/gtk-qt-engine.thierry2004-06-028-182/+0 * - This port was moved to x11-themes category.pav2004-06-02144-5890/+0 * - Populate new category x11-themes with some suitable candidatespav2004-06-021-30/+0 * Previous commit unintentionally dropped maintainership.des2004-06-011-1/+1 * Upgrade to 1.8.3.des2004-06-015-29/+54 * Fix a crash when trying to render non-Hangul unicode characters. This wasmarcus2004-06-012-0/+86 * - Update to 0.42erwin2004-05-312-5/+10 * Unbreak on 4.x and get rid of USE_GCC.lofi2004-05-312-10/+78 * Add gtk-qt-engine 0.3, a GTK-QT Theme Engine allowing GTK2 to usethierry2004-05-319-0/+115 * o) Update to version 4.50.91lkoeller2004-05-305-454/+153 * Don't try to enforce PREFIX by patching, Qt already honors it.lofi2004-05-281-1/+1 * - Install Gtk2 files to gtk-2.0/2.4.0 instead of gtk-2.0/2.2.0pav2004-05-271-3/+3 * Patch configure instead of piping echo output to the configure script -lofi2004-05-252-2/+13 * Fix/update MASTER_SITES.lofi2004-05-241-4/+8 * - Update to version 1.2.1krion2004-05-248-102/+230 * - Make fetchablepav2004-05-231-8/+2 * BROKEN on amd64: Does not compile (missing -fPIC)kris2004-05-231-1/+7 * BROKEN: Unfetchablekris2004-05-231-0/+2 * - According to contents of distfile, this is 0.6.11pav2004-05-231-2/+1 * Fix location of pkgconfig file.lofi2004-05-232-3/+8 * Resign maintainership to ports@. gnome@ hasn't been that active in maintainingmarcus2004-05-224-4/+4 * Adjust CONFLICTS, the latest revision of the xfmail port does no longerlofi2004-05-221-1/+3 * Shase qscintilla shared library version.arved2004-05-201-1/+2 * Update to 1.3arved2004-05-203-7/+9 * - Chase orbitcpp shlib versionbland2004-05-192-12/+2 * Remove dependency on Xaw headers, fixing build.anholt2004-05-181-0/+42 * Upgrade to 0.15.3.obraun2004-05-184-32/+3 * Start the QT2 deorbit by marking all ports that depend non-optionalarved2004-05-171-1/+3 * Update to 3.3.2lofi2004-05-164-33/+5 * Restore maintainer; his email was bouncing last week and I fat-fingered thekris2004-05-161-1/+1 * Reset bouncing maintainer address:kris2004-05-161-1/+1 * Add an additional patch to make Qt compile on 4.x/Alpha.lofi2004-05-151-0/+14 * Update to 2.6.1.marcus2004-05-153-3/+7 * Requires libXext, which covers some of the other deps.anholt2004-05-131-4/+2 * Update to 7.0.2.anholt2004-05-112-4/+3 * Update to 6.2.3.anholt2004-05-112-4/+3 * fix build on -stableijliao2004-05-101-0/+12 * Add missing xproto build depend.anholt2004-05-091-1/+2 * Drop maintainership. Maintainer is not using FreeBSD aserwin2004-05-092-2/+2 * Update to 0.1.5.anholt2004-05-084-66/+4 * Reword some of the dropshadow patch warning message text stuff thingers.adamw2004-05-072-4/+6 * Add experimental WITH_DROPSHADOW option back in; it is not supported bymezz2004-05-064-0/+38 * Chase vte shlib version.bland2004-05-064-4/+4 * Update to 0.11.11bland2004-05-065-21/+28 * Fix build on AMD64arved2004-05-053-4/+41 * Change my email to mezz@FreeBSD.org.mezz2004-05-033-3/+3 * Update lang/ruby18 and the bundled modules to the latest 1.8 branchknu2004-05-033-46/+153 * Convert build switches to OPTIONS.lofi2004-05-031-22/+10 * Update to 2.6.1.1bland2004-05-024-14/+4 * x11-toolkits/ruby-gtkglext:mezz2004-05-021-3/+7 * Update to 2.6.1.marcus2004-05-014-4/+19 * Update to 2.4.1.marcus2004-05-016-6/+24 * Version update to handle new GTK stuff (fixing the broken port issuelinimon2004-04-303-6/+13 * - ignore creation of files in /root/GNUstepdinoex2004-04-291-5/+0 * - reorder targetdinoex2004-04-291-1/+1 * Update to 2.6.1.marcus2004-04-293-22/+25 * Fix dependencies.vs2004-04-291-1/+1 * Add a missing dependency on librsvg2 to fix the package build on 4.X.marcus2004-04-224-8/+8 * Update to 2.4.0.marcus2004-04-212-5/+5 * add p5-Gtk2-Html2 0.03ijliao2004-04-205-0/+60 * upgrade to 1.042ijliao2004-04-203-5/+28 * Update to 0.9.5: Fix build with most recent GHC version.vs2004-04-203-8/+29 * Update to 0.7.marcus2004-04-204-66/+81 * Update to 2.6.1.marcus2004-04-203-3/+5 * Update to 2.6.1.marcus2004-04-203-3/+6 * Update to 1.0.4.marcus2004-04-202-4/+3 * Update to 2.6.1.marcus2004-04-203-3/+4 * Use the right MTREE_FILEarved2004-04-193-0/+3 * BROKEN: Broken dependencykris2004-04-191-0/+2 * These broken ports are scheduled for deletion on June 18 if they arekris2004-04-191-0/+2 * Update to 1.0.1.marcus2004-04-193-3/+4 * BROKEN: Does not compilekris2004-04-192-0/+4 * Add py-fltk, a Python wrapper for the Fast Light Tool Kit cross-platform grap...pav2004-04-196-0/+145 * Add py-fox, a Python bindings for FOX GUI toolkit.pav2004-04-196-0/+232 * update to 4.0.5oliver2004-04-194-14/+12 * Drop the coalescence timeout from 50 to 15 to compromise between actualmarcus2004-04-182-2/+2 * Always add the default gtkrc file to the search path so that we know we'llmarcus2004-04-182-8/+33 * Add missing fileskris2004-04-171-0/+2 * Add a missing RUN_DEPENDS on libXpm.marcus2004-04-161-2/+3 * fix build on -stableijliao2004-04-161-2/+3 * utilize MASTER_SITE_SOURCEFORGEijliao2004-04-151-2/+3 * Unbreak, the PORTREV-bump affected path-name generation.vs2004-04-151-1/+1 * wxWindows -> wxWidgetsfjoe2004-04-1410-11/+11 * Move the gtk20 dependency to USE_GNOME to chase the gtk20 shared lib version.marcus2004-04-131-1/+1 * add guis 1.4ijliao2004-04-134-0/+50 * upgrade to 0.5.4ijliao2004-04-122-5/+5 * BROKEN on sparc64: Does not compilekris2004-04-121-1/+7 * BROKEN on sparc64: Build failskris2004-04-121-1/+7 * * Add a missing build dependency on xextensions [1]marcus2004-04-122-1/+3 * Mark this port BROKEN with gtk+-2.4.marcus2004-04-111-0/+2 * This seems to be broken globally.kris2004-04-112-8/+4 * Tidy up whitespace.trevor2004-04-1113-18/+18 * Trim whitespace.trevor2004-04-111-1/+0 * Add a missing build dependency on xextensions.marcus2004-04-101-0/+1 * Remove PTHREAD_LIBS form CONFIGURE_ENV.bland2004-04-101-2/+2 * Add x11-toolkits/ruby-gtkglext, Ruby binding for GtkGLExt.knu2004-04-09