From MozillaWiki
Jump to: navigation, search
Please use "Edit with form" above to edit this page.


Big Files
Stage Shipped
Status In progress
Release target Thunderbird 13
Health OK
Status note `


Product manager Jb Piacentino
Directly Responsible Individual Jb Piacentino
Lead engineer David Bienvenu
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead `
UX lead Blake Winton
Product marketing lead `
Operations lead `
Additional members `

Open issues/risks


Stage 1: Definition

1. Feature overview

This Thunderbird feature provides a way to use online storage services to store large size email file attachments. With this feature, email file attachments are replaced by urls pointing to an online file storage server, where the files can be found.

This feature is meant to:

  • offer a way to easily share very large files through email
  • reduce ‘file too big’ bounce email situations
  • encourage file sharing over copying
  • save recipients inbox space and eliminate file duplication for multiple recipients
  • increase attachment sending and receiving speed

A brilliant way of putting it has been done by xkcd

A tight and smooth integration with Thunderbird will be required to facilitate usage and adoption of this alternative way of sending a file via email. See use cases below for examples of UI integration point.

Online storage services can be of different categories:

  • cloud file storage services such as DropBox, YouSendIt, Box.net...
  • document management platforms such as Google Docs or MS Skydrive,
  • enterprise document sharing resources such as MS SharePoint...
  • or more traditional network storage resources such as network drives or FTP folders.

2. Users & use cases

When a user attaches a 'Big File'

If the file is above a certain size, warn the user and offer to use online storage instead of attachment. Note: The size could be an arbitrary value, or set by the user, or even retrieved on the fly by analyzing recipients domains (gmail.com for example has a limit of 25MB).

When an email is bounced

If Thunderbird detects that the bounce reason is a 'File Too Big', offer to resend via BigFile.

On-the-fly setup/signup

If the user is about to use BigFiles but has not configured TB for it, allow the setup or signup procedure to happen on the fly, in such a way that the user should not have to bother pre-confguring BigFiles before first using it. A list of pre-configured online storage services should be proposed for setup or signup.

File detach to the cloud

Detaching a file from an email should be possible both on local/network drives and in the cloud. Detaching to the cloud will save local storage space and make the document accessible from the cloud.

Quota management

Detect over quota situations (mostly in the case of consumer online storage services free offers) and guide towards resolution (signup for premium service, file deletions...)

Advanced features

Some cloud storage services offer advanced features. For example, some consumer online storage services offer document tracking (YouSendIt for example). Making this information available through Thunderbird might be interesting for these users.

Faster attachment transmission

- File is uploaded once regardless of how many users are on the 'To/Cc/Bcc' list - Sending the same file through different emails (to different set of recipients) could reuse already uploaded file, saving the upload time. - File upload/download is binary vs. encoded when using email attachment: twice as less data transfered

3. Dependencies


4. Requirements

  • APIs access to consumer & professional online storage services. Potential supported services:
    • File storage services: YouSendIt, Box.net, DropBox, Ubuntu One, Amazon Cloud Drive
    • Document management platforms: Google Docs, MS SkyDrive
    • Enterprise services: MS Sharepoint
    • Others: FTP, network drives


This is not a replacement to file attachment. Care should be taken to make it clear in the UX (for example through a specific UI), whilst facilitating the use of BigFiles when using 'regular' attachments.

We are also not, for this iteration, supporting the creation of multiple accounts with the same service provider. This will be addressed in a later version.

Stage 2: Design

5. Functional specification


6. User experience design


Stage 3: Planning

7. Implementation plan


8. Reviews

Security review


Privacy review


Localization review




Quality Assurance review


Operations review


Stage 4: Development

9. Implementation

The bug # for this feature is bug 698925

Work is being done on this feature branch.

Stage 5: Release

10. Landing criteria


Feature details

Priority P1
Rank 010
Theme / Goal `
Roadmap Thunderbird
Secondary roadmap `
Feature list Thunderbird
Project `
Engineering team `

Team status notes

  status notes
Products ` `
Engineering ` Things to do.

Milestone 1: (Feb 15th - Done Feb 13th.) (Includes Thunderlympics week.)

  • Go over wording. (Jan 26th - Done Jan 26th)
  • Fix remove account dialog string (Feb 3rd - Done Feb 1st)
  • Enable YouSendIt account registration (Done Feb 1st)
  • Decide what happens if we've maxed out the available accounts, and try to add another one? (Feb 3 - Done Feb 1st)
  • Account Management. (Feb 3rd - Done Feb 3rd)
    • Spinner while waiting to authenticate. (Feb 3rd - Done Feb 3rd)
    • Fix quota numbers in management view for DropBox accounts (Feb 3rd - Done Feb 3rd)
    • Go over add/remove button enabled states. (Feb 3rd - Done Feb 2nd.)
    • Add UI for authorizing an account after a failed auth attempt. (Feb 3rd)
  • Add Account Dialog needs title on OS X and more explanation. (Feb 3rd - Done Feb 3rd)
  • When suggesting to attach a big file, the notification bar says "Cancel". This should probably be something else, since "Cancel" suggests that it will revert the adding of the attachment, as opposed to opt-ing out of big-filing. (Done Feb 8th)
  • Some theming, and making it pretty. (ongoing)
  • Remove the "Need an Account?" link from the Add an Account dialog for Dropbox, since this option already exists in the OAuth window that Dropbox operates. (Feb 10th - done Feb 9th)
  • Put the What's This text into the Add An Account dialog, and just get rid of the What's This button altogether. (Feb 10th - done Feb 9th)
  • "Use my Dropbox account", vs, just "Dropbox" in the dropdown menu. (Feb 10th - done Feb 10th)
  • How come my Dropbox oauth window is so small? Why do I have to scroll? Let's just make it bigger for now. (Feb 10th - done Feb 10th)
  • Make sure the provider icon not stretch in the richlist (done Feb 10)

Milestone 2: (Feb 29th - we're going to be slipping to Friday.)

  • Replace all usage of "DropBox" with "Dropbox" as per branding guidelines. (done Feb 14th)
  • Make "Outgoing" the default tab in the Attachments pane in the Preferences dialog. (done Feb 14th)
  • Make links in management panels open up in the default browser (done Feb 15th)
  • Make it so that when adding a YouSendIt account, we don't have to reauth to view settings (done Feb 16th)
  • We need a YouSendIt PNG icon. (done Feb 27th)
  • Need to add Jb and Anne Marie to the DropBox testing group (done Feb 27th)
  • We need UI for changing the file-size threshold for notifying about BigFiles. (done Feb 27th)
  • Language corrections to the Add Account dialog (done Feb 27)
    • Window title should be "Setup a new file sharing service" (done Feb 27)
    • Text should emphasize "share" over "attach" (done Feb 27)
    • Text should not explicitly mention storage providers (done Feb 27)
    • "Select an account type" should be "Select a file sharing service" (done Feb 27)
    • "Add Account" button should be "Setup Account" (done Feb 27)
  • OAuth Dialog Fixes (done Feb 27)
    • Remove the header, and use an uneditable URL bar instead (to prevent phishing)
  • The language of the notification bar should emphasize "share" over "attach" (done Feb 27)
    • Update the buttons to be "Share it", or "Attach it"?
  • Test creating a Dropbox account from the OAuth dialog (done Feb 27th - works)
  • We need a link to create YouSendIt accounts (done Feb 28th)
  • Change URL insertion header "I've shared 3 attachments" to "I've shared 3 files with you" (done Feb 28th)
  • Attachment URL Insertion (Done Feb 29th)
    • We want to insert URLs at attachment upload completion time (done Feb 27th)
    • We can wedge images in there via data-urls. (done Feb 27th)
    • Add the feature advertisement text below the last item (done Feb 27th)
    • We need to annotate the inserted URL with the filename, the storage service, etc, to make it clear that it's a link to a file on a cloud file provider. (See Google Docs file send/share emails for examples...or YouSendIt e-mails). (done Feb 27th)
    • Removing the cloud file attachment should remove the URL from the message. (done Feb 27th)
  • Failure cases. (Feb 29th)
    • Delete the cloud attachment when converting from cloud storage (done Feb 15th)
    • Disallow conversion while an upload is happening (done Feb 4th)
    • Add a "stop upload" command? (done Feb 19th)
    • Disallow drag-and-drop between compose windows (done Feb 16th)
    • Disallow send while upload is still in progress (done Feb 15th)
    • Alert the user if deletion of a cloud attachment failed (done Feb 19th)
  • More theming, and making it pretty. (ongoing)
  • When YSI tokens are stale, if we have remembered the password, we should try reauthenticating with it before prompting the user. (mconley)
    • When getting user data (done Feb 28th)
    • When uploading a file (Not needed, since user data is updated each time before a file is uploaded)

Milestone 3: (Mar 9th)

  • Fix attachment URL insertion on replies to BigFiles mail. (mconley) (Done March 5th)
  • Allow each provider to provide a homepage link (mconley) (Done March 5th)
  • Move account prefs from mail.cloud_files.* to mail.cloud_files.accounts.* (mconley) (Done March 5th)
  • Make feature pref-offable. (mconley) (Done March 5th)
  • Find a better place to store oauth tokens than prefs (mconley) (Done March 5th)
  • When YSI tokens are stale, if we have remembered the password, try reauthenticating the user automatically before prompting
    • When deleting a file (mconley) (Done March 6th)
  • Make footer link in HTML email URL attachments point to somewhere (mconley) (Done March 6th)
  • Link underlines in HTML email don't match link colour (mconley)(Done March 6th)
  • Fix YouSendIt recipients (currently pointing to dbienvenu) (mconley) (Done March 6th)
  • Need to put Dropbox API key into production mode to increase testing exposure (bienvenu)
  • Need to handle saving as draft and reloading drafts when there are cloud attachments. (bienvenu)
  • Saving as Drafts bugs
    • Attachment not listed in bucket on attach and save on draft (bienvenu)
      • Create a new message, and attach a cloud file
      • Save as a draft and close the compose window
      • Reopen the message, and attach another cloud file.
      • Save as a draft and close the compose window
      • Reopen the message - the second file is not listed in the bucket. Icon in inserted HTML URL might be broken.
  • Improve activity feedback after manually authorizing in preferences dialog (mconley)
  • Investigate weird behaviour with mixed attachment types
    • Observed weird behaviour is the normal attachments being renamed on the receiver end
  • Switch from global attachment nsIObserver events to window-specific DOM events (squib)


  • Security and Privacy Reviews (Feb 29th-ish)
  • Spinner doesn't give enough information. (Mar 9th)
    • We can't determine upload progress using nsIRequestObserver, so satisfying this requirement would likely involve changing the nsIMsgCloudFileProvider interface, along with a bunch of our code. bug 736169
  • Part of the notification text could be a link to an external "What's this" page. bug 737348
  • Test that URL insertions happen in expected locations bug 736055
  • Fix layout for management panes on OSX bug 736155
  • Convert between different cloud providers (mostly done)
    • Need to remove the old html link before adding the new one.
  • More theming, and making it pretty. (ongoing)
  • Support drag-and-drop of cloud attachments between compose windows?
  • Whatever comes up from Anne-Marie's Milestone 2 User Testing. (Unknown until we get more data.)
  • I10n sweep (in particular, the Dropbox and YouSendIt management / settings iframe documents)
  • Revisit themeing / colours for inserted attachments in HTML mail
  • Investigate using something other than the modal alert box on uploading/delete errors in the compose window
  • Canceling a message with cloud file attachments should delete the uploaded files from the server (may need to special case drafts and templates)
  • Use a better graphic to indicate "loading" in the main selected item panel in the preferences dialog when loading account information.
  • Some tests are missing. (As many as we can write before the deadline.)
    • A lot of the UI tests.
    • No fake provider.
    • Testing with accounts other than mconley's.
    • External service starts sending garbage.
    • We can't log in for some reason
Security sec-review-complete Notes
Privacy ` Privacy/Reviews/ThunderbirdBigFiles
Localization ` `
Accessibility ` `
Quality assurance ` `
User experience ` `
Product marketing ` `
Operations ` `

Contribute to this feature.

Questions not answered


  • How to position this feature vs attachment. This is NOT a replacement to file attachment. (see 'Non goals' section above)
  • Not all online storage services categories can possibly be addressed in v1. What guiding principles to apply to make a choice ? (do we know the user segment most interested in this ?)
  • Are there differences in different countries ? Some consumer storage providers more popular in some countries ?

Use cases:

  • How to deal with offline mode ?
  • Are there cases where TB should or could delete a file ?
  • Should the online file make reference to the email that created it ?
  • Some online storage services have file expiration dates (on free accounts). Is it acceptable ? Can the recipients understand there is a limited lifetime to the link ?
  • Some providers rely on a synchronization model (Dropbox, Ubuntu one...) vs direct file access (FTP, network drive...). and recommend using an installed synchronization application. Is this a problem ? Is it mandatory (can we use web APIs for TB and let users choose to install the client if they want to ?)
  • Does the local client helps offline use (sync happens when going online, in the background) ?
  • Recipients must not have to register to the online service provider to have access to the online file.
  • What happens when Thunderbird retrieves a message which is marked as having a detached file? Should it download it and store it as if it was an original attachment, then present it with the same UI? That might be the most seamless way of making it seem like ordinary file attachment - but are some files too big even for this?


  • Senders _should_ be able to ensure that a big file can only be viewed by the recipients of the email (this should be the default setting). Is this true possible for all providers ?
  • In the same idea, what behavior to expect if the email is forwarded to someone not on the original distribution list ?
  • What technology for provider API implementation ?
  • Can this be done through a web app exposing web intents ? Can the web app be local ?
  • Each provider must be supported through an installable provider (web app or add-on), some of which are distributed by default with TB
  • FTP servers are difficult to set up for average users (at least to ensure security & privacy). Can this be offered to an average consumer (probably one of the the reason why online file storage are popular)
  • Note that Thunderbird already supports external file urls for attachments. We use these when we detach an attachment. We put in place holder headers as follows:
X-Mozilla-External-Attachment-URL: file:///C:/Users/David%20Bienvenu/Documents/75960.pdf
X-Mozilla-Altered: AttachmentDetached; date="Tue Sep 27 09:20:29 2011"

But the url could be a http or ftp url. So we could offer attachment storage for messages the user has already received, i.e., detach to the cloud.