|
|
| 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
| |
| |}
| |