Product Requirements Document

This is the 2021 version of the document, finalized at the IRC Working Group Meeting on June 23, 2021 and approved by FESCo vote as of July 9, 2021.

This document provides an overview of what Fedora Server Edition is, the goals and objectives, and what it is designed for. It is written from a user’s point of view to allow people to understand what the Server Edition should do, what it is useful for, and what to expect from it in the future.

Fedora Server Vision

Fedora Server is a real-world incarnation of the Fedora Project’s vision for organizations, individual users, and developers to develop, deploy, and maintain applications and services – freely, autonomously, and under their own control.

Fedora Server Mission

As a user, you gain the opportunity to use the server of the future right now.

Fedora Server provides a stable, flexible, and universally-adaptable base for the everyday provisioning of services and applications by organizations and individuals, based on the latest technology and is available quickly after the upstream releases.

As a developer or system integrator, you gain an eye on the server of the future.

Fedora Server is also a platform for developers and system integrators, which provides an implementation of the latest server technology for exploring and evaluating.

Market Opportunity

The server operating system market is mature and yet, constantly evolving. The technologies that are in the midst of changing computing, such as e.g. cloud or containers, depend, at the end of the day, on servers running on bare metal and capable of handling the requirements of those technologies‘.

Fedora Server, being a leading-edge Linux distribution, is the ideal place for developers, system administrators and DevOps specialists to keep up-to-date with these low-level technologies. Fedora Server provides the opportunity to explore these features and provide a stable place to deploy applications, both new and legacy.

Fedora Server provides a stable foundation, with balanced resource utilization, yet delivering the latest technologies giving administrators every day exposure to the latest tooling as soon as it is usable.

Why use Fedora Server?

Fedora Server has so many genuine advantages that it is hard to list them all. The nine most important ones are:

  • The twice-yearly, release cycle allows for the inclusion of the latest versions of system and application software almost immediately. Users and system administrators are empowered to swiftly respond to new market options and changing or expanding customer requirements.

  • A sophisticated release and quality assurance process enables a high level of reliability and stability, despite the fast release cycle. This achieves an excellent balance between ‘bleeding edge’ and maturity for use in mainstream deployments.

  • Fedora Server includes enterprise-grade security, resulting in carefully pre-configured releases, offering uncompromising security without extensive configuration work by system administrators.

  • A great variety of available software, all included in that release process, opens up a wide range of possibilities for flexibility in building a server according to the specific needs and wishes of a customer or end-user.

  • The latest, stable, modern system administration tools (e.g. cockpit) noticeably reduces the burden of system administration.

  • Strict alignment with other Fedora editions as well as the twice-yearly releases are associated with less disruptive upgrades – several small updates are easier to manage than a few big ones.

  • The upgrade process itself is very simple and straightforward, without requiring re-installation. Skipping one release is also viable, in case new capabilities are not immediately needed. All in all, Fedora is decidedly system administrator friendly.

  • Fedora Server ensures utmost freedom from restrictions imposed by commercial interests or corporate feature management and excellent backwards hardware compatibility.

  • Developers find an excellent development environment for the next generation server as well as application software with the latest software versions available.

Server Edition Objectives

Fedora Server Edition offers a highly flexible and adoptable multi-purpose server platform, usable at every scale.

  • A platform for important infrastructure tasks and basic services (DNS, DHCP, FreeIPA, and others)

  • A platform for various important, dedicated server applications (file/storage server, database server, user-developed web applications, etc.)

  • A platform for deploying Infrastructure-as-a-Service systems for best deployment of Fedora Cloud images.

  • A platform for deploying containerized applications supporting multiple container technologies, among which the system administrator can choose according to custom requirements.

  • A platform for virtual machines, as host as well as guest system, supporting different technologies, among which the system administrator can choose according to custom requirements.

  • Infrastructure to allow efficiently managing many servers as a single unit. The product only commits to producing basic tools, but the infrastructure will allow more advanced tools to be created.

  • An operating platform capable to run any combination of forementioned services all according to very different needs of users rsp system administrators (multipurpose feature).

Fedora Server can be used as a standalone server that runs an application or service as well as a member of a cluster in a data center. As a result of strict adherence to open standards, it natively cooperates with different server technologies and implementations.

Additional Overall Objectives

Aside from the adoption and development of the Fedora Server platform, we have additional goals that are fundamental in any case:

  • Security-minded: secure by design - extending into TPM support, disk encryption enablement

  • Community-driven: Intense feedback about product direction and potential improvements. This is separate from “bug reports” in that we hope to engage the audience and receive detailed feedback about use cases, desired features, developing trends in cloud management, etc. We encourage more patches and contributions that will help improve the Server Edition, and Fedora in general.

Primary Use Cases, User Profiles, and most important Features

Use Cases

The Fedora Server will need to address the following use-cases:

  • On premise server for small and medium-sized enterprises hosting mail service, calendar, and branch specific (probably containerized) software – either single node deployment or multi-node deployment with automatic failover

  • Dedicated SOHO server, ‘bare metal’ rented from a remote provider and under its own full control, offering various services. Public access through VMs for security reasons.

  • Single node or multi-node deployment in an enterprise data center providing up-to-date software versions according to domain specific requirements in a stable and secure OS, capable to provide different runtime environments – native, VM, different container systems – driven by domain specific demands.

  • Personal home server, located ‘on premise’ in own flat / house and used as NAS, backup device, and for applications such as mail repository, contact database, calendar, ebook library, media server, etc.

  • Development box, providing developers with the latest software version and excellent developing tools

User Profiles

We will use a set of personas to describe our target users and their respective needs. We list the typical personas by brief title and a short list of key characteristics.

System Administrator "Macgyver"

  • Administrator with limited hardware and personnel resources to work with

  • Requires simple automation to cope with repetitive tasks

  • Needs to be able to do “a lot with a little”

DevOps Engineer/Administrator

  • Focus is on time-to-deploy and time-to-recover as opposed to uptime

  • Value is achieved by delivering the latest capabilities fastest

  • Needs to be able to deliver quickly to PaaS, SaaS and bare-metal servers

Application Developer

  • Needs a platform with API and ABI stability guarantees

  • Focus will be on minimizing risk when making changes

  • Needs latest technology in virtualization and containerization

  • Likes a platform similar to the workstation

Decision Maker

  • Makes purchasing decisions and directs technology choices

  • Interacts with upstream FOSS communities to identify potential value

The Home Admin

  • I need a somewhat stable machine, with a graphical interface (Cockpit) and just want to start a couple of containers and/or virtual machines to have nextcloud running on it.

  • I need some gitea here, some gitlab there, some jenkins, some photoprism, minecraft, etc. Can I build a NAS easily?

  • I am ok with updates and reboots over night, but it should work. It would be awesome to have mDNS and a Web UI.

The Hyperscaler

  • I treat my servers as “cattle, not pets”. Overall uptime is more important than individual server uptime

  • I want to have a reliable platform for virtualization, core services and container. It should be out of my way, so I can focus on scaling, monitoring, implementation

  • I want to automate server installation, and configurations for hostname, timeserver, hardening, etc. In addition I want to deploy typical services like mariadb, httpd, nginx, redis, nodejs, java, etc. in a reproducible way. To see what the machines are doing, I need a well documented way to manage, monitor and backup them.

  • My Security Team also wants me to disable unneeded services, disable legacy protocols, enable hardening on several levels.

The Remixer / "Let’s build upon it"

  • I love how Fedora works and I want to create something upon it.

  • I need a very well documented build process and maybe tools to produce new install images

  • Removing the branding should be possible with some compiler flags or variables, so I don’t need to mess with the code itself.

  • I have a raspberry/intel nuc/etc. and playing a bit with new stuff.

Most Important Features

  • The user can easily deploy and configure any supported Fedora Server application as well as rapidly re-deploy services in accordance with their DevOps practices. (Examples range from BIND DNS, DHCP, Database server, iSCSI target, File/Storage server, up to OpenStack Hypervisor Node, and the like)

  • The user can query, monitor, configure and manage a Fedora Server and the resources consumed by services remotely using stable and consistent public interfaces.

  • The user can deploy and configure Fedora Server to provide domain infrastructure with FreeIPA and Samba Active Directory solutions. Fedora Server can become Domain Controller in a newly established domain or join existing domain as a Domain Controller or a Domain Member.

  • Users can create, manipulate and terminate large numbers of virtual machines and containers using a stable and consistent interface.

  • The user is enabled to install and manage Fedora Server in a headless mode, either directly on the command line or supported by Cockpit, a lightweight Web GUI.

Logistical Concerns

Delivery Mechanisms

Fedora Server Edition produces two main installation resources, a netinstall image and an offline install iso image.

Supported installation methods:

  • Automated (“mass”) install within a larger Linux infrastructure (e.g. PXE is an option, may have LDAP/IPA).

  • Manual install without a supporting infrastructure (e.g. the very first Linux server).

  • Existing servers should be upgradable to new releases with minimal involvement by the admin.

Users will be able to obtain these images from the Fedora Project website and mirror networks.

Documentation

Fedora Server Edition documentation will be made available in a dedicated section of the Fedora documentation project. For selected topics, we strive for integration into the generic Fedora documentation.

About this Document

This document resulted from a broad discussion of the Fedora Server Edition working group. Contributors include:

  • Alexander Bokovoy

  • Peter Boy (editor)

  • Davide Cavalca

  • Kevin Fenzi

  • Stephen Gallagher

  • John Himpel

  • David Kaufmann

  • Jan Kuparinen

  • Eduard Lucena

  • Michel Salim

  • Stephen Smoogen

  • Langdon White

  • Adam Williamson