Gaia/Email: Difference between revisions
< Gaia
Jump to navigation
Jump to search
No edit summary |
|||
Line 7: | Line 7: | ||
* [https://wiki.mozilla.org/images/5/5a/Mail-folders.pdf Email Application Accounts and Folders selection] | * [https://wiki.mozilla.org/images/5/5a/Mail-folders.pdf Email Application Accounts and Folders selection] | ||
* [https://wiki.mozilla.org/images/a/a8/Mail-settings.pdf Email Application Setting] | * [https://wiki.mozilla.org/images/a/a8/Mail-settings.pdf Email Application Setting] | ||
* [https://wiki.mozilla.org/images/ | * [https://wiki.mozilla.org/images/0/06/Mail-main.pdf Email Application] | ||
==== Interaction ==== | ==== Interaction ==== | ||
Old: | Old: | ||
* [https://wiki.mozilla.org/images/e/ec/B2g-mail-DRAFTv3.pdf Email Application Wireframes and Flows v3 DRAFT] | |||
* [https://wiki.mozilla.org/images/c/ce/B2g-mail-DRAFTv2.pdf Email Application Wireframes and Flows v2 DRAFT] | * [https://wiki.mozilla.org/images/c/ce/B2g-mail-DRAFTv2.pdf Email Application Wireframes and Flows v2 DRAFT] | ||
* [https://wiki.mozilla.org/images/f/f7/B2g-mail-DRAFTv1.pdf Email Application Wireframes v1 DRAFT] | * [https://wiki.mozilla.org/images/f/f7/B2g-mail-DRAFTv1.pdf Email Application Wireframes v1 DRAFT] | ||
Line 16: | Line 17: | ||
==== Visual ==== | ==== Visual ==== | ||
* [https://www.dropbox.com/sh/2tmvc7qyxmxba07/otjHdKf0kM Dropbox] | * [https://www.dropbox.com/sh/2tmvc7qyxmxba07/otjHdKf0kM Dropbox] | ||
== Use Cases == | == Use Cases == |
Revision as of 06:11, 27 August 2012
Status & Team
See: Project tracking spreadsheet
Design Specs
Interaction
Old:
- Email Application Wireframes and Flows v3 DRAFT
- Email Application Wireframes and Flows v2 DRAFT
- Email Application Wireframes v1 DRAFT
Visual
Use Cases
- Tom sees email just as critical as his ability to make/receive phone calls and text messages
- Tom is a Hotmail user (~40% share in Brazil) and often checks his email on his desktop computer, but wants to stay connect to his family/friends so an email client is very important to him
- Tom has the ability to check if he received new messages
- Tom wants to be able to compose a new email directly from the Email app or from other Core Apps like the Contacts app
- Tom wants to be able to reply/replay all to messages as well as forward messages to his friends
- Tom uses ActiveSync with his Hotmail service, and the setup was extremely easy because all he had to do was enter his Hotmail email address and password and the Email app did all the setup for him
- Tom has the ability to mark messages as read/unread
- With ActiveSync, Tom has access to all his folders and messages moved and deleted between folders are automatically synced regardless of what client he accesses his inbox from
- Because Tom loves staying connected, he also has a 2nd email address that he has setup through his work - Tom's work supports Exchange and because the Email app also supports this protocol, by entering just his work email address and password, he is able to easily setup his account
- Tom's Email app support multiple accounts and offers his a unified inbox view of all messages from all accounts
nb: The above example used to say IMAP, but hotmail doesn't support IMAP, just POP and ActiveSync. We are aiming for ActiveSync support.
Requirements
- Gaia v1
- The Email app here offers key functionality that users would expect from existing email apps in the smartphone market today
- In the setup flow, the user has the ability to select from some of the largest global email providers/enterprise support:
- Hotmail
- Yahoo! Mail
- Gmail (Google Mail)
- Exchange (ActiveSync) support
- The user is offered the ability to just enter their email address and password and the Email app should automatically configure their settings
- The Email app should default to IMAP if the service supports it and POP3 as a back-up
- For Exchange users, the Email app should automatically detect the incoming/outgoing server settings
- The user has the ability to check their messages in their inbox and folders
- We offer 4 intervals for pulling messages - 15 mins, 30 mins, 1 hr, 4 hrs
- When composing messages, the user has the ability to compose directly from:
- The Email app by auto-filtering names from the Contacts list or by manually entering in a name
- Another Core App such as the Contacts app when selecting an email address (this is defined in the Contacts app requirements)
- In the compose view, the user has the ability to compose to the :
- 'To:' field
- 'Cc:' field
- 'Bcc:' field
- The user has the ability to reply/reply all to messages:
- Original format preserved with the reply text above the message body
- The user has the ability to forward messages
- Original format preserved with the forwarded text above the message body
- The user has the ability to delete messages
- The user has the ability to mark messages read/unread
- The user has the ability to select multiple messages at one and perform the following actions:
- Move messages to a specific folder
- Delete messages
- Mark messages read/unread
- Email messages should appear in HTML and rich text if messages are sent in that format
- Plain text messages should default to a core font that is available in Gaia
- The user has the ability to pinch-to-zoom in on messages to improve readability
- Message body initial download should be <250kb with the option to 'download the rest of the message'
- Search
- Filters (search by)
- To
- From
- Subject
- All
- Search local folders
- Extend search onto server (IMAP)
- Filters (search by)
- Gaia v2
- The user has the option to push email messages to their email account
- The user has the ability to select multiple messages and "forward as an attachment"
- Selecting text, copy, paste support for email messages
- The user has the ability attach photos from their Gallery app to draft email (new/reply/forward)
- Settings
- Search Sub-folders
- Search Sent folders
- Search Deleted
- Search on server
Development
- The app is now landed in https://github.com/mozilla-b2g/gaia
- relevant development branches may be found in:
- E-mail libs:
- canonical: https://github.com/mozilla-b2g/gaia-email-libs-and-more
- development work may be found at https://github.com/asutherland/gaia-email-libs-and-more before it is pushed to the mozilla-b2g repo
Dependencies
https://wiki.mozilla.org/Gaia/Email/ActiveSync
Milestones
An attempt to break the v1 functionality into smaller milestones:
UI Pages
What? | Prototype / Stub? | Final-ish? |
---|---|---|
Magic account autoconfig | yes | |
Manual account config / autoconfig fallback | ||
Settings Main Page | yes | |
Settings Accounts List (add/change/remove) | yes (add/remove), no (change) | |
Settings Signature Editor | ||
Account List (for folder nav) | yes | |
Folder List | yes | |
Message List | yes | |
Message Reader | yes | |
Compose | yes |
Core Functionality
milestone | details | est. effort | status |
---|---|---|---|
Network | |||
Connection loss recovery | We need tests for connection loss during various points and the logic that makes those tests pass. Sync, mutation (no mutations dispatched), mutation (mutations dispatched). | 2 days | |
Adaptive sync improvements, no tests | Be smarter about how many days we ask for at a time, don't try and look for messages before the internet was invented, etc. No automated tests for time reasons, but manual verification run and dogfooding will make failures obvious. | 0.75 days | done |
Adaptive sync unit tests | Unit tests for the prior deal. | 1.25 days | done w/tests |
Optimize re-opening previously synced folders, tests | Add heuristics to reduce the time re-opening a folder takes while also minimizing visual churn. | 3 days | done w/tests |
External / Inter-app | |||
Notifications | Simple ones... | 2 days | |
Composition via web activity | mailto links and the like | 2 days | |
Accounts | |||
account probing | Ability to test logins for IMAP and SMTP. | done w/tests | |
account creation | Create an account as part of the initial setup process. | done, w/back-end tests | |
account persistence and loading (backend) | If you shutdown and start back up again, do the accounts show up? This has overlap with message persistence. | 1 day | done w/tests |
account maintenance - simple | list/add/delete account definitions from the setup screen. UI and tests. | 1 day | done w/tests |
bad password detection and UI | detect when the server is angry because our password is now wrong, have the account stop bothering the server, prompt the user, update the account password, and re-establish/verify the connection | 1 day | done (no tests) |
account maintenance - more | Change display name, username, password, identity info. | 1 day | |
periodic background sync | cron-like initiation of sync | 2 days | |
option: Hard-coded auto-config database | Less work than Thunderbird's autoconfig database lookup. Just type in the popular options. This should be a fallback or stop-gap. | 0.5 day | |
option: Full manual setup (provide username, hosts, ports, crypto) | Part of Thunderbird's autoconfig process/fallback, let the user actually enter all the relevant details rather than trying to infer them. | 0.5 day | |
Thunderbird-ish autoconfiguration | Use Thunderbird's autoconfig database and MX lookup support to port (as much as possible) Thunderbird's autoconfig. | 3 days | |
Folders | |||
folder tree list - simple | just Inbox / Sent for the accounts, no labels/data. | done w/back-end tests | |
folder tree list - complex | Need UX definition, but probably more hierarchical and with some message counts. UI and tests | 2 days | |
Messages | |||
core live query logic - IMAP no CONDSTORE | no combined inbox, no persistence
|
done w/back-end tests | |
cached/persisted/syncable query logic - IMAP | stash our chunked results in the DB | done w/back-end tests | |
on-demand syncing/scrolling: UI, back-end, tests | Have scrolling or button pressing extend our time horizon when we haven't fully synchronized the folder. Unit tests are a lot of this. | 3 days | done w/tests |
data eviction from cache: back-end, tests | Mark data as discardable and discard it. UIprovided by settings. | 1 day | |
message flag mutation (starred, read/unread), no offline persistence, no undo, no UI | done w/back-end tests | ||
message flag mutation w/persistence, offline persisted, undo, no UI, tests | 2 days | done | |
message flag mutation UI hookup | single and batch mutations from the message list, single mutation from the reader. | 1.5 days | 90% (list single/multiple done, not message page (easy)) |
message moves (same account) and deletion: offline persisted, undo, no UI, tests | move, delete (varying by server/account: gmail just wants delete/expunge to end up in all mail, everyone else probably wants a move to a trash folder) | 1.5 days | |
message moves and deletion UI hookup | Hook the move button up to the folder picker UI, and the deletion button to its logic. | 1 day | |
message moves (different accounts): offline persisted, undo, no UI | moving a message across accounts is basically a download from A and append to B type thing, which is different from a normal move and so its own item. | 1.5 days | |
Local search: back-end, tests | Perform a local regexp search of the local contents of the folder. | 1.5 days | |
Local search: UI, UI tests | 1 day | ||
IMAP search on server: back-end, tests, UI | upgraded from local search | 2 days | |
Unified Folders | Stitch together the contents of multiple folders | 3 days | |
Message Contents | |||
Censor and display HTML bodies | Implement sanitization logic with cid URL transformation using bleach.js | 3 days | in progress |
message quoting detection (plaintext): back-end, tests, UI | Quote detection logic for message display and useful summary lines. Start from Thunderbird gloda and Thunderbird Conversations logic. | 3 days | done w/tests |
attachment downloads | click to download attachments and do really trivial opening via activity. Some of this is going to have to happen for HTML message display. | 2 days | |
Composition / Sending | |||
trivial message composition/sending, no contact integration | to/cc/bcc are just text fields, message not placed in the sent folder | done w/test | |
compose puts messages in sent folder | probably just APPEND into sent, text/plain. | 0.5 days | |
reply performs quoting: back-end, tests | Top-post reply, greater-than insertion. | 1.5 days | done w/tests |
forward quoting logic | Reproduce original message, inject header information | 1.5 days | 60%, some tests (we are not injecting headers) |
attach files from device | use file-picker or gallery or some other web activity to provide us a file to attach. | 1.5 days | |
ActiveSync | see https://wiki.mozilla.org/Gaia/Email/ActiveSync for details | ||
Phase 1: WBXML Parser | |||
Phase 2: ActiveSync core protocol | |||
Phase 3: Simple e-mail application protocol support | |||
Phase 3.5: Autodiscovery/autoconfig support | |||
Phase 4: High level sync |
Extended Functionality
Improvements that can be made to the core functionality. Order does not matter, although like things are clustered. These are all great things to help out with.
milestone | details | effort / status |
---|---|---|
contact auto-completion in composition | Auto-complete contacts when composing e-mails. | |
initiate mail composition from the contacts UI | Is this a WebIntent, or an actual WebAPI? | |
easy signup using Thunderbird's autoconfiguration | Port the Thunderbird logic: https://developer.mozilla.org/en/Thunderbird/Autoconfiguration | |
HTML composition | Allow sending HTML messages | |
file attachments | Allow attaching things from whatever filesystem B2G has? | |
take and attach picture | Trigger the camera app to take a picture and immediately attach it. | |
mail signatures / signature editor | ||
show in conversation view (when server-supported) | In cases where the server can provide conversation information for cheap, for example on gmail, leverage it to be able to go from a message to its context in the list of messages in the conversation. |
Mail server/service compatibility
Mail services:
Provider | Protocols Supported | IMAP capability strings |
---|---|---|
Hotmail | POP, ActiveSync | |
Yahoo Mail, desktop access (free, outside Asia?) | none | |
Yahoo Mail, desktop access (free, in Asia?) | POP | |
Yahoo Mail Plus, desktop access ($19.99 US, £11.99 UK, ...) | POP | |
Yahoo Mail, mobile access (free) | IMAP |
|
Google Mail/gmail | IMAP (custom mapping w/custom extensions) |
|
fastmail.fm | IMAP (Cyrus) |
|