#100 policy: Add that all packages in default stream should be part of module API
Merged 2 years ago by ppisar. Opened 2 years ago by ppisar.
fedora-docs/ ppisar/modularity default_stream_full_api  into  master

@@ -16,6 +16,7 @@ 

  * Packages provided at runtime by the default stream of a module *MUST* depend only on packages provided by packages from default module streams or the non-modular package set. By extension, default streams of a module *MUST NOT* have a dependency on any non-default stream.footnote:[It is highly recommended that default streams have no module dependencies besides the platform to avoid potential future conflicts during upgrades.]

  * Packages provided from default streams *MAY* depend on content from other default streams. If they do so, this dependency *MUST* be encoded in the module metadata.footnote:[This is so that if the maintainers of either module wishes to change its default stream, it is easy to see what other modules would be impacted and coordinate it.]

  * All packages provided at runtime by the default stream of a module *MUST* provide all the same functionality that a downstream consumer would expect from a package in the non-modular package set.footnote:[If a package is not filtered out from the default module stream, it is going to be part of the default-available content and therefore must be treated (and supported) just like a non-modular package.]

+ * All packages provided at runtime by the default stream of a module *SHOULD* be declared as a module API or bundled appropriately.footnote:[This ensures that all packages installable with `dnf install package` are fully supported as any non-modular package.]

  * The default stream of a module *MUST NOT* change to a different stream within a released Fedora version.footnote:[This is an extension of the https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/#stable-releases[stable updates policy].] The default stream *MAY* be changed in Rawhide or during Fedora upgrades. Changes to default streams *MUST* be approved via a https://docs.fedoraproject.org/en-US/program_management/changes_policy/#_change_process[Fedora Change proposal].

  * Packages *MAY* convert from a non-modular package to a modular default stream (or the reverse) only in Rawhide or during Fedora upgrades.

  * Default streams *MUST NOT* provide a binary RPM with the same package name as a non-modular RPM in the same release except in the case of a transition from one to the other.footnote:[Modular packages shadow non-modular ones. This rule ensures that we don't have any shadowed packages in the default package set.]

That approval was by the previous modularity working group.
A new approval seems to be required by FESCo https://pagure.io/fesco/issue/2761.

How do I understand "or bundled appropriately"?

It means the package's files (programs, libraries, manuals) are not in standard lookup paths, so they cannot be used accidentally by a third-party.

Flatpacks or software collections is an example of bundling. They install "bundled" files into a private directory.

Thanks for the explnation. It isn't obvious from the policy itself, but I cannot think of better wording.

Perhaps instead of "bundled appropriately" what we really mean is "not visible to the package manager as an installable package"?

I think the policy should make it clear that if the default stream offers a package, it's part of the API. If they want to avoid that, they must not ship that package (through whatever appropriate means).

In that case the "or bundled appropriately" clause is completely irrelevant and I'd rather remove it.

Another point which baffles me is the SHOULD modal verb. It sounds like you would expect a common class of exceptions. If this should be strict rule, then we should use MUST.

Pull-Request has been merged by ppisar

2 years ago
Metadata