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.
- Provide a way to
- 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.