Commit 297fd54f authored by Ulrike Uhlig's avatar Ulrike Uhlig
Browse files

Heavy polishing on typos and genders.

parent ed69f655
...@@ -6,26 +6,26 @@ Rationale ...@@ -6,26 +6,26 @@ Rationale
========= =========
Tails includes a coherent but limited set of applications. As the system is Tails includes a coherent but limited set of applications. As the system is
amnesic, new software packages for Debian can be installed a in a working amnesic, new software packages for Debian can be installed in a working
session but they are not installed anymore next time Tails is started. session but they are not reinstalled at next reboot.
Additional Software Packages is a feature to remember a set of Debian Packages Additional Software Packages is a feature to remember a set of Debian Packages
to be installed automatically from [[persistent to be installed automatically from [[persistent
storage|contribute/design/persistence]] each time Tails is started. storage|contribute/design/persistence]] each time Tails is started.
Usecases Use cases
======== =========
Alice is a geograph working for a NGO in an unstable country. She needs Alice is a geographer working for an NGO in an unstable country. They need
to use Tails but needs the QGis SIG to work. It would make little sense to use Tails but needs the QGis SIG to work. It would make little sense
to add such a specific software in Tails. But thanks to Additional to add such a specific software in Tails. But thanks to Additional
Software Packages, she can have QGis installed every time she boots Software Packages, Alice can have QGis installed every time when they boot
Tails with her persistence enabled. Tails with persistent storage enabled.
Bob is a journalist and he wants to publish colleagues videos. He needs Bob is a journalist and wants to publish videos made by other
often needs to convert them and is used to the open source video transcoder colleagues. Bob needs to convert these videos and is used to the open
HandBrake. With Additional Software Packages, he doesn't need to install source video transcoder HandBrake. With Additional Software Packages,
it every time he boots its Tails anymore. Bob doesn't need to install it every time when they boot Tails.
Specifications Specifications
============== ==============
...@@ -35,7 +35,7 @@ Goals ...@@ -35,7 +35,7 @@ Goals
- Allow people to choose to: - Allow people to choose to:
- Reinstall a package every time they start Tails. - Reinstall a package every time they start Tails.
- Stop reinstalling a package every time. - Stop reinstalling a package every time on boot.
- Integrate this in: - Integrate this in:
- The usual installation and removal process of a package (through - The usual installation and removal process of a package (through
...@@ -44,12 +44,12 @@ Goals ...@@ -44,12 +44,12 @@ Goals
- Ensure packages are installed even offline. - Ensure packages are installed even offline.
- Ensure packages are updates when connected to the Internet. - Ensure packages are updated when the machine is connected to the Internet.
Non-goals Non-goals
--------- ---------
- We won't support installing software that are not in Debian - We won't support installing software that is not in Debian's official
repositories. repositories.
- We won't provide a way for people to specify which packages to install - We won't provide a way for people to specify which packages to install
...@@ -81,15 +81,15 @@ contains a package name per line and install these packages with `apt-get` ...@@ -81,15 +81,15 @@ contains a package name per line and install these packages with `apt-get`
(using `DEBIAN_PRIORITY=critical` and the command line options `--yes` and (using `DEBIAN_PRIORITY=critical` and the command line options `--yes` and
`--option DPkg::Options::=--force-confold`). `--option DPkg::Options::=--force-confold`).
In the beginnihg of the process, the user is notified through desktop In the beginning of the process, the user is notified through desktop
notifications that additional software are being installed: notifications that additional software is being installed:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - installing.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - installing.png"/>
In the end, she is informed of success of failure. On the latter case, she is In the end, they are informed of success of failure. In the latter case, they are
offered to open a configuration window or to examine to logs to better offered to open a configuration window or to examine the logs in order to better
understand the issue. The notifications with buttons displayed as the desktop understand the issue. The notifications with buttons displayed are as the desktop
user are implemented in user and are implemented in
[[!tails_gitweb config/chroot_local-includes/usr/local/lib/tails-additional-software-notify]]. [[!tails_gitweb config/chroot_local-includes/usr/local/lib/tails-additional-software-notify]].
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - installation failed.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - installation failed.png"/>
...@@ -98,7 +98,7 @@ user are implemented in ...@@ -98,7 +98,7 @@ user are implemented in
Software upgrade on Internet connection Software upgrade on Internet connection
--------------------------------------- ---------------------------------------
A network-manager dispatcher hook starts the systemd unit A network-manager dispatcher hook starts the systemd unit
[[!tails_gitweb config/chroot_local-includes/lib/systemd/system/tails-additional-software-upgrade.path]] [[!tails_gitweb config/chroot_local-includes/lib/systemd/system/tails-additional-software-upgrade.path]]
which waits for `/run/live-additional-software/installed` then starts the which waits for `/run/live-additional-software/installed` then starts the
oneshot service `/usr/local/sbin/tails-additional-software upgrade` after oneshot service `/usr/local/sbin/tails-additional-software upgrade` after
...@@ -108,20 +108,20 @@ if the configuration file ...@@ -108,20 +108,20 @@ if the configuration file
empty. empty.
[[!tails_gitweb config/chroot_local-includes/usr/local/sbin.tails-additional-software]] [[!tails_gitweb config/chroot_local-includes/usr/local/sbin.tails-additional-software]]
`update` saves a copy of apt lists, then starts `apt-get update` and launch the `update` saves a copy of apt lists, then starts `apt-get update` and launches the
installation process again, trigerring an upgrade if necessary. installation process again, triggering an upgrade if necessary.
If the upgrade is successful, the copy of old apt lists is deleted. If the upgrade is successful, the copy of old apt lists is deleted.
Else, it would be restored by the installation process next time Tails Else, it would be restored by the installation process next time Tails
is started, ensuring that a network disconnection or another unexpected is started, ensuring that a network disconnection or another unexpected
issue doesn't make the Additional Software Packages unavailable. issue doesn't make the Additional Software Packages unavailable.
In the beginning of the process, the user is notified through desktop In the beginning of the process, the user is notified via desktop
notifications that additional software are being upgraded. notifications that additional software is being upgraded.
In the end, she is informed of success of failure. On the latter case, In the end, they are informed of success of failure. In the latter case,
she is offered to open a configuration window or to examine to logs to they are offered to open a configuration window or to examine the logs
better understand the issue. in order to better understand the issue.
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - upgrade failed.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - upgrade failed.png"/>
...@@ -136,25 +136,25 @@ Two APT hooks are configured in ...@@ -136,25 +136,25 @@ Two APT hooks are configured in
[[!tails_gitweb config/chroot_local-includes/etc/apt/apt.conf.d/80tails-additional-software.disabled]], [[!tails_gitweb config/chroot_local-includes/etc/apt/apt.conf.d/80tails-additional-software.disabled]],
which are enabled by which are enabled by
[[!tails_gitweb config/chroot_local-hooks/99-zz-install-ASP-DPKG-hooks]] in the [[!tails_gitweb config/chroot_local-hooks/99-zz-install-ASP-DPKG-hooks]] in the
end of end of the build process.
the build process.
The first hooks `DPkg::Pre-Install-Pkgs` runs before any actual The first hook `DPkg::Pre-Install-Pkgs` runs before any actual
installation happens and calls installation happens and calls
`/usr/local/sbin/tails-additional-software apt-pre` which saves a list `/usr/local/sbin/tails-additional-software apt-pre` which saves a list
of installed and removed packages as JSON in of installed and removed packages as JSON in
`/run/live-additional-software/packages`. `/run/live-additional-software/packages`.
The second hook `DPkg::Post-Invoke` runs in the end of the installation process The second hook `DPkg::Post-Invoke` runs in the end of the installation
and calls `/usr/local/sbin/tails-additional-software apt-post`. It double forks process and calls `/usr/local/sbin/tails-additional-software apt-post`.
so that APT properly returns, then parses the JSON file written before to check It double forks so that APT properly returns, then parses the JSON file
which packages were manually installed or removed. written beforehand in order to check which packages were manually
installed or removed.
### When a package is installed ### When a package is installed
<img src="https://labs.riseup.net/code/attachments/download/1925/asp-flow-installed.svg" height="auto" /> <img src="https://labs.riseup.net/code/attachments/download/1925/asp-flow-installed.svg" height="auto" />
#### With a persistent storage unlocked: #### With persistent storage unlocked:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - add.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - add.png"/>
...@@ -163,21 +163,21 @@ When *Add To Persistent Storage* is clicked, ...@@ -163,21 +163,21 @@ When *Add To Persistent Storage* is clicked,
`tails-persistence-setup` without a GUI to enable the `tails-persistence-setup` without a GUI to enable the
`AdditionalSoftware` preset. The new additional packages are then added `AdditionalSoftware` preset. The new additional packages are then added
atomically to the `live-additional-software.conf` configuration file atomically to the `live-additional-software.conf` configuration file
(this logic is handeled by (this logic is handled by
[[!tails_gitweb submodules/pythonlib/tailslib/additionalsoftware/config.py]]) [[!tails_gitweb submodules/pythonlib/tailslib/additionalsoftware/config.py]])
#### With no persistent storage #### Without persistent storage
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - add without persistent storage.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - add without persistent storage.png"/>
When *Add To Persistent Storage* is clicked, When *Add To Persistent Storage* is clicked,
`/usr/bin/tails-persistence-setup` is started as `/usr/bin/tails-persistence-setup` is started as
`tails-persistence-setup` with a GUI to let the user through the process `tails-persistence-setup` with a GUI to lead the user through the process
of creating a persistent storage. The `AdditionalSoftware` preset is of creating a persistent storage. The `AdditionalSoftware` preset is
automatically enabled. The new additional packages are then added to the automatically enabled. The new additional packages are then added to the
`live-additional-software.conf` configuration file, which is in this `live-additional-software.conf` configuration file, which is in this
case mounted in `/media/tails-persistence-setup/TailsData` instead of case mounted to `/media/tails-persistence-setup/TailsData` instead of
`/live/persistence/TailsData_unlocked` (this logic in handeled by `/live/persistence/TailsData_unlocked` (this logic in handled by
[[!tails_gitweb submodules/pythonlib/tailslib/persistence.py]]). [[!tails_gitweb submodules/pythonlib/tailslib/persistence.py]]).
The systemd service The systemd service
...@@ -185,25 +185,24 @@ The systemd service ...@@ -185,25 +185,24 @@ The systemd service
is used to synchronize APT data (lists and cached packages) to the newly is used to synchronize APT data (lists and cached packages) to the newly
created persistent storage on Tails shutdown. created persistent storage on Tails shutdown.
#### With a persistent storage locked #### With persistent storage locked
No notification is displayed as people No notification is displayed as people who have a persistent storage but
who have a persistent storage but don't unlock it, probably do this only don't unlock it, probably do this only sometimes and for a reason. They
sometimes and for a reason. They probably otherwise unlock their probably otherwise unlock their persistent storage most of the time. If
persistent storage most of the time. If they install packages with their they install packages with their persistent storage locked, they
persistent storage locked, they probably do it with their persistent probably do it with their persistent storage unlock as well and would
storage unlock as well and would learn about this feature when it's most learn about this feature when it's most relevant for them.
relevant for them.
#### When it's impossible to have a persistent storage #### When it's impossible to have persistent storage
This happens when This happens when running from a DVD, virtual machine, or intermediary
running from a DVD, virtual machine, or intermediary Tails. Tails.
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - impossible persistent storage.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - impossible persistent storage.png"/>
The state file `/run/live-additional-software/installer-asked` ensures The state file `/run/live-additional-software/installer-asked` ensures
this notification in only shown once per session, not to bother people this notification is only shown once per session, not to bother people
too much. too much.
### When a package is removed ### When a package is removed
...@@ -212,15 +211,15 @@ too much. ...@@ -212,15 +211,15 @@ too much.
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - remove.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - remove.png"/>
When *Remove* is clicked, the packages are packages removed When *Remove* is clicked, the packages are removed atomically from the
atomically from the `live-additional-software.conf` configuration file `live-additional-software.conf` configuration file (this logic is
(this logic is handeled by handled by
[[!tails_gitweb submodules/pythonlib/tailslib/additionalsoftware/config.py]]). [[!tails_gitweb submodules/pythonlib/tailslib/additionalsoftware/config.py]]).
Additional Software configuration window Additional Software configuration window
---------------------------------------- ----------------------------------------
The list of additional software can be open from: The list of additional software can be opened from:
- **Applications**&nbsp;▸ **System Tools**&nbsp;▸ **Additional Software** - **Applications**&nbsp;▸ **System Tools**&nbsp;▸ **Additional Software**
- **Applications**&nbsp;▸ **Tails**&nbsp;▸ **Additional Software** - **Applications**&nbsp;▸ **Tails**&nbsp;▸ **Additional Software**
...@@ -234,8 +233,8 @@ This application is implemented in the following files: ...@@ -234,8 +233,8 @@ This application is implemented in the following files:
- [[!tails_gitweb config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui]] - [[!tails_gitweb config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui]]
If there is no persistent storage or before any package is added, if the If there is no persistent storage or before any package is added, if the
persistent storage is locked or if it is impossible to have a persistent persistent storage is locked, or if it is impossible to have a persistent
storage (for example, when running from a DVD or virtual machine) the window storage (for example, when running from a DVD or a virtual machine) the window
shows an explanation text with appropriate pointers: shows an explanation text with appropriate pointers:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - without persistent storage.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - without persistent storage.png"/>
...@@ -246,8 +245,8 @@ shows an explanation text with appropriate pointers: ...@@ -246,8 +245,8 @@ shows an explanation text with appropriate pointers:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - impossible persistent storage.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - impossible persistent storage.png"/>
When some packages are already added, the window displays a list of When packages have already been added, the window displays a list of
Additional Software Packages: these Additional Software Packages:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software.png"/> <img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software.png"/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment