From Fedora Project Wiki

And an attempt to get the vocabulary consistent

Author: Stephen Tweedie

Building modular things TOC

  1. The package
  2. The module
  3. The stack
  4. The image or artifact
  5. How do these parts fit together?


We have some basic terminology confusion around modules. Is a container image the same thing as a module? Is a software collection a single module, or a group of modules? We can often get away with being vague, but for technical planning we need to be able to distinguish between all these concepts.

I propose we use these terms:

  • Package. Essentially, the same thing as an rpm. In the future it might be non-rpm content but should fit the same role.
  • Module. A set of packages tested and released together as a distinct unit, complete with the metadata needed to manage it as a unit. May depend on other modules.
  • Stack. A complete tree of modules. A stack can be thought of as a top-level module, with the understanding that we’re implicitly including all of that module’s dependencies in the stack.
  • Artifact or image. An actual set of bits built out of modules, in a format intended to be distributed or deployed in some way.

Generally, these serve distinct purposes. A module is a building block; a stack contains all the software for a complete solution; an artifact is a concrete object containing a stack (or stacks) for distribution to users.

We will also distinguish between:

  • A Build of a package: a process which involves compiling source code and creating a packaged output; and
  • A Compose of a module: a process which assembles pre-compiled packages into an organised module, but which includes no compilation step itself.