Debatable Email Feature Set
Significant Decisions Needed
- What does the index view UI look like?
- How do we help the user categorize and prioritize their messages? What algorithm/AI, if any, do we use to categorize/prioritize messages automatically (including anti-spam)?
- What is the UI for threading messages?
- What is the UI for grouping messages (what used to be done with folders)?
- What is the UI for user-directed ad-hoc categorizing and prioritizing messages? How do we make the user-specified organization play nicely with the automatically-specified groupings and prioritizations?
- How do we represent email messages which have elements of Tasks and Calendar Events?
- What features will Contacts support? (Nicknames, hierarchical group nicknames, personas, easy "add sender", fast determination of membership in Contacts?)
- What level of HTML composition will we support? (None, font styles, tables?)
- What UI do we provide for managing attachments?
- What types of notifications will we support?
- How do we synchronize well with IMAP to avoid many of the IntrinsicIMAPIssues?
- How do we (do we) share Chandler Items via email?
- Which clients will we import from?
Deferred design issues
Debatable Features
Legend
The symbols in the Debateable Features section have the following meaning:
-
Canoga feature
-
Post-Canoga feature
-
Not in Canoga or Westwood
-
Debatable feature
-
A feature that needs design work to determine which of the possible options to use
-
A feature that needs lots of design work
Index View
Things Chandler needs to be able to display when showing an index view
- Display message attributes
-
read/unread
-
sender
-
subject
-
account received through
-
sharing/security properties
-
delivery status: sendable, unsendable, queued, sent, unsent
-
presence of attachment(s)
-
done/to-do
-
server status: on server, deleted from server
-
body size
-
attachment size
-
category
-
2-pane view
-
3-pane view
-
Allow aggregating messages from multiple accounts
-
Sort-by-subject which ignores all permutations of "RE:" and "FWD:"
-
in all languages
-
Sort-by-sender which combines all different accounts/names from one person (e.g. "Bob Smith" and "Robert Smith"). Requires some support in Contacts.
-
A View that shows responses (outbound messages) mixed in with incoming messages
-
Modify/examine/delete current View (UI might be mildly tricky: people might think that deleting a View also deletes all the messages)
-
Optionally show all messages with a specified property (e.g. "project") in expandable/collapsable groups (depends upon Chandler info-management features)
-
Display arbitrary message attributes (e.g. "Read" or "Done")
-
Automatic highlighting/coloring (perhaps with filters, e.g. "if TO only me, color it red")
-
Optional support for showing a few lines of the message body (like Outlook does)
- Upon opening, have the client set the "current message pointer"/selected message to (optionally):
-
last read message
-
earliest unread message
-
first unread message in last unread group of messages (useful when people mark messages "unread" to mean "undone"); might be implementable as "last-read-message-plus-one
-
Thread messages
-
using JWZ's algorithm
-
Summarize message threads (like Zest does)
-
Optionally show threads in expandable/collapsable groups
-
Optionally hide (or collapse) threads and sub-threads with no unread messages
-
OSAF-designed combination or above
-
Resend message (with or without editing first?)
Things the user can do when browsing index view
-
Show list of messages grouped somehow ("like folders")
-
Allow changing View/"folder" (depends upon Repository)
-
Save commonly used Views for reuse ("bookmarking")
-
Switch current View
-
Delete selected messages
-
Allow opening message in its own window
-
Select all
-
one-click column sort
-
multi-column sort (e.g. first by Category, second by read/unread, third by date. Eudora does multi-column sort differently on Mac and PC.)
- Toolbar buttons for
-
one-action (click or keystroke) to move to next message (i.e., message has pending actions, but I don't want to deal with it yet)
-
one-action to move to previous message
-
one-action to delete message
-
one-action to mark as spam
-
one-action to create a new message
-
one-action to fetch new messages
-
one-action to move to next unread message
-
one-action to mark "done" (i.e. get it out of my current view)
-
one-action to file message (for those who want to "file" as they go)
-
Allow the user to make a temporary grouping inside the mailbox for all messages matching a certain field (Eudora has this feature; it is hard to discover but VERY handy)
-
When new messages arrive, Eudora resorts the mailbox -- losing the temporary grouping
-
find message by type-ahead (like Eudora does; again VERY handy but a little hard to discover)
Single-Message View
Single-Message Display
-
Suppress display of most headers
-
Show a number of important messages attributes, perhaps as tool tips (Note: this is similar to the list above for the index view, but we might want different things displayed in the single-message view)
- read/unread
- done/to-do
- delivery status: sendable, unsendable, queued, sent, unsent
- presence of attachment(s)
- server status: on server, deleted from server
- body size
- attachment size
- sharing/security properties
- category
- sender
- account received through
- Show quoted material
-
With vertical bars indicating quotation level
-
Rewrappable (which avoids "long line/short line/long line/short line" messages)
-
In a different color
-
Strip out multiple > signs and extraneous verbose headers from forwards ("Zest lite")
-
Auto-rewrap split lines (as preferences option)
-
Show message annotation (depends upon annotation)
-
Make URLs "live"
-
Handle long URLs gracefully
-
Show (in a separate windowlet) which filters are activated by this message (depends on filters)
- View attachments inline (as preferences option)
- Support for multiple character encodings
-
Basic Latin character encodings
-
Non-Latin single-byte encodings (e.g. Arabic, Hebrew, Korean)
-
Multi-byte encodings (e.g. UTF-16, Chinese)
-
Recognizers (which are not strictly an email feature, but which will get very heavy use in email) making various (TBD) text "live"
-
Disallow pop-ups (Javascript, ActiveX?)
Things Chandler should let the user do when reading a message
-
Allow increasing size of text
-
Change attributes of the message e.g. flagged, unread, category (generic Chandler info-management)
-
Delete the message
- Add sender to various lists (requires collaboration with Contacts)
-
Contacts
-
whitelist (related to anti-spam; see anti-spam for a discussion of white and black lists)
-
blacklist (related to anti-spam)
-
specified address book (which, as we implement Contacts, would probably mean "add to Contacts with X attribute")
-
specified group alias/nickname (depends on HierarchicalNicknames)
-
Save message to a file
-
create new Items (e.g. Task, appointment) based on Recognizer
-
add new attributes to email message based on Recognizer
-
Annotate message
-
Hide message annotations
- Switch to fixed-width by (at least one of following)
-
showing raw source of message
-
stripping HTML formatting (not so you'd see the tags, but convert to plain text)
-
button/menu option to switch between fixed-width and proportional-width
-
Button/menu option to unwrap and/or wrap poorly wrapped/unwrapped messages, including re-assembling poorly wrapped URLs
-
Print current message
Possible Message Composition Features
Addressing a message
(Note: many of the features discussed in this section clearly are strongly linked to the Contacts features.)
-
To, CC, BCC addressing
-
Switch personas/accounts on-the-fly ("personas" needs thought)
-
Auto-completion of email addresses
-
from email addresses in Contacts
-
from first name/last name in Contacts
-
from nicknames in Contacts
-
from prior recipients of your messages
-
from prior senders
-
Allow different nicknames for different email addresses for the same person (e.g. jimhome and jimwork)
-
Group nicknames (aliases) (depends upon Contacts)
-
Hierarchical group nicknames. (depends upon HierarchicalNicknames)
- Addresses can be chosen from address book
-
with recipient's preferred email chosen by default
-
easy to change to one of recipient's non-primary accounts
Composing a message
- Support for composing in
-
plain text
-
HTML subset including bold, italic, underline, images, font changes, color changes, and bullets.
-
advanced HTML (including tables)
-
Switch between HTML and plain-text on the fly
-
Good indicators for showing when in HTML and when in plain text
-
Allow user to add/subtract a level of quoting
-
Reply with saved stationery
-
Support for stored style sheets
-
Support for stored text (without style)
-
Support for stationery (styles and content)
-
Customizable templates ("mail-merge" type features, the content of a message)
-
Allow signatures
-
Single signature
-
Multiple signatures selectable on-the-fly
-
Signatures editable inline without changing the original
- Spell-checking
-
inline (e.g. underlining misspelled words)
-
batch (not needed if inline is available)
-
in multiple selected languages
-
with an easy mouse sequence/keybinding for correcting
-
with an easy mouse sequence/keybinding for adding a word to the dictionary
-
that doesn't check URLs or email addresses, even when put in angle brackets
-
that doesn't check words recognized by Recognizers
-
Periodically auto-save draft
-
Auto-categorize unsent messages as Drafts
-
Warn if the message has an empty subject or body
-
Selection of template/stylesheet/signature
Possible Features Related to Creating a Response
This area is for listing all the possible features that an email client might have that are specifically related to creating a response, as opposed to a new message "from scratch".
Creating the response
- Reply to message(s), with To, Cc, Bcc filled in based upon reply action:
-
Reply-to-sender (use Sender if present, otherwise From)
-
Reply-to-all (use Reply-* headers if Reply-To is present, otherwise send to From address with other addresses in Cc)
-
Reply-to-list (use List-* headers if present, otherwise ask list manager; optionally set Cc to the sender) to choose among To/Cc/Bcc/none radio buttons for each one; buttons are initialized to the client's best guess, so the user only has to change where the client got it wrong)
-
Bind various reply actions to "Reply" button (reply-to-all, reply-to-list, reply-to-sender) based on message characteristics
-
Eliminate own address from Cc list (perhaps this should be an option?)
-
Forward message(s) with or without attachments
-
Reply/forward with template text in response/forwarded message
Quoting
-
Optionally include or quote original message(s) in response
-
Quot use excerpt bars (i.e. supporting format-flowed)
-
Auto-citing (e.g. "On 29 Feb, 2038, Mabel Garcia said:")
-
Optionally strip off signatures when forwarding/replying
Other
-
Responses inherit some attributes (list TBD) from original message (so that responses will be "filed" with the original message)
-
Persona (particularly the return address) set automatically based on which account the original message came through (or possibly set via filter rules, with the default being to chose the account of the original message?)
-
Auto-format reply (HTML/RTF/text) in same format as received message(s) or selectable via filters (e.g., always reply to the mailing list in text even if someone sends a message in HTML)
Attachments
- Receive attachments
-
standard attachments (MIME)
-
encrypted attachments (S/MIME)
- Manipulate attachments
-
Open attachment
-
Save attachment to file
-
Delete attachment
-
Organize attachments
- modify metadata (e.g. assign to a project, associate with an appointment)
- group
- Send attachments
-
Allow sending standard attachments (MIME)
-
Allow sending Chandler "Items" and views as attachments
-
Allow sending encrypted attachments (S/MIME)
-
Checkbox near header for "remember to attach document"
-
Specify "helper applications" for attachments
- Do we use a format-to-application mapping from the OS, from the default browser, or do we do it ourselves?
Account Management
Users might want to use an email client to check email from multiple accounts. The user might want to specify the following things differently for different accounts or personas:
- Persona characteristics
-
"Real name" (e.g. "Kaitlin Duck Sherwood" or "Ducky Sherwood")
-
Return address
-
Default signature (depends on signature)
-
Default style sheet (depends on style sheets)
- Retrieving messages
-
Server name
-
Email ID (e.g. "ducky")
-
When to delete messages: {never, immediately, after specified number of days}
- Type of account
-
POP3
-
IMAP
-
Exchange later, maybe Westwood
-
Do not download large messages
-
based on size of message
-
based on whether it is an inline attachment or not
-
Use SSL {TLS, alternate port} for download {always, never, when possible}
-
Authentication type {IMAP: Password, NTLM/SPA, DIGEST-MD5, CRAM-MD5; POP: Kerberos, APOP; SMTP: password, get-before-send}
-
Remember password {yes/no}
- Retrieve mail from server (poll):
-
manually (e.g., a "check mail" action)
-
at startup and a {specifiable} interval thereafter or not (i.e. only manually)
-
Specify filter set on a account-by-account basis (depends upon filters)
-
Reorder messages to download smaller messages first {yes/no}
-
Download partial message or message headers and display before downloading bodies (for users on slow connections)
- Pre-fetch the body of messages in background (depends upon partial message downloading)
-
Set how to notify user on per-account basis (depends upon email notifications)
-
Select which folders to make local copies of (for offline work with IMAP folders)
- Sending messages
-
Specify SMTP servers
-
Use secure connection {always/never/when possible}
-
Server authentication type {NTLM/SPA,DIGEST-MD5,CRAM-MD5,Login,POP Before SMTP}
- Remember password {yes/no} (probably should be same as "Remember password" under retrieving messages)
-
Specify IMAP folders to subscribe to
-
Specify IMAP folders to check for new messages in automatically
Global Preferences
This section lists all the possible things that users might want to set "globally" or as the default behavior:
-
Set default How to notify user (depends upon notification)
-
Inline images default (note that "inline" means that the image is displayed in-line; such an image may be local (in the message itself) or remote (accessed over a network))
-
always enable
-
always disable completely
-
enable local images only
-
show placeholder, click on placeholder to display image inline {on/off}
-
Enable/disable vacation message
-
Enable/disable sending Chandler attributes with responses
-
Enable/disable stripping Chandler attributes from incoming messages
-
Allow user to specify which headers to suppress when displaying message
-
Allow user to specify which headers to suppress when replying/fowarding
-
Enable/disable responses inheriting attributes from original message
-
Select SMTP server based on user's current location
-
Enable/disable dangerous/spammy display features (see above)
-
Set minimum text size
-
Set selection behavior in reply composition:
- cursor above or below quoted text?
- quoted text selected (highlighted) or not?
Possible Email Notification Features
Ways to notify user of new mail:
-
Audio alert
-
with user-specified sound (perhaps via filters)
-
Visual notification (e.g., in System tray)
Email Import
-
mbox (Eudora, with toc; Netscape, with metadata)
-
(Decision on others deferred until results of Ecosystem project/SynchML are clearer.)
Security
-
Enable/disable specific HTML and email features based on security risk
-
"web bugs" -- externally loaded resources (which can be images, URLs, or even style sheets)
-
scripts (Javascript, ActiveX)
-
redirection
-
attachments from unrecognized correspondents
-
executable/infectable attachments (e.g. exe, pif, bat, etc.)
-
Support for secure connections (e.g. "no passwords in cleartext")
-
Public key infrastructure
Offline Features
-
Cache IMAP messages locally
-
Only check specified folders
-
Don't continuously warn about network being down when offline
-
Allow user to explicitly say that they are going offline
-
Queue outgoing messages
-
Track deletes and other transactions while offline
-
Automatically send queued messages when online
-
Automatically synchronize with IMAP server when online
-
Deal gracefully with accounts "offline" due to inaccessibilty (e.g., a work account from home)
Features we want to wait on discussing
The following are things that we know we will need to deal with at some point, but aren't concerned about dealing with them right now.
Archiving (big topic)
Archiving and backing up data is important in Chandler in general, but email is one of the biggest and heaviest users.
In particular, if we keep annotations separate from the original message and overlay them, then old messages will never change. If you want to keep a message from six months ago around, sysadmins shouldn't have to back that message up more than once. Right now, with messages frequently merged together into one big file (like Outlook's .pst file), sysadmins have to back up
all the messages
every backup cycle.
This is probably more important for Westwood than Canoga because of the centralized Westwood servers.
Filters
Filtering is a huge issue with twisty, looping branches in the decision tree.
-
Spam filtering
-
Categorizing messages before reading (to help prioritize and keep context-switching down)
-
via "traditional" filters (which implies a traditional UI for filter-building)
-
via arbitrary Python (in Agents)
-
with a learning classifier system like iFile
-
with our own algorithms, e.g. based on what category the sender has in Contacts, whether it's a mailing list, whether it comes from the same domain, etc.
-
Anti-virus
-
Button to mark as spam for adaptive learning algorithm (depends upon spam filters)
-
Report messages to an external collaborative filtering system (e.g. SpamCop?)
-
Show which filters are triggered by a particular message (depends upon filters)
-
Share filters (which requires safe filtering)
-
Specify filters on an account-by-account basis
-
Allow user to disable pre-loaded filters (e..g spam filter) * Mailing List Manager (to help precision of spam filter)
-
Mailing list manager where users can specify how to recognize mailing list messages
- Information in List-* headers
- From address address
- Recipient address address
- Subject contains string (e.g. "[Design]")
- Other headers contain specific information (prior to the specification of the List-* headers, mailing list daemons often inserted their own X-* headers)
-
store list information (not needed except to convince people to use the mailing list manager)
- list address
- list owner/administrator's email address
- unsubscribe address
- list purpose (maybe by saving the first message)
Search
Email will depend heavily on search capabilities, but search is probably better handled at a higher level.
Return Receipts
-
{ Acknowledge/request } return receipts (depends upon return receipts)
-
automatically for everybody
-
when prompted for everybody
-
never *
Track return receipts
Features that we think will not get into Westwood
- Index view
-
Allow each column to be customizable by format and fonts
- Single message display
-
Show list of suggested responses (see details)
-
Override formatting with user's style sheet
-
Display face header as image
-
Accumulate list management information (List-* headers) and display actively (e.g., as buttons at the bottom of the display area)
-
Since redirected messages are dangerous, detect such a message and highlight how it was redirected
-
Bounce message(s) to sender (as in the Mail.app option: send a reply that looks like the name got a SMTP 550 "user unknown" hard error)
-
Reply via instant messaging
-
Redirect message(s)
- View inline
-
PDF
-
Flash
-
Multiple languages can be displayed in the same view
- New message composition
-
in RTF
-
Auto & manual entry of message keywords when composing
-
Grammar-checking
-
Support for external editors
-
Support for emacs and vi key bindings
-
Auto-suggestion of word completion (type-ahead)
-
Don't send message before a certain date/time
-
Don't send message until task complete
-
Don't-send-yet button (to prevent accidentally sending before done)
-
Support for deffering sending until specified time/date
- Responses
-
Incorporate more than one message into a reply/forward, combining/merging headers as appropriate
-
Reply-to-selected (use address(es) already highlighted/selected in source message(s))
-
Reply-by-selection (pop up a dialog with all the addresses in the headers and allow the user
- Quoting
-
Included in entirety with minimal quotation marks (as per Outlook's default quoting style)
-
Only marked with leading ">" marks
-
Marked with leading "XXX>" mark, where XXX are initials of the writer
-
Marked with a user-setable prefix (permitted by some email clients, but can lead to chaos)
-
Customization of auto-citation line
-
If subject line (and body?) is changed, ask the user if this is a new message instead of a reply (or just silently strip the In-Reply-To: header?).
- Notifications
-
Select different notifications based on location (e.g. don't want "work" alerts when "at home" or vice versa)
-
Pop-up message, possibly with action buttons
-
Open message in its own window
-
Instant message (with brief summary)
- Account management
-
Specify disk space quotas
-
Return Receipts
- { Acknowledge/request } return receipts (depends upon return receipts)
-
automatically for whitelist only
-
when prompted for whitelist only
-
automatically determined on a per-user basis (which means an extra field in the Contact)
-
TrackMailWorkflow
- Mailing list utilities
-
Removing duplicates (this might happen automatically if messages are indexed by Message-ID)
-
Bursting digest messages
- Global preferences
-
Auto-select SMTP server {yes/no}
-
Enable all images images for whitelist (e.g., "is in address book")
-
Enable all local images, remote images enabled for whitelist
-
Wait a specified "cooling off" period before actually sending a message
-
Set default for "attachment checkbox" (see Possible Message Composition Features)
-
HTML display enable/disable default
- Other
-
Show accomplishments -- statistics on how many messages were received, read, deleted, and dismissed in a session. One potential use of these stats is to display them at the end of a session (or day) to give the user a sense of accomplishment.
-
import from AOL, webmail accounts
Dependencies
- UI to support a good index view
- Document architecture for all views and button layout
- Repository
- for storing messages
- queries on email views
- search
- Networking framework for IMAP/POP/SMTP support
- Email libraries
- HTML presentation and composition libraries
- Contacts parcel for addresses
- Agent/Notification framework for
- Periodic background mail retrieval
- Filters
- Data model for Email and, to a lesser extent, Tasks and Calendar Events
- Printing
--
DuckySherwood - 07 Oct 2003