GNOME mailer/message client



Okay,

where'd the discussion head off to?  :)

Here's the guts of my idea for a GNOME Message manager.  Basically,
we've got 3 layers:
	1) Data presentation
	2) Data source
	3) Glue between 1 and 2

Now, we've seen folks saying that they want a Balsa front end, or
a Pine front end, or an elm, or a mutt, or a whatever front end.
So, the data presentation layer needs to be plugable.

Also, folks have wanted messages to come from POP3 accounts, mbox
files, qmail files, IMAP servers, news servers, wherever.  So, the
data source layer is going to need to be plugable.

I envision a middle layer that provides an API to the presentation
layer, and an API to the data source layer.

The API provided to each layer doesn't have to be all that complex
for it to be powerful.  Here's a real rough cut at these APIs:

	For the Presentation Layer

	getIndex(IndexName)
		Returns the Index for Folder/Grouping "IndexName"
	removeMessage(IndexName, MessageID)
		Removes the specified Message from IndexName
	addMessage(IndexName, MessageID)
		Adds Message to IndexName
	newIndex(IndexName)
		Creates a new Index
	compactIndex(IndexName)
		Compacts the storage associated with IndexName
	getMessage(MessageID)
		Returns the Message
	copyMessage(MessageID)
		Returns a copy of the Message, with a new ID generated for it


Ideally, the Index would either be an array or a linked list of
Index Items.  I suspect that an Index item will look something like:
	<MessageID><Subject><Message location><Other rapidly needed data>

I want the Index to contain all the data needed at the presentation
layer.  This should make the front ends reasonably fast.


On the backend, I've tried to make the API implementation independant.
here's what I've thought of so far.  The functions that deal with 
Message fetching and such will need to be rewritten for each new 
Message source medium.  This is a very simple API right now.

	getMessage()
		Retrieves data from a source and stores it as a Message.
		New Messages are given auto membership in whatever the
		default group is.  This can optionally write the Message
		to local storage.  That's up to the implementor of the 
		particular back end.
	deleteMessage(MessageID)
		Removes Message from whatever the actual source medium or
		storage medium for the Message is.


--
Scott Wimer
play  --->    scottw@cgibuilder.com         http://www.cgibuilder.com/
work  --->    scottw@corp.earthlink.net     http://www.earthlink.net/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]