On Wed, Aug 22, 2018 at 5:48 PM Owen Taylor <otay...@redhat.com> wrote:

> What are the possibilities for how a stream is maintained? The cases I can
> think of:
>
>  * Indefinite - rolling forward with upstream - "master" "stable" etc.
>  * Tied to an upstream version and it's EOL -  a "2.1" stream of django
>
 * [less common] tied to a particular version of Fedora - the "29" stream
> of flatpak-runtime
>
> How do your proposed mechanisms handle these cases?
>

The first proposal isn't really a proposal, it's basically the current
state. As it is now, it would only handle a specific date. However, we
could extend it with an "infinite" and "specific fedora release" options
easily, I believe.

The second one would work with all three cases with a little attention of
the maintainer:

* case 1, indefinite: The maintainer would keep it in rawhide and the
package would continue rolling.
* case 2, a specific date: The maintainer would keep it in rawhide until
the EOL date approaches, after which they would just remove it from rawhide
by setting its EOL to the latest release.
* case 3, a specific release: The maintainer would set the EOL to be this
specific release.


>
> It seems like by trying to automatically determine an EOL, the intent of
> module maintainer might not be respected - e.g. you might include a package
> with a short EOL intending to rebase to newer versions as necessary.
>

Good point!

>
> What if we just had a streams.yaml file checked into the master branch of
> git and gave the maintainer the flexibility to set an EOL (with defaults if
> no streams.yaml is present, perhaps.) We could still write tools to check
> the EOL against that of dependencies and components, but that would just be
> used to flag problems.
>

Something like this was one of my initial thoughts as well, glad you
brought it up. Having a "forced module EOL", maybe as an optional override
could be a good idea.


>
> Owen
>
>
> On Wed, Aug 22, 2018 at 6:39 AM, Adam Samalik <asama...@redhat.com> wrote:
>
>> During the Modularity WG meeting yesterday [1], we've touched the topic
>> of module lifecycles. Even though there are some ideas in the air as well
>> as some code written, we haven't reached a state in which we would know how
>> exactly to deal with it. So I'd like to discuss it here with a wider
>> audience, and review it again in the next Modularity WG meeting.
>>
>> == Introduction: (feel free to skip this if you know what I'm talking
>> about)
>>
>> In concept, modules live more or less independently from the Fedora
>> release. So while traditional packages in Fedora are branched for each
>> Fedora release (such as f27, f28, etc.), and each branch is maintained for
>> the lifetime of its release (~13 months), modular packages and modules
>> themselves are branched in any way it makes most sense for the software
>> (mostly major version, such as nodejs 6, nodejs 8, nodejs 10, etc.) — we
>> call these "stream branches" in dist-git and "streams" when we talk about
>> modules. This has two implications, one of which is the topic of this email:
>>
>> 1) One module stream can be built and maintained for multiple Fedora
>> releases — that means it's lifecycle can be longer than just a single
>> Fedora release — and that's what this email is about
>> 2) One Fedora release can have multiple streams of modules — also cool,
>> but not discussed in this email
>>
>> If you're a visual type, watch this short animation (38 seconds):
>> https://www.youtube.com/watch?v=5VQljp1p_ok
>>
>> == The problem + what we've decided already
>>
>> Simply put, we need to have a way of indicating how long each module
>> stream lives. This should be probably defined at the package level, because
>> packages the actual software that is being maintained.
>>
>> At Flock 2017 we've discussed this topic and reached a following
>> decision: Module stream's lifecycles should be somehow aligned with Fedora
>> releases — in particular, they should be retired only at the end of a
>> release. That way we prevent a situation where different module streams
>> could be retired at any point in time, which would be pretty messy. On the
>> other hand, introducing new streams at any time should be possible, the
>> same way as we add new packages today.
>>
>> == Approaches
>>
>> Option 1: The current, yet unfinished approach
>>
>> We specify an EOL (end of life) date for each stream branch of individual
>> packages. This is done when requesting a new stream branch for a package
>> [2] by passing "--sl rawhide:2020-12-01" to fedpkg. This value is stored,
>> but not yet consumed by anything.
>>
>> The next step would be having the build system to be smart enough to:
>>
>> 1) Figure out the module's EOL based on its packages' EOLs.
>> 2) Only build the module for the Fedora releases that have their EOL
>> before the module stream's EOL.
>>
>> There is a caveat, however:  Giving dates like this might be hard for the
>> maintainer. The upstream project might not have one, etc. In that case the
>> maintainer needs to come up with a date — even one closer in the future,
>> and increase it gradually (and think about it, and do it for all the
>> packages), or one much further in the future which could imply promises the
>> maintainer had no intention to make.
>>
>> Option 2: More dynamic, based on rawhide
>>
>> Simply put, we wouldn't specify an EOL as a date, but as a Fedora
>> release. And if a maintainer indicates that a certain stream branch of a
>> package is maintained in rawhide, it would mean it's maintained for all
>> active Fedora releases + the next one + potentially forever or until it's
>> retired in rawhide.
>>
>> The build system would then do the same thing as above:
>>
>> 1) Figure out the module's EOL based on its packages' EOLs.
>> 2) Only build the module for the Fedora releases that have their EOL
>> before the module stream's EOL.
>>
>>
>> Let's discuss the overall concept, the two approaches above or propose
>> your own, or anything else that you think is relevant.
>>
>> Cheers!
>> Adam
>>
>> [1]
>> https://meetbot.fedoraproject.org/fedora-meeting-3/2018-08-21/modularity_wg.2018-08-21-14.01.html
>> [2]
>> https://docs.fedoraproject.org/en-US/modularity/making-modules/adding-new-modules/#_repositories_and_stream_branches_existing_packages
>>
>>
>> --
>>
>> Adam Šamalík
>> ---------------------------
>> Software Engineer
>> Red Hat
>>
>> _______________________________________________
>> devel mailing list -- devel@lists.fedoraproject.org
>> To unsubscribe send an email to devel-le...@lists.fedoraproject.org
>> Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
>> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
>> List Archives:
>> https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/K4FUOQHQSRAAI3PUUGXAC6CXEN27Y2JH/
>>
>>
> _______________________________________________
> devel mailing list -- devel@lists.fedoraproject.org
> To unsubscribe send an email to devel-le...@lists.fedoraproject.org
> Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
> https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/SEWRAWT3YHAD2H5PG7JS6CUZA7WQJR2H/
>


-- 

Adam Šamalík
---------------------------
Software Engineer
Red Hat
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org

Reply via email to