--- title: Product Requirement Document Proposal tags: Documentation, Fedora, Fedora server description: PRD for Fedora Server --- :::danger This discussion page is closed now. The final version can be found at https://fedoraproject.org/wiki/Server/Product_Requirements_Document_2021 This document is now for reference only. Don't edit or add any comments here! ::: # Product Requirement Document 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. ## 1. Fedora Server Vision Fedora Server is a real-world incarnation of the [Fedora Project's vision](https://docs.fedoraproject.org/en-US/project/) for organizations, individual users, and developers to deploy, develop, and maintain applications and services – freely, autonomously, and under their own control. ## 2. 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 a platform for developers and system integrators, which provides an implementation of the latest server technology for further evaluation and practical appropriation. ## 3. 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 cloud, containers, SaaS, 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 oportunity to discover these features and provide a stable place to deploy applications, both new and legacy. Fedora Server providing latest technology on a stable foundation with effective resource utilization provisions system administrators with tooling to keep their services on par with attractive ongoing technical evolution and opportunities and use new features an a everyday base as soon as possible. ### 3.1 Why use Fedora Server? Fedora Server has so many genuine advantages that it is hard to list them all. The eight most important ones are: 1. 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. 2. 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. 3. Fedora release engineering strongly focuses on enterprise-grade security, resulting in carefully pre-configured releases, offering uncompromising security without extensive configuration work by system administrators. 4. A great variety of available software, all included in that release process, opens up a wide range of possibilities for very flexibly building a server according to the specific needs and wishes of a customer or end-user. 5. The latest, stable, modern system administration tools (i.e. cockpit, dnf, systemd) noticeably reduces the burden of system administration. 6. Strict alignment with other Fedora editions & the bi-annual releases, upgrades are less disruptive – several small updates are easier to manage than a few big ones. The update 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 the maintenace work turns out to be very system administrator friendly. 7. Fedora Server ensures utmost freedom from restrictions imposed by commercial interests or corporate feature management and excellent backwards hardware compatibility (including a complete set of standard kernel drivers). 8. Developer find an excellent development environment for the next generation server as well as application software with the latest software versions available. ## 4. Server Edition Objectives Fedora Server Edition offers a highly flexible and adoptable multi-purpose server platform, usable at every scale. It is meant to be used for the following purposes among others: - An operating platform for important infrastructure tasks and basic services (DNS, DHCP, FreeIPA, and others) - An operating 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 containerised 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 platform in a server cluster in a data center. As a result of strict adherence to open standards, it natively cooperates with different server technologies and implementations. ### 4.1 Additional Overall Objectives Aside from the adoption and development of the Fedora Server platform, we have additional goals that are fundamental to all variants: - **Security-minded:** secure by design - extending into TPM support, disk encryption enablement - **Community driven:** Intensified 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. ## 5. Primary Use Cases, User Profiles, and most important Features ### 5.1 Use Cases The Fedora Server will need to address the following use-cases: 1. 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 2. 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. 3. 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. 4. 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. 5. Development box, providing developers with the latest software version and excellent developing tools ### 5.2 Personas 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 Vms 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 plattform 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. ### 5.3 Most Important Features 1. 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 FreeIPA Domain Controller, OpenStack Hypervisor Node, and the like) 2. The user can query, monitor, configure and manage a Fedora Server and the resources consumed by services remotely using stable and consistent public interfaces. 3. The user can simply deploy and configure Fedora Server to provide domain infrastructure with FreeIPA and Samba Active Directory (both domain controllers and domain members). 4. Users can create, manipulate and terminate large numbers of virtual machines and containers using a stable and consistent interface. 5. 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. ## 6. Specific Upcoming Goals Fedora Server Edition working group is determined to be an active advocate and reviewer of technical evolution and proposed system changes to continuously see what progress and opportunities they enable or how they will affect the Server variant. For the coming term, special attention should be paid to 1. Improved support for off-premise Kickstart and pxe installation 2. Facilitated and improved support for using Base Cloud Images as virtual machines in Feder Server Edition. 3. Providing easy installation and pre-configuration for key services as mail, calendar, databases, Web service, domain controller, etc. (linux system roles), preferably using tools such as Ansible. 4. Easy integration into multi-node environments with tools like Ansible 5. Buildup of a renewed documentation on Fedora Server specific topics, procedures and features. Special consideration should be the suitability also for new and less experienced system administrators. ## 7. Logistical Concerns ### 7.1 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. ### 7.2 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. ## 8. About this Document This document resulted from a broad discussion of the Fedora Server Edition working group. Contributors include: - Alexander Bokovoy - Peter Boy (editor) - Kevin Fenzi - Stephen Gallagher - John Himpel - David Kaufmann - Jan Kuparinen - Eduard Lucena - Michel Salim - Stephen Smoogen