FESCo has requested that I submit the module policy once more to the Fedora development list for discussion. Feedback is welcome. Plainext (asciidoc) below, much more readable HTML at https://sgallagh.fedorapeople.org/docs/modularity/modularity/policies/ = Policies Regarding Modules in Fedora, Fedora ELN and EPEL == Requirements for All Module Streams * The module maintainer *MUST* have explicit commit privileges to all packages included in the module stream. The provenpackager privilege in Fedora is not sufficient.footnote:[This ensures that the package in the module is being maintained by someone responsible for it.] * Components built into a module *MUST* be associated with a reachable commit in Fedora dist-git.footnote:[There are legal and licensing requirements for reproducibility of builds.] * If a stream of a module has build-time-only components, all such components *MUST* be marked as `buildonly: True` in the module metadata to avoid shipping them to users and polluting their repository. == Requirements for Default Streams * Default streams are not permitted in Fedora or EPEL 8. Fedora ELN permits defaults streams that adhere to the policy below. * All RPMs in default module streams are required to conform to the same https://docs.fedoraproject.org/en-US/packaging-guidelines/Conflicts/[requirements around Conflicts] as non-modular RPMs. * 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.] * 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.] * Default streams *MUST NOT* provide a binary RPM with the same package name as an RPM in a default stream in the same release except in the case of a transition from one to the other.footnote:[In this situation, whichever has the highest NEVRA would win the depsolving and could break the other module.] * Multiple default streams *MUST NOT* provide the same binary package names at runtime.footnote:[They *MAY* provide other well-known names in the same manner as permitted for non-modular content. For example, two different default streams *MAY* provide content to be used with the `alternatives` system or virtual `Provides` for capabilities.] * Default streams *MUST NOT* provide a package that overrides a package of the same name in the non-modular content except in approved cases of migration between modular and non-modular delivery. * Default streams *MUST NOT* use the `data.buildopts.rpm.macros` metadata section without approval by FESCo.footnote:[This feature allows for overriding the standard macros for building packages in Fedora and should be avoided entirely for default streams so they are built just like non-modular packages.] _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx