Re: Modularity and the system-upgrade path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 7, 2019 at 11:33 AM Jaroslav Mracek <jmracek@xxxxxxxxxx> wrote:
>
> I would like to open discussions more widely, because we are talking about future of software distribution and discussing only particular issue is not an approach how to delivery solid and stable architecture.
>
> What issues I have in mind?
Your list of issues lacks sufficient context.

> 1. Fedora system upgrade (libgit2, axa, bat)
>

In this case, are we talking about F30->F31 where the default stream
changes or also considering when the dependencies need to change?

> 2. Adding new stream into distribution
> - will result in an error
>

Uhh, why? Maybe there are some missing words here indicating under
what conditions adding a stream to the distro would cause problems?

> 3. Removal of stream from distribution
> - dependent module on removed stream will creates modular dependency error
>

Assuming we only allow this to happen at the release boundary, I think
this is desirable behavior. If someone has locked themselves to a
stream, we should disallow upgrades of the platform if the new
platform cannot support that stream.

> 4. Changing stream dependency
> - dependency issue
>

I try to address that in my design proposal.

> 5. Removal of module from distribution (replaced by non-modular packages)
> Fail safe data will persist forever
>

Please provide more information here, because I don't see where you're
coming from.

> 6. Upgrade path between contexts
> This will help with modular dependency resolution
>

Can you state the problem more thoroughly? I *think* what you're asking is this:

"Module A" can function with either "http:2.4" or "http:2.6" as its
dependency. "Module B" can only function with "http:2.6" as a
dependency. Installing Module A results in DNF selecting "http:2.4" to
resolve the transaction. Later, the user wants to install "Module B":
How should DNF proceed?

There are two possible routes we could take:
1) Dependency error when trying to install "Module B". Optionally
provide aid to the user that they might be able to manually switch
streams from "http:2.4" to "http:2.6" before attempting to install
"Module B"
2) Automatically perform an "upgrade" step where all software
installed from "http:2.4" is replaced by content from "http:2.6" as
part of the transaction. This is probably the more user-friendly
approach, but it may have some subtle complexities in the
dependency-resolution (dealing with nested dependencies) that I can't
predict offhand.


> 7. Upgrade path between module streams
> So far this is not described or part of the design
>

This actually is part of the design. Or, rather, it is explicitly not
specified. The idea was that we would deal with upgrade path between
module streams on a case-by-case basis, since not all streams actually
can transition between them. For the proposal of following the default
streams, we'd need to ensure that rules are in place that such streams
need to behave similarly to how they would have in non-modular Fedora
(meaning a clean upgrade path, possibly with automatic migration
tools).

> 8. Module switching
> At the present time this is completely disabled for stability reasons
>

Acknowledged. See above.

> 9. Changing defaults o redesign of defaults
> - defaults have the same behavior like enabled modules. Only problems with defaults are less critical.
>
> Some of requirements are in conflict. Like user must be not able to switch a stream by accident but stream must be changed automatically in other example.
> Resolving each of this points have consequences in behavior on other parts of modularity and rpm environment therefore any change must be planned well.
>

Yes, which is why I consulted with user experience designers before
proposing the approach in the original post. It's difficult to strike
a balance between "keeping the user safe" and "keeping the user
happy". We decided that the only reasonable line we could draw was
"did the user ask for this directly or did they just take what was
handed to them".

> Some issues could be resolved by additional data in metadata like obsoletes, information about substreams. Others by changing implementation in dnf/libdnf. The last important part is represented by packaging restrictions, guidelines (people must know limitation of technology).
>

Obsoletes are something we may want to consider, but I think they
should follow whatever behavior we settle on for tracking changes in
the default stream. Meaning: they should only be allowed for cases
where an upgrade can be performed safely/automatically or a special
case like fedora-obsolete-packages to forcibly remove things from the
user's system.

> Lets also ask question what we can change for Fedora 31, 32, or 33?
>

I assume this actually means "Let's figure out what schedule to
deliver these things on".
_______________________________________________
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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux