Email Feature Clusters
by
DuckySherwood for
ChaoLam
This page talks about dependencies between email features. Chao and I will use this to figure out which email features should go into which release(s). (This is essentially an internal document that I'm letting other people see, more than a document designed for wide collaboration.)
< Current OSAF Thinking >
There are a number of email features that other features depend upon. These are listed below.
POP/IMAP/SMTP/SSL/MIME/SMIME
These are all extremely difficult to do because they require interoperating with a bunch of different implementations of protocols. I strongly suggest that we not start from scratch, but use code that someone else wrote.
This means that we need to explore a number of versions of open-source code, being sensitive to the licensing. Then we need to pick one; we might need to "wrap" it appropriately to make it work with Python.
These libraries are needed for (among other things):
- pre-fetch bodies of messages in background
- load headers first
- keep message bodies on IMAP server, cache locally
- download only specified folders
- show % of quota used
- move messages between remote and local
- expunge on delete option
- attachments
- display inline
- open
- choose helper app
- manage attachments well
- manually poll server
threading messages
HTML rendering
There's been talk of using something other than wxWindows' HTML renderer , well, the wxHTMLWindow is ugly. Leading candidates are Gecko and wxMozilla. [Chao: wxWindows is also looking to improve this with native components on mac (safari) and windows (IE)] HTML rendering is required to:
- display HTML messages
- display images inline
- rewrap lines nicely
- set style sheet
- compose HTML messages
- allow adding/subtracting a level of quoting
- strip HTML formatting (not so see tags, but only the plain text)
- strip extraneous quotes
- show quoted material in a different color
- show quoted material with vertical bars
- switch between compose formats on the fly
- enable/disable iframe
- underline misspelled words inline (requires spell checker)
- underline grammatical errors (requires grammar checker)
templates
- simple templates
- signatures
- needed for auto-suggest
- reply/forward with template
- compose new message starting with template
- complex templates
- auto-suggest/"mail merge" features (e.g. "Dear $FromName")
- complex signatures
- customized citation line (uses same UI?)
- reply/forward with template
- compose new message starting with template
Agents
- Filtering framework
- API for probabilistic filtering and virus scanning
- sharing filters (note security issues)
- (huge number of filter actions and conditions)
- vacation messages
- run filters when X happens
- auto-respond
- auto-suggest
- named filters (useful for import/export/sharing)
- filter import/export/sharing
- filter manually, on incoming, on outgoing
- Time-delayed actions (see also threading?)
- Poll server every X minutes
- delete from server in X days
- delay sending message until X
- delay notifying until X
- delay displaying message until X
- automated backups
Tasks
- easy creation of a Task from a message
Contacts
- add sender to Contacts list
- choose TO/CC/BCC address from Contacts
- choose one of several email addresses for a contact
- nicknames
- group nicknames
- filter condition: "is in group nickname"
- hierarchical group nicknames (handy for filters)
- different nicknames for different email addresses e.g. jimHome and JimWork?
- set attributes (probably already exists)
- filter condition "sender has attribute X" e.g. "sender has attribute category=Friends"
- add sender to Contacts wtih category (e.g. set category=Friends)
- autocompletion
- blacklists
- whitelists
- add sender to whitelist
- whitelist people user sends to
- preferred reply format
- filter action: set reply format based on correspondent's preferred format
smart parsing
- automatic recognition of names/phone#s/other Contact info in messages
- add appointment to calendar (with prompt!)
- add task to task list (with prompt)
return receipts
- acknowledge/request manually
- acknowledge/request automatically for
- everybody
- whitelist
- same domain
- people flagged in Contacts
mailing list manager
- reply-to-list button
- better whitelisting
autocompletion
- autocomplete email addresses based on {Contacts, past senders, past recipients}
security
- public folders
- Andy's secure email
- digitally signed email
General application framework and wigetry
- queries
- saved queries (so can "move to a different folder")
- full-text search of all email messages
- change attributes e.g. read/unread, category, flags
- delete messages
- spawn another window
- OutlineTableView?
- Media handlers (for attachments, Chandler Items that are shared)
- sharing/collaboration (for sharing filters)
- control/command-A to select all
- spellchecking
- in multiple languages
- with easy sequence for fixing
- with easy sequence for adding word to dictionary
- single-column sort
- multi-column sort
Hard things
Poor information and/or legal restrictions
- Download AOL email
- Download email from Exchange server
- Download email from Hotmail
- Download email from Yahoo
Difficult design; much thinking and scratching of the head
- message annotation
- line rewrapping
- public folders
- attachment management
- sort by subject disregarding Re and Fwd
- good wrapping of URLs
Many many corner cases to interoperate with
- Multi-lingual support, including "re" and "fwd" turds
- bursting digests
High difficulty per interested user
- Palm conduit
- Web interface
- JavaScript
- ActiveX?
- Smart handling of digests without bursting
Medium difficulty per interested user
- change signatures on the fly
Medium difficulty but high utility
- import mbox format
- switch personas on the fly (changing FROM address, .sig, style sheets, SMTP server, PGP key, etc)
- good offline handling
- queue messages for sending on return
- download for offline use
- flexible notifications
- good/easy archiving
- spellchecking that doesn't barf on URLs or email addresses
easy and Good Idea
- pre-loaded filters and views
- "remember attachment" checkbox
- "done" button
- "next message" button
- import/export from/to mbox format
ProposedEmailFeatureImplementationOrder
MinimumEmailFeatureSet
SpecificDebatableEmailFeatures
< End current OSAF Thinking >
--
DuckySherwood OSAF - 07 May 2003