[Tails-ux] Porting DAVE to Web Extensions

Delete this message

Reply to this message
Author: sajolida
Date:  
To: Tails user experience & user interface design, anonym
Subject: [Tails-ux] Porting DAVE to Web Extensions
We are looking into porting DAVE (the Firefox extension behind
/install/download) to Web Extensions. This would be required for it to
keep working on Firefox in the future and would also make it easier to
port it to Chrome.

We contacted a freelancer to do this job and he pointed out the fact
that Web Extensions or Chrome Extensions are not allowed to read back a
file once it's downloaded (we rely on this to compute its hash). And
that the only way to read back that file would be to let the user select
it through a file chooser widget.

I think that this new limitation could lead us to rethink quite in depth
what this extension does and how it is integrated in the installation
instructions. Hopefully things would not become more complex overall.

Moving the download out of the extension
========================================

For example, in the current implementation, the download is handled by
the extension partly because it then allows the extension to know which
file has to be verified. If the user has to select the file again
anyway, then the download part could be removed from the extension and
done by the user through the native interface of the browser.

Another benefit from having the download handled by the extension is the
nice way to pause and resume the download, even across mirrors. This is
especially useful since it's a huge download. For example, on the Tor
Browser shipped in Tails 3.0~rc1 I couldn't find a way of doing this
from the native download interface of Firefox. I don't know the
situation with Firefox (and not Tor Browser) or with Chrome and I should
check.

But if we could rely on the native browser interface to pause and resume
the download, then I wouldn't mind removing it from the extension.

Anybody else knows how pausing and resuming work in Firefox and Chrome?

Making sure that people verify their download
=============================================

Another important aspect of the current extension is that it forces you
to do the verification because it's an automatic step after the
download. If the verification become an extra manual step, how could we
prevent people from missing it, skipping it, etc.?

Downloading the ISO image is always the first step in an installation or
upgrade scenario, for example:

https://tails.boum.org/install/win/usb/

So we could either:

- Find some mechanism to hide the following steps until the
verification is successful. Note that we would then have to adjust
step 3 in which we are telling people to visit the same page from
another device.

- Split the download step in a separate page and only point to the full
instructions once the verification is successful.

But none of this sounds very complicated.

Reopening the instructions
==========================

The last interesting aspect of the current extension is that, even if
you close your browser and come back to the instructions some hours
later, the extension still displays the local path of the ISO image and
that it has been verified. We thought that displaying the path would be
helpful for people to be able to find it back later on when they need to
give it to Tails Installer. If the download was not finished or
interrupted, then the extension proposes you to resume it.

I wonder if this would still be possible with Web Extensions...

Not trying to do everything at once
===================================

So we could do many things... But still I wonder what would be the
minimum changes that would be acceptable to do as a start. So I wonder
whether:

- Some aspects of the download as done by the current extension would
also be affected by Web Extensions, especially the pausing and resuming?

- It would be less coding work to decide to remove the download part
from the extension instead of porting it to Web Extensions and Chrome?