Gaia/Email: Difference between revisions

9,665 bytes removed ,  22 December 2012
progress tracking was long-ago moved into github issues, then bugzilla
No edit summary
(progress tracking was long-ago moved into github issues, then bugzilla)
Line 91: Line 91:


https://wiki.mozilla.org/Gaia/Email/ActiveSync
https://wiki.mozilla.org/Gaia/Email/ActiveSync
== Milestones ==
An attempt to break the v1 functionality into smaller milestones:
=== UI Pages ===
{| border="1"
|-
! 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 ===
{| border="1"
|-
! 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
* issue time-bounded queries to get ranges of messages, and fill-in the key message attributes: sender, flags, attachment, first line of summary without quoting magic.  text/plain bodies only.
* viewslice-ish model anchored from 'NOW'
|
| 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 [https://github.com/brianloveswords/bleach.js 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.
{| border="1"
|-
! 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:
{| border="1"
! 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
|-
| [http://help.yahoo.com/l/us/yahoo/mail/yahoomail/mailplus/ Yahoo Mail Plus], desktop access ($19.99 US, £11.99 UK, ...)  || POP
|-
| Yahoo Mail, mobile access (free)
| [http://mobile.yahoo.com/mail IMAP]
|
; pre-login: CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ CHILDREN XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ AUTH=PLAIN AUTH=LOGIN AUTH=XYMCOOKIE AUTH=XYMECOOKIE AUTH=XYMCOOKIEB64 AUTH=XYMPKI
; post-login: CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ MOVE
|-
| Google Mail/gmail
| IMAP (custom mapping w/[https://developers.google.com/google-apps/gmail/imap_extensions custom extensions])
|
; pre-login: CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH
|-
| fastmail.fm
| IMAP (Cyrus)
|
; pre-login: CAPABILITY IMAP4 IMAP4rev1 LITERAL+ COMPRESS=DEFLATE ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE LIST-EXTENDED WITHIN QRESYNC SCAN XLIST SPECIAL-USE CREATE-SPECIAL-USE DIGEST=SHA1 IDLE SASL-IR AUTH=PLAIN
|}
Confirmed users
360

edits