Commit 94cb1279 authored by Peter Senna Tschudin's avatar Peter Senna Tschudin

docs/software-distribution-and-updates.md: stakeholders feedback

This change aims to address the feedback received on the previous
version by making it explicit which tools offer software update features
and which tools offer software distribution features.

It also adds to the introduction a section about challenges application
developers face when dealing with release based Linux distributions and
the tools that we suggest to minimize the problems.
Signed-off-by: Peter Senna Tschudin's avatarPeter Senna Tschudin <peter.senna@collabora.com>
parent c2cf0849
......@@ -20,6 +20,70 @@ criteria:
* Rollback capabilities
* Configurable permissions for applications to access user data and system resources
### System updates and rollback
[System updates and
rollback](https://designs.apertis.org/latest/system-updates-and-rollback.html)
was written as a description of a proof of concept, and contains detailed
documentation about system updates and rollback of updates. The two documents are
complementary with some overlap between the two.
### Linux distributions and custom applications
On release based distributions, such as Debian, the API and ABI are expected to
be stable over the entire life cycle of a release. The API and ABI stability is
achieved by selecting an specific major version of each software component that
make up the distribution, and stick to that version during the entire release.
Updates during a release are mostly fixes for bugs and security issues. The
general rule is that new features are added only on new releases by selecting
newer major versions of the software components. Updating to a new release is
usually possible but may involve updating all software.
In Debian based distributions a file with .deb extension is a package that
contains meta-data and the files for installing one piece of software such as
an application or a library. A package is built from source code for one
specific distribution release, meaning that packages cannot be safely reused on
different releases of a Linux distribution.
A custom application is an application that is not part of the distribution.
When using the traditional package-based approach, the custom application
developers are required to create and maintain one package for each release of
each Linux distribution supported. Supporting multiple releases and multiple
distributions is time consuming, and is usually perceived as overhead, slowing
down the custom application development.
### Software updates
Software update is the process of modernizing already installed software. The
most common goals of an update are fixing bugs, removing security
vulnerabilities, and adding new features. Updating a software component may
also involve updating the chain of dependencies of that software component.
A few solutions were created to alleviate the problems custom application
developers have on Linux distributions, such as the overhead of maintaining
packages for multiple releases of various distribution. This document describes
two that are made for complementary use cases: Docker and Flatpack. This
document also describes OSTree as a solution for base operating system update
that offers atomic updates and reliable rollback capabilities.
### Software distribution
Software distribution is the process of delivering software to users and
devices. It usually refers to the distribution of binaries of software to be
installed or updated. However software distribution is more than a transport
layer for packages. Software distribution can include authorization, inventory,
and deployment management.
The software distribution infrastructure for traditional tools such as
`apt-get` basically consists of static content providers, and has no
intelligence to make decisions tailored to individual users. Making software
distribution decisions based on payment, user profile, hardware profile, and
other business rules is usually not possible using only the package and
repository infrastructure of standard Linux distributions.
This document describe components that provide features of software
distribution that can be combined to meet Apertis requirements: OSTree,
Flatpak, Docker, hawkBit and Flathub.
## Terminology
### Application and services
......@@ -39,9 +103,8 @@ or separately as
### Bundles
A bundle or "application bundle" refers to a method of software
distribution, and software update for a unit that represent all the components
of an Application or service. Comparing to mobile phones a bundle is
A bundle or "application bundle" refers to a unit that represent all the
components of an Application or service. Comparing to mobile phones a bundle is
similar to a phone "app", and we would say that an Android .apk file contains a
bundle. Some systems refer to this concept as a package, but that term is
strongly associated with dpkg/apt (.deb) packages in Debian-derived systems,
......@@ -68,9 +131,9 @@ usage.
As mentioned earlier applications and services can be deployed as part of the
Base operating system or separately as
[bundles](https://wiki.apertis.org/Glossary#application-bundle). However the
Base operating system is a monolithic unit and has an immutable filesystem
meaning that applications deployed as part of the Base operating system cannot
be updated separately nor can be removed at run time.
Base operating system can be handled as a monolithic unit with immutable
filesystem, meaning that applications deployed as part of the Base operating
system cannot be updated separately nor can be removed at run time.
## Use cases
......@@ -147,7 +210,7 @@ providing independence between the development cycles of the two components.
Example of applications that should be distributed as bundles: Applications
on infotainment systems must be decoupled from the Base operating system to
allow users to install and remove applications on their own, and to allow
applications to be stored separately for different users. It may also be also
applications to be stored separately for different users. It may also be
desirable to decouple from the Base operating system some core applications
like a Wi-Fi settings manager without letting users uninstall them.
......@@ -228,7 +291,7 @@ However in the context of updates the major gain is the predictability of
updates. Atomic updates minimize the possibility of an update rendering devices
to an unknown state in case of failure.
Another advantage is the reliability of roll backs, which is superior than what
Another advantage is the reliability of rollbacks, which is superior than what
is possible to achieve with a mixed solution using apt-get and btrfs for
example
(See [apt-btrfs-snapshot](https://github.com/skorokithakis/apt-btrfs-snapshot)).
......@@ -246,8 +309,8 @@ execution insulation when compared to more conventional packaging and
distribution systems such as dpkg and apt-get. Flatpak uses libostree under the
hood to provide OSTree efficiency and robustness to application management.
Docker is a well known solution encapsulation, distribution and execution of
containers. In the context of Apertis a container is similar to a bundle,
Docker is a well known solution for encapsulation, distribution and execution
of containers. In the context of Apertis a container is similar to a bundle,
making Docker also a suitable solution.
Flatpak and Docker can fulfill similar roles for decoupling applications from
......@@ -263,9 +326,8 @@ service between the two.
## Deployment management
Deployment management services are meant to let operators control which
applications is installed on the fleet of devices on the field. Some also offer
control for managing the base OS while other solution focus on the applications
running on top.
applications are installed on the fleet of devices on the field, with some
tools also offering control for managing the base operating system.
### Eclipse hawkBit
Eclipse hawkBit is a back-end framework for managing software updates to edge
......
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