Gentoo Archives: gentoo-project

From: Rich Freeman <rich0@g.o>
To: gentoo-project@l.g.o, Richard Freeman <rich0@g.o>
Subject: Re: [gentoo-project] Re: Council meeting 2015-04-14: call for agenda items
Date: Wed, 08 Apr 2015 18:15:28
Message-Id: CAGfcS_=2MfbnpvDV5Kfg5Ar-sVJOA1tacR2pkaHH4P3=P5FXRw@mail.gmail.com
In Reply to: Re: [gentoo-project] Re: Council meeting 2015-04-14: call for agenda items by William Hubbs
1 On Wed, Apr 8, 2015 at 1:39 PM, William Hubbs <williamh@g.o> wrote:
2 > On Wed, Apr 08, 2015 at 09:33:39AM -0400, Rich Freeman wrote:
3 >> Well, we really have a few options as far as imposing changes from
4 >> outside the arch team goes (the arch team can clean up its own
5 >> depgraph, of course, but presumably we'd be taking action only if they
6 >> didn't).
7 >>
8 >> 1. We could make the arches dev/exp as you point out, and then allow
9 >> maintainers to just drop stable versions and break their depgraph.
10 >>
11 >> 2. We could keep the arches as stable, but then allow maintainers to
12 >> do massive keyword changes when they drop otherwise-stable versions.
13 >> That wouldn't break the depgraph, but it would mean that at random
14 >> times huge numbers of packages could have their keywords change.
15 >
16 > It seems like the only difference between these two options would be
17 > who is responsible for fixing the depgraph. Let me say why I'm thinking
18 > this.
19 >
20 > Suppose that foo-1 is stable everywhere and I'm looking at a stable
21 > request for foo-2. I'm passed 90 days since I assigned the arch teams to
22 > this stable request. Also, foo is unslotted.
23 >
24 > Removing foo-1, or moving it back to ~arch, is going to have the same affect
25 > for all arches where it was stable and foo-2 is not, so I'm thinking I
26 > may as well remove foo-1.
27 >
28 > The difference, for stable vs non-stable arches, is that I will get
29 > complaints from repoman when I remove foo-1 for stable arches and I
30 > should also fix those.
31 >
32 > Is this right?
33
34 No. In neither option would you move foo-1 to ~arch. In neither
35 option would you get repoman complaints.
36
37 In option 1 you would delete foo-1. Users of the arch will start
38 getting errors when they try to do updates, since foo-2 is keyword
39 masked. Users could just accept ~arch for foo-2 to fix this most
40 likely, though it may not work in some cases. The arch team can clean
41 up the depgraph at some point as well. You don't ever get repoman
42 complaints because the arch is set to dev/exp, and is ignored by
43 repoman.
44
45 In option 2 you would STILL delete foo-1, and you would also change
46 all of its reverse dependencies to ~arch as well. Users of the arch
47 would get errors when they try to do updates, since many packages they
48 have installed are now keyword masked, and foo-2 is also keyword
49 masked. Users would have to accept ~arch for all those packages to
50 restore normal operation. Later the arch maintainers could restore
51 the depgraph to what it was before while stabilizing foo-2, which
52 involves fixing many packages potentially, and even if it all ends up
53 as stable again users have tons of cruft in their config files. You
54 don't ever get repoman complaints because the depgraph was always
55 consistent.
56
57
58 >
59 >> Neither option is really ideal. I think that #1 is the lesser evil,
60 >> but that does mean that we need to make a distro-wide decision. The
61 >> advantage of #2 is that it basically is a NOP unless the arch team
62 >> actually reaches 90 days old. I think it is better to just have the
63 >> Council make a decision rather than kicking the can, but that said if
64 >> an arch team is willing to state clearly that they intend to
65 >> proactively clean up their depgraph and that they want to keep stable
66 >> keywords, I'm fine with checking back in a month rather than
67 >> de-stabilizing them next week.
68 >
69 > Option #2 really isn't a NOP. It would say that maintainers have
70 > permission to remove old stable versions of a package when arch teams
71 > take more than 90 days to respond to a stable request for a newer
72 > version of the package.
73 >
74
75 Option #2 is a NOP in the sense that the Council doesn't have to do
76 anything that has an immediate effect. Basically we'd just be
77 deputizing every maintainer out there to purge keywords on any arch in
78 the list we approve anytime it gets out of hand. So, if an arch has
79 no STABLEREQs older than 90 days today, nothing happens today, but if
80 in six months a glibc STABLEREQ is ignored for 91 days the maintainers
81 can go ahead and remove every single stable keyword on the arch (to
82 pick an extreme example).
83
84 > Also, do we have to make a distro-wide decision about whether an arch is
85 > stable? I realize we have been the ones making those decisions, but I
86 > don't think there is a policy that requires us to.
87
88 The only thing we're required to do as a matter of policy is to show
89 up for a meeting and bang the gavel twice.
90
91 I don't really like just kicking the can down the street though. If
92 an arch really thinks an extra 30 days will let them become proactive
93 about trimming their keywords I don't mind giving an extension, but I
94 really don't want to end this Council term with maintainers
95 complaining about aging STABLEREQ bugs that they are powerless to do
96 anything about, and I don't think having random maintainers basically
97 treecleaning arches is a great solution either even if it lets us
98 point fingers.
99
100 I don't see this as picking favorites - x86 is more important than
101 sparc or whatever. All we're doing is just assessing whether an arch
102 team is able to proactively manage their stable keywords or not. If
103 an arch has only a single package marked stable, and they keep up with
104 just that one package, then they can stay stable in repoman. If an
105 arch isn't doing that, then users deserve to know this and understand
106 the implications. It means that at any time stuff that is marked as
107 stable could stop being stable, or could be really out of date. It
108 means that they need to be more careful about the weight they give to
109 a stable keyword. I just see this as being about truth in
110 advertising.
111
112 Stable keywords are a bit like a contract between package maintainers
113 and arch maintainers. The package maintainers agree to maintain
114 things in a way that keeps the stable experience stable. The arch
115 maintainers agree that in exchange they will keep up with stable
116 requests so that package maintainers aren't dealing with cruft. When
117 the package maintainer violates their end of the deal, QA descends on
118 them. When the arch maintainers violate their end of the deal, the
119 Council marks their arch non-stable. This is a reversible decision.
120 Arch maintainers can control the size of their commitment by not
121 keywording things as stable in the first place, and removing stable
122 keywords when they can't keep up.
123
124 --
125 Rich

Replies