Re: Modularity and all the things

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

 



On Mon, 2019-11-04 at 14:12 -0500, Matthew Miller wrote:
> That said, it's hard to read "I see it as a solved problem and I
> don't
> understand why we are trying to solve it again" as ... helpful.
> 

Consider the message that comments like this one and your last post
send. I took the time to thoughtfully put together a set of ideas that
can solve our problems in an easier and less controversial way by
learning lessons from others who have traveled this path before us.

You could have replied to my posts explaining why you think they won't
achieve our goals. Instead, you have replied telling me that my efforts
are not helpful, or that I need to have more details figured out than
modularity does to participate in the conversation. You only quoted a
single sentence from me - did you read the rest? Anybody can reply with
a simple "what you wrote is not helpful", but it doesn't get us
anywhere, and frankly it's lazy since you avoided countering my points,
and a bit insulting too.

The bigger thing to do would be to reply with substance describing why
you disagree. You don't think other distributions have solved these
problems in a way that we could easily apply to Fedora? Great, explain
that position. Your posts communicate that you didn't seriously
consider the proposal, and possibly that you aren't familiar with what
my proposal is. The message they don't send is that you have listened,
understood, and simply disagree. This type of communication leads
towards division.

If you have a serious objection to how these other solutions would not
work for us, I think that would be a useful post for you to make. Show
me that we have considered what other distributions have done, and why
you think their solutions won't work for us. Even if I disagree, you
will at least remove my complaint that due diligence wasn't done.

I stand by what I wrote that you quoted here - I still don't see why we
aren't studying the solutions to this problem that others have
implemented and incorporating the best of them into our design. Given
that my job is not to work on modularity, the most helpful thing I can
do is to stand up and say "hey look, these projects solved our problems
an easier way."

I will say, as an aside, that I do think the "pro modularity" folks
have otherwise fallen in the "I listened, understood, and simply
disagree" camp, and I think that's great. We don't have to agree. As I
wrote elsewhere, I completely understand why a thread like this is
demoralizing for people who have worked on this. I'd feel the same way.
I do think the conversation is still good to have, as long as it stays
respectful. I wish there were a way to state our disagreements that
wasn't demoralizing, but I'm afraid I don't know of a way. It's
unhealthy if we can't discuss our disagreements.

> Clearly it's not a solved problem in Fedora; we're not doing all this
> work just to make people's lives harder or (as that same post seems
> to imply) to reinvent the wheel. 

I do believe we are suffering from NIH here, and the reason I believe
that is that I've asked if we have studied the solutions that exist to
our problems, and I've not seen anyone say we have. If you ask that
question enough times (I've asked this several times over the years),
and can't otherwise find evidence that other solutions were studied, it
is perfectly reasonable to say "hey, someone else did this, and they
did it an easier way and weren't met with significant resistance to
their implementations. Take a look." What this achieves is bringing
attention to simpler solutions that would get us to our goal more
quickly, and that would result in broader adoption among our users and
contributors. Win-win.

It is not reasonable to tell someone who is doing that that they aren't
being helpful. That's not how an open project operates.

Have we studied the other solutions to this problem? If so, let's
document that we studied them, and why what they've done isn't useful
for our goals. If not, surely you can see why that's a problem?

I don't think anyone is trying to make people's lives harder. However,
we *are* making people's lives harder, and that outcome matters.

> A suggestion like "we should just use slots like Gentoo has" is not
> really a
> useful proposal. It's a 10,000-foot statement, and as we definitely
> know,
> the actual work is in the details. That's what I really meant, not
> that I
> expect Randy to do all of that actual work.

The modularity project did not start off by having lots of details
figured out, or we wouldn't have hit all the various issues we've hit.
Indeed, it still does not have details figured out. It's unfair to hold
anyone with alternate ideas to a higher standard than modularity has
been held to, especially people who don't have a full time job of
solving these problems.

The solutions employed by other projects would not be difficult to
adapt to Fedora just because we use RPM and they use other things. Many
of the details of their solution still apply to us, and the ones that
don't are still going to be simpler to deal with than what we have now.

It absolutely is a useful proposal to suggest that we should study how
other projects solved these problems. If you were going to start a web
browser, wouldn't you start by familiarizing yourself with Firefox?
Your objection here is like replying to "shouldn't we learn how Firefox
did this" with "that's a 10,000 foot statement, how Firefox works is
irrelevant to us". A browser designed with that kind of mentality will
probably hit all the same XSS bugs that Firefox has solved over the
years, because yes, the details matter, Firefox has solved many of
those details, and they do apply to you as well.

Gentoo, Nix, and Debian (and possibly others) have all solved the
problems we face. They've solved their equivalents of the XSS bugs, and
we would be wise to learn from them.

> This is from the council meeting a few weeks ago:
> 
> Our goals for modularity are:
> 
>   1. Users should have alternate streams of software available.
> 
>   2. Those alternate streams should be able to have different
> lifecycles.
> 
>   3. Packaging an individual stream for multiple outputs should be
> easier
>      than before.
> 
> The Gentoo slots mechanism says "This is useful for libraries which
> may have
> changed interfaces between versions — for example, the gtk+ package
> can
> install both versions 2.24 and 3.6 in parallel." This is fine. We
> already
> have a mechanism for installing simultaneous versions of packages in
> parallel with nameversion munging. I happen to think that what we do
> is
> icky, and maybe bringing the Gentoo approach to RPM would be helpful.
> 
> But it doesn't really address the above things at all. It's just
> another
> (possible) building block.

Slots aren't actually how Gentoo does parallel availability. As I
explained in another post, they are how they do what modularity calls
"streams" and also how they do parallel installability. They do
parallel availability by simply putting several versions of packages in
the repo at the same time and letting me tell the package manager which
ones I want.

When I install the "python 3.6" slot, I am signing up for the "stream"
of versions of Python in the 3.6 series. I will get updates for that
stream as long as it exists in Gentoo, and when it ceases to exist, the
Package manager will want me to remove it (and provides a helpful way
to do this automatically for all my packages that are no longer
supported).

Gentoo certainly addresses both numbers one and two above. You can't
just say it doesn't address it "at all" and wipe your hands. You have
to defend a claim like that. How does it not address them?

I'll show how it does address them. I've had "alternate streams of
software available" to me for more than a decade in Gentoo, and I
regularly make use of that feature. Their slots have different
lifecycles. In fact, just this weekend I installed the latest and
greatest Rust compiler on a Gentoo system that also uses the LTS
kernel. I've been doing some Rust coding lately, so I'd like to be on
the newer compiler, but my computer is 10 years old so I don't think I
need to be on the latest kernel for my hardware. I can stay on my LTS
kernel while signing up for the latest Rust compiler, and my computer
will follow those "streams". Doing this in Gentoo was easy.

Check it out, as of the time of this writing, I can pick from two
different Rust versions that are considered "stable" in gentoo (the
green ones), or from three that are in testing (the yellow ones):

https://packages.gentoo.org/packages/dev-lang/rust

Or take a look at Python, where I can sign up for the "3.6" slot which
has (3.6.5, 3.6.8, and 3.6.9 available to me in it [yes, they even have
parallel availability *within* slots!]):

https://packages.gentoo.org/packages/dev-lang/python

Check out how many versions of gcc I can pick from:

https://packages.gentoo.org/packages/sys-devel/gcc

As for #3, yeah, Gentoo doesn't do that (because Gentoo doesn't have
versions for the distro itself [well, except for profiles, but that's
another story], it's a rolling release). However, I think it's clear
that modularity does not make packaging easier so it also doesn't
address #3. See my post regarding the yaml file I had to make for
rpick, or simply take into consideration the wide variety of complaints
from packagers who have been affected by it. If it made packaging
easier, I don't think we'd see so many people talking about how hard
packaging has become lately.

Also, you can put the same version of an RPM in all the versions of
Fedora today pretty easily by just asking Koji to build the master
branch for the Fedora versions you want. I've done this in a few cases,
and it was simpler than creating large yaml files.

Thus, #3 is already solved in Fedora today anyway, so if we implemented
a solution like Gentoo (or Nix, or Debian) has done that would solve
#'s 1 and 2, and we have it all.

However, "making packaging easier" should be a separate initiative from
"let users have more versions of programs available to them at a time".
One of the problems with modularity is that people don't know what it
is, and part of why they don't know what it is is that it keeps getting
requirements added to it, to the point that it becomes confusing to
talk about.

This happens because each person that hears about it is exposed to more
ideas than a person can take in at a time, so they walk away with a
subset of those ideas. And each person walks away with their own
subset. This is part of why modularity means different things to
different people.

One way to avoid that problem is to simplify the objective. It needs to
be an elevator pitch, not a long document with many nuances.

+1 to making packaging easier, but let's make that be its own goal (and
really, a list of goals).

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
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