by Adam Šamalík
(independent of the distribution)
(different variants or different generations)
(mostly because of conflicting dependencies)
Fast updates
& latest versions?
Slow updates &
stable versions?
Includes the kernel, glibc, and other basic tools and libraries with proven long-term ABI stability.
Similar concept to Android or iPhone apps.
Like a database, Firefox, or a LAMP stack.
Defining its components, an API, a build recipe,
and install profiles.
"Stop it! We want to see some code, Adam!"
document: modulemd
version: 1
data:
    # An ID of the module.
    name: foo
    stream: stream-name
    version: 20160927144203
    # What's the module about?
    summary: An example module
    description: >
        A module for the demonstration of the metadata format. Also,
        the obligatory lorem ipsum dolor sit amet goes right here.
    # How can I use it? How can I change it? Can I sell it?
    license:
        module:
            - MIT
        content:
            - Beerware
            - GPLv2+
    # Where does it live?
    references:
        community: http://www.example.com/
        documentation: http://www.example.com/
        tracker: http://www.example.com/
    # Some extra metadata can be here.
    xmd: ~
    # What do we need to build and run this module?
    dependencies:
        buildrequires:
            base-runtime: stream-name
            base-runtime-build: stream-name
        requires:
            base-runtime: stream-name
    # What sources we want to build? In which order?
    components:
        rpms:
            bar:
                rationale: We need this to demonstrate stuff.
                ref: f26
            baz:
                rationale: This one is here to demonstrate other stuff.
		ref: f24
            xyz:
                rationale: xyz is a bundled dependency of baz.
		ref: f24
                buildorder: 10
        modules:
            includedmodule:
                rationale: Included in the stack, just because.
                ref: stream-name
                buildorder: 100
    # Any binary packages we don't want to include?
    filter:
        rpms:
            - baz-nonfoo
    # Which packages are the reason this module exists?
    # (Other packages are just dependencies,
    #    treated like an implementation detail.)
    api:
        rpms:
            - bar
            - bar-extras
	    - baz
    # Ways to install this module.
    profiles:
        default:
            description: Normal instalation
            rpms:
                - bar
                - bar-extras
		- baz
        minimal:
            description: Minimal instalation.
            rpms:
                - bar
Like an RPM repository, Linux Container, Flatpak, OSTree, ISO, etc.
$ dnf install httpd$ dnf install httpd
...
$ vim /etc/httpd/configuration.file$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
...
$ vim /var/www/index.html$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
...
$ vim /var/www/index.html
...
$ systemctl start httpd$ dnf install httpd
...
$ vim /etc/httpd/configuration.file
...
$ vim /var/www/index.html
...
$ systemctl start httpd
#.... few days later ....
$ dnf update
Major versions or variants of an application.
Or get an iso with pre-selected streams - similar to the current situation.
So "$ dnf update" works!
https://docs.pagure.org/Modularity