Distribution-wide Changes

Improved usage data gathering through DNF

Before Fedora 32, The Fedora Project was estimating the number of installed Fedora systems by counting the unique IP addresses which access updates from the official mirrors. This approach is highly inaccurate for multiple reasons, such as undercounting due to NAT and overcounting due to short DHCP leases and laptops moving between different network connections, and this approach also doesn’t allow for distinguishing between Fedora variants. At the same time, accurate usage metrics are highly useful for any software project that wants to serve its community and remain relevant, and so The Fedora Project has been exploring ways to obtain more useful information without compromising privacy of its users.

In Fedora 32, when the installed system contacts one of the official Fedora mirrors, it provides the following information ("user agent"):

  • Fedora version (such as "Fedora 32").

  • Fedora variant (such as "Server").

  • Operating system and architecture (such as "Linux.x86_64").

  • A newly introduced countme variable.

The countme variable is used by Fedora Project to determine the age of the system. The variable has four possible values:

  • 1 within the first week of installation - 0-7 days.

  • 2 between the first week and the first month of installation - 8-30 days.

  • 3 between the first month and the the first 6 months of installation - 31-180 days.

  • 4 after the first 6 months of installation - 180 days or more.

Using this system, The Fedora Project can measure the usage levels of various combinations of architectures and variants and collect data short and long term usage of each variant. At the same time, this system avoids collecting any identifying information about any client system.

If you wish to disable this behavior, change the value of the countme boolean in DNF configuration. See the dnf.conf(5) man page for details.

This system will not be active on Fedora Project’s side at the moment of Fedora 32 release because the server side portion is not ready. Clients will send their user agent including countme, but it will not be processed at first.

Physical optical media does not require pre-GA testing

Since Fedora 32, the operating system to be installed from the physical optical media will not need to be tested before the general availability. However, issues regarding physical media boot will still be treated as blocker bugs.

The change will affect the following images:

  • Fedora-Everything-netinst-x86\_64-<RELEASE_MILESTONE>.iso

  • Fedora-Workstation-Live-x86\_64-<RELEASE_MILESTONE>.iso

The change aims to address the trend of ever decreasing amount of new computers and laptops with CD/DVD drives, and errors that installation using this media entails.

As a result, the Fedora QE Team and community testers will have more capacity to test parts of Fedora that are far more visible and exposed to end users.

Due to some bugs, users might not be able in some cases to complete the installation from optical media.

Packaging changes in clang-libs package

The clang-libs package no longer includes individual component libraries like libclangBasic.so, libclangAST.so and so on. Packages that depend on the clang libraries are now linked to libclang-cpp.so.

As a result of this change:

  • There is an improved stability in Fedora and application start-up time.

  • End-users who develop applications using clang libraries are required to update their applications to use libclang-cpp.so instead of the individual component libraries.

  • End-users who use Fedora packages that depend on clang libraries do not have any impact due to this change.

Added support for AArch64 and ppc64le packages with extended availability of FPC-dependent packages

An updated version (3.2.0) of Free Pascal Compiler is now available with Fedora 32. With the updated Free Pascal Compiler you can now build Arch64 and ppc64le packages. Also, the Free Pascal Compiler now supports new architectures. As a result, the programs that are compiled using FPC are available to run on more architectures that Fedora supports.

Adopting sysusers.d format

Previously, users were created in %pre section by calling the commands getent, useradd, and groupadd.

With this update, users are defined in the sysusers.d format. It adds an rpm package Provides generator to create user(<name>) and group(<name>) virtual Provides for packages with sysusers.d files.

An rpm package Provides generator is added to generate user(<name>) and group(<name>) for packages with sysusers.d files.

As a benefit:

  • Packages declare system users using a uniform syntax.

  • Scriptlets are more standardized.

  • Admins may easily inspect the system user list and find which packages require users.

  • Admins may easily override definitions of system users by providing appropriate sysusers.d files with higher priority.

    Users are still created using old-style useradd calls.

Limited scriptlet usage of core packages

In Fedora 32, core packages (packages that are used to build the minimal container image) have had all of their scriptlet calls (%pre, %post, %preun, %postun) removed. This means the entire install process of the container image is now declarative and transparent to packaging tools such as rpm, ostree, or composer, the installation is faster, and keeping this approach in the future will allow for additional optimizations and features.

Packages can still make changes to the system during installation by placing files in specific locations that trigger actions.

Faster recovery from low-memory situations in Fedora Workstation

The earlyoom service is now enabled by default in Fedora Workstation.

The earlyoom service monitors system memory usage. If free memory falls below a set limit, earlyoom terminates an appropriate process to free up memory. As a result, the system does not become unresponsive for long periods of time in low-memory situations.

The following is the default earlyoom configuration:

  • If both RAM and swap go below 10% free, earlyoom sends the SIGTERM signal to the process with the largest oom_score.

  • If both RAM and swap go below 5% free, earlyoom sends the SIGKILL signal to the process with the largest oom_score.

For more information, see the earlyoom man page.