Fedora Cloud — Edition, not an Edition, and the future

I’m not sure how much I can add to this, but as the person who first proposed the “Fedora Products” split, I can at least try to provide a bit of context.

Back around Fedora 19, the Project was suffering. We were hemorrhaging users to other distributions (in part because of the not-at-all-controversial switches to systemd and GNOME 3). Beyond that, we were getting pressure from inside Red Hat about the value of Fedora as it skewed more and more heavily into a desktop-focused distribution and was therefore looking less valuable as a basis for RHEL.

So I proposed the idea that we would take the idea of Spins and go a bit further with it. The idea was to build the distribution in such a way that we could produce deliverables to address specific needs in the marketplace, rather than being a one-size-fits-few “bag of Lego™ bricks” (as Matthew liked to describe it). In particular, the big change we needed to make (beyond the ability to compose multiple trees) was the ability for different Fedora “flavors” to have different default setups. For example, Workstation and Server groups in Fedora had wildly conflicting perspectives on the default filesystem, SSH server and firewall state (among other things).

I pitched the topic at the first Flock conference in Charlotte, North Carolina in one of the early main-room sessions and it continued into numerous hallway track conversations from there. One of the most important points that was raised was that for this to work, we’d need for the Products (later renamed “Editions”) to serve a specific need. This had to be a meaningful chunk of a marketplace. So we initially decided that we wanted to focus on three main areas, with the option to expand or contract the number of Editions as needed:

  1. The desktop use case - We wanted to ensure that we didn’t lose the loyal users that had stayed with us up to this point, but we also wanted to pick something more focused than “general desktop user”. We settled on the idea of a Workstation Edition that was designed around some common user personas to do work (initially we focused on software development, but later branched out into a somewhat more general space).
  2. The “pets” use case: In the old pets-vs-cattle metaphor, you had some systems (“pets”) that you always care for and keep running for a long time. These would be fundamental to your environment (Domain controllers, Storage servers, databases, etc.) that care deeply about “uptime” and “reliability”. For this, we decided that we would create a Product called “Fedora Server” to address those needs.
  3. The “cattle” use case: These were the short-lived, throwaway instances that could be used for rapid scaling of services. As such use-cases were generally handled in “the Cloud”, we opted to create a Cloud Product that would focus on making Fedora a player in that space.

Over time, the VM-based nature of Cloud computing gave way to containers and Kubernetes, and the perceived value of having a primary deliverable focused on a dwindling use-case was dropping. That was about the time that rpm-ostree was maturing to a point where it could be relied upon for a complete distribution and we opted to switch the “cattle” focus from VMs over to containers and container hosts. Initially, this was Project Atomic until that eventually merged with CoreOS to become Fedora CoreOS.

All of this has been a somewhat long-winded way of saying that the Editions have always been very targeted at filling a specific niche. “Cloud” is too broad of a concept, and it’s part of why we’ve considered numerous times that “cloud images” should just be a delivery artifact of Fedora Server and Fedora CoreOS rather than their own separate Edition.

Cloud images are very valuable to the Fedora Project! We do not want to lose them, nor do I want to suggest that not calling them an Edition means they are unimportant. From my perspective (and how I originally envisioned things), an Edition needs to solve a particular problem. Server for example solves the “I need a secure-by-default platform for running persistent services in my environment”. Workstation solves the “I need a platform that allows me to do my job with a minimum of hassle and a maximum of efficiency” case. But Cloud really only ever existed to provide a minimal base image for building upon.

To use a slightly different metaphor, I think this lines up with how the US Supreme Court decided some important patent cases in the early 2000s. Essentially, they ruled that “you can’t patent something that would not be patentable simply by adding the words ‘on a computer’ at the end of the description.” Essentially, they ruled that the novelty (and therefore patentability) came from the solution that the device/process presented, irrespective of the delivery mechanism. To my mind, this is exactly what Cloud should be: We should have a cloud image for Fedora Server for those who want to run their essential services on a private or public cloud. We should have a cloud image for Fedora CoreOS for people to build their container hosts in a cloud. Maybe we should even have a Cloud Workstation for people who want a centrally managed virtual desktop setup.

I just don’t think that “Fedora Cloud” in and of itself is an Edition. Find a use-case that is exclusively about the cloud (for example, managing and monitoring public, private and hybrid clouds) and build THAT, rather than simply offering a minimal base image. Maybe create and ship Fedora OpenStack, a tool to easily set up your own private cloud. Or Fedora OpenShift: manage containers in the public cloud using Fedora’s exciting new container tools! These ideas are, to me, better examples of what an Edition would be.