From Fedora Project Wiki
Warning.png
Draft
This is an unapproved draft.

Purpose

This page describes where and how the Fedora products interact, and how the interactions are managed.

Products

Note: these products are up to be defined precisely by the respective working groups. The summaries are purposely minimal to hopefully fit with these definitions.

Cloud

One-sentence summary: Horizontal scaling of a single network service.

A Cloud installation (whether on physical hardware (?), VM or as a container) is designed to run a single network service (often a server or a web page; may include associated monitoring and control tools that need to run for each instance of the network service), adding capacity by adding more Cloud installations that are, as much as possible, identical. The Cloud installation is frequently managed "from the outside" (by building images, modifying a container FS image, etc.)

Requirements:

  • Provide a way to run network services
    • Provide a way to installset up the Cloud product with the language runtime, and libraries/middleware required for the network service, and the network service itself.
That is a single network service, so a single language runtime may be enough (? probably not).

Server

One-sentence summary: Multiple network services available on a single computer over the network.

A Server installation (whether on physical hardware or VM) provides multiple services (which may or may not interact, e.g. a shared account database for SMTP/IMAP, or completely independent mail and NTP). It may also provide "local" applications available through ssh (.. which is "over the network").

Requirements:

  • Run the various server applications.
Note that this is silent on whether the server applications are an integral part of the Server product or independent additions to it, or on anything else about them.
  • Provide a way to run the same network services as on Cloud
This is, in a sense, the core of the proposal.
    • Provide a way to install multiple "Cloud" language runtimes and libraries/middleware on the Server product.
    Intentionally not requiring these language runtimes and libraries to be shared with "server applications".
    • Provide a way to install and run multiple "Cloud" network services simultaneously.

Workstation

One-sentence summary: A local GUI that is independently useful, and can be used to develop Cloud network services.

(This is not talking about the GUI; only about the use of the product for software development.)

Requirements:

  • Allow development of "Cloud" network services
    • Provide a way to install multiple' "Cloud" language runtimes and libraries/middleware on the Workstation product.
    • Provide a way to deploy, locally run and debug (development builds of?) "Cloud" network services by unprivileged users.

Non-products

Base Design

Implied...

Requirements:

  • Define how to "package" (create, store, download, installset up) the "Cloud" language runtimes, libraries/middleware and applications, to be usable on all three products.

Questions:

  • Should any language runtimes, libraries/middleware be defined to be a part of the Base Design as "the Fedora (Cloud? or not-only-Cloud?) runtime"?
  • Is choosing and maintaining the tools to consume the packages (e.g. rpm) up to the base design, or up to individual projects?
  • More generally, is "base design" more "the minimum that must be there for the project to be Fedora", or "most of the things required for all Fedora products"?
  • glibc should "obviously" be a part of the Base Design and not of the individual language runtimes. Where do we draw the line?

Environments & Software Stacks

Implied...

Requirements:

  • "Package" and maintain the Cloud language runtimes, libraries and middleware that are not a part of the Base Design.