realbasic-nug
[Top] [All Lists]

musings about an RB community email client

To: REALbasic-NUG NUG <realbasic-nug at lists dot realsoftware dot com>
Subject: musings about an RB community email client
From: Joe Strout <joe at inspiringapps dot com>
Date: Thu, 29 Nov 2007 11:52:58 -0700
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug at lists dot realsoftware dot com
Just thinking out loud here... any comments will be appreciated.

As noted a few weeks ago, I've recently started using Apple Mail, and  
I mostly like it, but it has some pretty glaring shortcomings, too.   
Chief for me is the lack of a "delayed send" function, that would let  
me correct those "oops" realizations I always get shortly after  
hitting Send.  It also has rather buggy handling of quoted text in a  
reply (if you try to trim it -- which of course you always should),  
and the way it sets up a reply tends to encourage top-posting, which  
is crass and poor netiquette.

On the other hand, it does have a nice clean interface, is easy to  
use, fast, and handles styled (HTML) email quite nicely.

But it's made me wonder... would there be any interest in a few of us  
coming together and writing an open-source email client in RB?  I'd  
design it to be very similar to Mail (though cross-platform, of  
course), but with some extra features we might want.  It would  
probably serve as a very useful body of sample code for new RB users,  
and we'd get the email client we want.

As part of my previous work at Verified Express, I already have a  
large body of code for dealing with email messages, including  
properly parsing attachments, extracting email headers, Bayesian spam  
classification, etc.  I'd be happy to donate this code to the  
project.  So where are the hard parts to this project?

I guess the chief one would be handling HTML mail.  I don't have much  
faith left in the HTMLViewer control.  We could parse the HTML  
ourselves and display messages that are simple styled text messages  
just fine, but it will probably break down when you get one of those  
advertisements that's fancy HTML full of images and whatnot.

Another tricky bit might be inline display of attachments... the  
EditField isn't much good for that.  I know of a plug-in EditField  
replacement under development that supports embedded objects; there  
may be other avenues to consider too.  If we get desperate, we could  
just display attachments separately, perhaps in a horizontally  
scrolling area below the message.

Efficient searching could be another challenge.  Might want to store  
messages in a database, though I tend to be a fan of flat files.  If  
we did do a database, I'd want to be sure to include an export to  
standard mbox format (and maybe a way to schedule a nightly export,  
for backup purposes -- email is important!).

A fun feature we could add would be to make it highly RBScriptable --  
add the ability to execute scripts that operate on incoming or  
outgoing messages, or add new items to the menubar or toolbar, or  
whatever.  I'm not entirely sure what that would be used for, but  
maybe you can think of something. (Just thought of one: maybe it  
could apply syntax coloring to any incoming message from an RB  
newsgroup that contains RB code.)

This is probably one of those projects where 90% of it is easy, and  
the last 10% is very hard.  Still, even a 90% email client might be  
better than what we're using now.  On the other hand, it seems a bit  
silly to write a new email client; this is a very old problem and  
there are lots of solutions out there already.  But on the gripping  
hand, if my ideal email client is out there, I haven't found it yet.

What do you think?

Best,
- Joe


--
Joe Strout
Inspiring Applications, Inc.
http://www.InspiringApps.com



_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>


<Prev in Thread] Current Thread [Next in Thread>