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 |