113
edits
(Added Implementation, Incommunicado and Other concerns sections) |
|||
| Line 39: | Line 39: | ||
'''''NOTE:''''' ''Effectively this means that messages with large MIME parts (i.e. attachments) are not cached and not available offline. They have to be downloaded each time they are viewed.'' | '''''NOTE:''''' ''Effectively this means that messages with large MIME parts (i.e. attachments) are not cached and not available offline. They have to be downloaded each time they are viewed.'' | ||
== Implementation == | |||
=== What Needs To Be Done === | === What Needs To Be Done === | ||
Although poor handling of MIME parts is a major obstacle to minimising bandwidth usage in TB it is also the most difficult to address. To get immediate results a low-hanging fruit approach is proposed, in rough order of priority: | |||
1) Add on/off/on-demand features to auto-sync so that user can have full control of when sync takes place | |||
2) User configurable auto-syncs strategies to prioritise and include/exclude messages downloaded by auto-sync | |||
3) Better handling of MIME parts so they are only downloaded once | |||
: a) Caching of large MIME parts e.g. attachments | |||
: b) Support for offline storage of MIME parts | |||
=== How To Do It === | |||
With the exception of on-demand sync 1) and 2) can be implemented using strategies. These features and more will be supported in an extension, 'Incommunicado' (see below). | |||
On-demand sync however requires some development. [[User:Emre]] has proposed the following implementation: | |||
* Add a new operation mode (lets say on-demand) to nsAutoSyncManager. | |||
* Add new method to nsAutoSyncManager to explicitly tell to re-prioritize the queue. | |||
* When running in on-demand mode, it should ignore idle events. | |||
* When running in this mode, nsAutoSyncManager should keep downloading all pending messages until either it is all done, or the user explicitly says STOP. | |||
For 3) modifying the cache implementation and offline storage to better support MIME parts is non-trivial. This will be tackled at a later stage, in the meantime it may be possible to avoid current problems by increasing the cache size and configuring it to save to disk rather than memory ({{bug|439731}} comment #12). | |||
== Incommunicado Extension == | |||
=== Target Features === | |||
Target features for first release of the Incommunicado extension in rough priority order | |||
* Simple auto-sync strategy (see nsIAutoSyncManager) | |||
** only download messages greater than MAX_SIZE on user request | |||
* User interface | |||
** add column showing state of message, i.e. o - header only, x - downloaded | |||
** icon to toggle offline/online plus support for additional states (below) | |||
* Priority folders | |||
** user can select which folders are highest sync priority | |||
* Incommunicado state | |||
** user can select 'incommunicado' in addition to online/offline | |||
** custom auto-sync strategy | |||
*** only download messages greater than MAX_SIZE on user request | |||
*** only priority folders are downloaded | |||
== Other Concerns == | |||
Some other features/behaviour of TB that may need to be investigated to have complete control over bandwidth usage: | |||
* Auto-update | |||
* Junk mail | |||
edits