[LWN Logo]

Date: Fri, 16 Apr 1999 19:47:48 -0500
From: Miguel de Icaza <miguel@nuclecu.unam.mx>
To: gnome-list@gnome.org, gnome-announce-list@gnome.org,
Subject: Writing a GNOME mail client.



Hello guys,

   So, I was watching the grass grow the other day, and it ocurred to
me that the main medium of communications for the free software
community is mail.  Is it our most valuable communication resource.
Still I have not seen any mail program which is truely powerful,
extensible and it is designed to address the needs of our community. 

   The mail needs of people these days are rather different from those
some years ago: keeping up with high-volume mailing lists; keeping up
with important people; being able to keep track of conversations;
being able to easily archive messages based on various criteria; being
able to automatically split mail in folders; being able to decode mime
messages and render them nicely; being able to link the addressbook
with corporate address book services; schedule appointments. 

   So we need to provide this powerful tool.  Now, given that the core
of Gnumeric took only two months to develop and it was a rather solid
and good piece of code, I am confident that we can tackle this project
as well and do things right. 

   Now, what do we need to make this a reality?  Well, step number one
is to make this project fun and reusing all of the nice code and
infrastructure that we have developed over the past months.  

   Given that we are going to redo the Mail application for GNOME, I
have a number of ideas on how to do this.  So this is sort of a call
for volunteers that want to start working on such a beast.

   We need various modules in this mail program.  Each module should
be implemented as a CORBA object, exclusively because it allows us to
upgrade different components and choose different implementations over
time, without having to update the whole system.

   Contextual operations are very useful, so we should use Button-3
for context operations as much as possible.

* Mail storage 

   This will handle the handling of the mail input backend, supporting
   various existing setups: imap, pop, spool mail, Mailbox, MH. We can
   steal the design for the interface from GNUS.

   The mail storage should provide the mail splitting: applying all
   the rules defined for separating the mail into different folders. 

   See [1] for more information. 
      
* Summary display

   Summary display should allow people to list the messages in a
   folder.  We should implement what most people expect from the
   folder summary display, but on top of that we need that right
   clicking on a message presents useful options about the message: 

	a. Increase the score for this author/thread.

	b. Use this message as a "pattern" for automatically
  	   creating a new folder.

	   So that users do not end up editing manually their
           .procmail file, nor using a GUI to manually wonder
  	   which header needs to be used for splitting.

	   We can get splitting right most of the time, so by
           default we should be ablt to do a pretty good job.

	c. Allow the user to auto-archive any conversation with the
	   person selected or to auto-archive a thread (ie, based on
           Subject). 

   It should be possible from a message to see what the guy is
   replying to with a single click.

* Message Display

   This should be clearly a full fledged display engine for all of the
   new stuff we get on the net these days.  Integration with Bonobo for
   displaying message contents would be excellent.

   We can use Mozilla to render the display in the future, so a simple
   renderer for now would do the job. 
   
* Tool integration

   I suggest that the Message Display engine be decoupled by a clean
   CORBA interface from the Summary engine and from the folder
   engine.  

   We should integrate not only this, but it should integrate
   seemlessly with the calendar and the addressbook (the addressbook
   needs to be redesigned, because currently it is: not powerful and
   not very nice).

   The actual tools can be embedded with Bonobo (we can bootstrap with
   this feature turned off, but eventually it will be like this), so
   it will look like a big unified interface to the end user.

* Why not improve an existing mailer program

   There is too much baggage in existing mail applications that we do
   not want to carry into the future.  Reusing parts of existing GPL
   applications and mail applications should be fine, but I do not
   think there is much to be rescued.

   I would love to be proved wrong on this topic.  But the experience
   of gnumeric has left a very good taste in my mouth: it is possible
   to do so and it is possible to do this in a very clean fashion. 

* Developing this mail client

   We need to split the work between hackers.  Each one choosing a
   very specific task, so that we can paralellize as much as
   possible.  

   Cordination will take place on the gnome-mailer-list@nuclecu.unam.mx, 
   to subscribe send mail to gnome-mailer-list-request@nuclecu.unam.mx
   and put "subscribe" as part of your message.


[1] Bertrand has been working in such a beast, perhaps we can reuse
   some of his code.  I am just a bit concerned that the
   implementation is in Objective-C, which means that people need an
   objective-c compiler on their system to compile it.


-- 
        FAQ: Frequently-Asked Questions at http://www.gnome.org/gnomefaq
         To unsubscribe: mail gnome-announce-list-request@gnome.org with 
                       "unsubscribe" as the Subject.