From Fedora Project Wiki

< Changes

Revision as of 14:42, 28 July 2021 by Catanzaro (talk | contribs) (Toggle will be off by default, don't imply that it will default to enabled)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Third-party Software Mechanism

Summary

Update mechanism for opting-in to "Third-Party Software Repositories" so that the repositories are immediately enabled.

Owner

Current status

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 a fedora-third-party script with enable/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 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 has a a switch to enable third-party repositories (see image below)
  • If the user enables the third-party repos, 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

Initial setup page

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.