Third-party Software Mechanism
Update mechanism for opting-in to "Third-Party Software Repositories" so that the repositories are immediately enabled.
- Name: Owen Taylor
- Email: firstname.lastname@example.org
- Targeted release: Fedora Linux 35
- Last updated: 2021-06-29
- FESCo issue: will be assigned by the Wrangler
- Tracker bug: will be assigned by the Wrangler
- Release notes tracker: will be assigned by the Wrangler
'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
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.
- There is a
fedora-third-partypackage with a
enable/disable/refresh/querysubcommands. The status is stored in
- Packages like
fedora-workstation-repositoriesthat include third-party repositories will drop config files into
/etc/fedora-third-party.d/*.conf. There will be a post-transaction file trigger to run
fedora-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 asks a single question, *along the lines of*:
Enable Third Party Software repositories?
☑ Access additional software from selected third party sources. Some of this software is proprietary and therefore has restrictions on use, sharing, and access to source code.
[Find out more...](https://fedoraproject.org/wiki/Workstation/Third_Party_Software_Repositories)
- If the user leaves the box checked, GNOME Initial setup runs
- For upgrades, GNOME Software shows an info-bar with the same question if no status is stored in
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.
- Proposal owners: Create and test proposed
fedora-third-partypackage. 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
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.
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.
The changes are limited to the following packages:
- The new
fedora-release-workstationand 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 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
This should be a link to a man page for the
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.