Third-party Software Mechanism
Summary
Update mechanism for opting-in to "Third-Party Software Repositories" so that the repositories are immediately enabled.
Owner
- Name: Owen Taylor
- Email: otaylor@redhat.com
Current status
- Targeted release: Fedora Linux 35
- Last updated: 2021-07-15
- FESCo issue: #2643
- Tracker bug: #1982749
- Release notes tracker: #720
Detailed Description
'Note that this proposal is about a change to how third-party repositories are enabled, not about including anything new in Fedora.
Currently, when the user opts in to "Enable Third-Party Software repositories", the fedora-workstation-repositories
package is installed, but with the repositories disabled.
With this change, fedora-workstation-repositories
will be installed by default (required by fedora-release-workstation
), and opting in to "Third-party Software Repositories" will actually enable the repositories.
Fedora Workstation Issue: #105 Ship fedora-workstation-repositories on install media
Conformance to Fedora policies
Third-Party Repository Policy:
The third-party nature of the repository must be apparent to the user when they enable it, as should the non-free status of its content, if such. To ensure this, repository files must initially include the enabled=0 (or equivalent) setting, and the user must explicitly enable third-party repositories to install from them.
This proposals is a new implementation of "explictly enable third-party repositories". There is no proposed change to which third-party repostories are shipped - and in particular this change does not include splitting fedora-workstation-repositories to conform to the recommendation of the current guidelines.
Technical implementation
- There is a
fedora-third-party
package with afedora-third-party
script withenable/disable/refresh/query
subcommands. The status is stored in/etc/fedora-third-party.conf
- Packages like
fedora-workstation-repositories
that include third-party repositories will drop config files into/usr/lib/fedora-third-party.d/*.conf
. There will be a post-transaction file trigger to runfedora-third-party refresh
, which applies the users opt-in status to newly installed repository files. - We add a new page to GNOME Initial Setup that has a a switch to enable third-party repositories (see image below)
- If the user leaves the box checked, GNOME Initial setup runs
fedora-third-party enable
. - For upgrades, GNOME Software shows an info-bar with the same question if no status is stored in
/etc/fedora-thirdparty.conf
Feedback
Benefit to Fedora
The main benefit of this proposal is the removal of the state where the user has opted in to third party repositories but they are not actually enabled. PackageKit supports the enabled_metadata=1
key in a repository file, which allows applications to be searched in this state, but this is not supported by DNF.
The new method is also easily extensible to Flatpaks, where there also no equivalent to enabled_metadata=1
, even in GNOME Software.
Scope
- Proposal owners: Create and test proposed
fedora-third-party
package. Implement the graphical controls for this in GNOME Software and gnome-initial-setup. - Release engineering: #10186 No changes are required.
- Policies and guidelines: Third-party Software guidelines will need minor changes to remove references to
enabled_metadata=1
. Pending finalization of technical implementation. - Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives: No real alignment
Upgrade/compatibility impact
Because the "opt-in" status to 3rd party software is currently represented by whether fedora-workstation-repositories is installed, and because fedora-workstation-repositories will become an installed-by-default package, users will need to opt-in again.
They can do this either by responding in the infobar that will be displayed in GNOME Software, or by running fedora-third-party enable
on the command line.
How To Test
- A fresh install of Fedora Workstation where the user does not opt-in should have all repositories disabled.
- A fresh install of Fedora Workstation where the user does opt-in should have all 3rd-party repositories enabled.
- On an upgrade from F34, if the user opts-out, the enablement status of third-party repositories should be unchanged (try enabling one before the upgrade)
- On an upgrade from F35, if the user opts-in, all 3rd party repositories should be enabled.
User Experience
The user will get less confusing behavior around third-party repositories - enabled will mean enabled and will take affect no matter how they are installing packages.
See https://hackmd.io/@owtaylor/fedora-third-party-repos for a detailed description of the *current* experience along with some notes about the desired behavior.
Dependencies
The changes are limited to the following packages:
- The new
fedora-third-party
package fedora-workstation-repositories
gnome-software
gnome-initial-setup
fedora-release-workstation
and other release packages that will now require fedora-workstation-repositories.
This change proposal is a prerequisite for a separate change proposal to add a filtered view of Flathub to the set of third-party repositories.
Contingency Plan
- Contingency mechanism: revert all changes back to the F34 state. (This will also require reverting the filtered-view-of-Flathub change.)
- Contingency deadline: beta freeze
- Blocks release? Yes - this needs to be finished or reverted
Documentation
This should be a link to a man page for the fedora-third-party
tool
Release Notes
Fedora optionally provides repository definitions allowing users to install certain third-party software. This used to be done as a two-step process where when the user asked to enable third-party repositories, the repository definitions were installed but not actually enabled, and they had to be separately enabled. With Fedora 35, this is simplified so that the repository definitions are installed by default, but only enabled if the user opts in.
If you are upgrading from an older version of Fedora, you'll need to opt-in again - this can be done by running GNOME Software and accepting the prompt that is shown on the initial page. Alternatively, you can run fedora-third-party enable
from the command line. If you do not wish to enable third-party repositories, no action is needed.