Understanding Fedora's Free Software Philosophy and Licensing Policies

Fedora is built on a strict commitment to free and open-source software, and its licensing policies determine which packages can be included in the official repositories.

You installed a package and it vanished from the repos

You run a fresh install, connect to the network, and try to install a media player or a proprietary graphics driver. The terminal returns a dependency error or simply says the package is not available. You check the vendor website and the software exists. You check your terminal and Fedora refuses to touch it. This is not a broken repository. This is the licensing policy doing exactly what it was designed to do.

What the licensing policy actually means

Fedora operates on a strict free software definition. The project does not judge software by its price tag. It judges software by what the license allows you to do with it. The Free Software Foundation outlines four freedoms that act as the baseline for every package that enters the official repositories. You must be able to run the program for any purpose. You must be able to study the source code and change it. You must be able to redistribute copies. You must be able to distribute your modified versions. If a license restricts any of those four points, the package cannot ship in Fedora.

Think of the repository like a hardware certification lab. Every component gets tested against a fixed standard. Components that fail the test do not ship in the box, even if they work perfectly on your desk. The licensing committee reviews every package before it enters the build system. They check the SPDX identifier, verify the license text matches the code, and ensure no hidden clauses restrict redistribution. If a vendor changes a license to something restrictive after the package is already in the repo, the next major release will drop it. The package manager protects the repo integrity over convenience.

Fedora's release cadence is six months. The N-2 release goes EOL when N+1 ships. Plan upgrades on that cycle. The licensing review happens before every release ships. Package maintainers run automated license checks during the build process. If a package suddenly changes its license to something restrictive, the next dnf upgrade will drop it from your system. You will see a message about packages being removed due to conflicts. This is intentional. Trust the package manager. Manual file edits drift, snapshots stay.

How to check and manage licenses

You need to verify what you are installing before it lands on your disk. The dnf command can show license metadata without downloading the payload. Run this to inspect a package before installation.

dnf info vlc --queryformat "%{license}\n" # Pulls only the license field from the repo metadata
dnf repoquery --qf "%{name} : %{license}" vlc # Cross-references the name with its license tag
dnf repoquery --qf "%{name} : %{license}" --available # Scans the entire enabled repo for license compliance

If you already have software installed and want to audit it, query the local database.

rpm -q --qf "%{NAME} %{LICENSE}\n" $(rpm -qa) | grep -iE "proprietary|non-free|redistributable" # Scans installed packages for restrictive license keywords
dnf list installed | grep -i firmware # Checks for binary firmware blobs that bypass standard source requirements
dnf list installed | grep -i codec # Identifies multimedia packages that may rely on external repositories

The output will list every package that matches your filter. Most modern desktop systems carry a handful of linux-firmware files. Those are the pragmatic exceptions. Fedora ships binary firmware because hardware vendors refuse to open-source the microcode for Wi-Fi and Bluetooth chips. The project treats firmware as data rather than software. That distinction keeps the network adapters working while preserving the core licensing stance.

When you need software that cannot meet the free software definition, you enable RPM Fusion. The community-run repository provides proprietary GPU drivers and patented codecs without implying Fedora endorsement. Run this to add the repositories safely.

sudo dnf install \
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm # Fetches the correct release package for your Fedora version
sudo dnf clean all # Clears cached metadata so the new repos take effect immediately
sudo dnf upgrade --refresh # Forces a fresh metadata pull and applies pending updates

The --refresh flag tells dnf to ignore cached metadata and download fresh repository headers. This prevents stale package lists from blocking your new repository. Run dnf upgrade --refresh weekly. It is the normal maintenance command. Do not confuse it with dnf system-upgrade, which is strictly for crossing major Fedora releases. They are different commands.

Verify it worked

Run a quick audit after your system updates. The dnf transaction log records every license change and repository switch.

sudo dnf history info | grep -A 5 "Removed" # Shows recent transactions that dropped packages
journalctl -xeu dnf # Checks the package manager service for license rejection warnings
rpm -V $(rpm -qa --qf "%{NAME} ") # Verifies file integrity across all installed packages

If the transaction log shows packages being removed during an upgrade, check the release notes for that Fedora version. The licensing committee publishes removal notices weeks before the ISO ships. Reboot before you debug. Half the time the symptom is gone after the system reconciles the new package set.

Common pitfalls and what the error looks like

You will hit a wall when you try to install proprietary GPU drivers or patented media codecs. The package manager will refuse to proceed and print Error: Package requires a license that is not approved for Fedora. The conflict is intentional. Do not force the installation with --skip-broken or --best. Those flags bypass dependency resolution and leave your system in a broken state.

Another common trap is editing configuration files in /usr/lib/. Files in /usr/lib/ ship with the package and get overwritten on upgrade. Always edit copies in /etc/. Manual file edits drift, snapshots stay. If you see [FAILED] Failed to start NetworkManager.service during boot, your network configuration probably references a missing interface name. Run journalctl -xe to read the actual error before guessing. The x flag adds explanatory text and the e flag jumps to the end. Most sysadmins type journalctl -xeu <unit> muscle-memory style.

SELinux denials show up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. A botched upgrade can leave you unable to boot. Run this from a backup VM first if you can. Always check systemctl status <unit> before restarting a service. It shows recent log lines AND state in one view. firewall-cmd --reload after every rule change. Otherwise the runtime config and the persistent config diverge.

When to use official repos versus third-party sources

You need to pick the right source for your software. The decision depends on what you are trying to run and how much control you want over the supply chain.

Use the official Fedora repositories when you want a stable, audited package that updates automatically with dnf upgrade --refresh. Use RPM Fusion when you need proprietary GPU drivers or patented codecs that cannot meet the free software definition. Use Flatpak or AppImage when you want sandboxed applications that bypass the system package manager entirely. Build from source when you need a specific compiler flag or a development branch that has not reached a stable release. Stay on the upstream Workstation if you only deviate from the defaults occasionally.

Where to go next