Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] How to deal with package forks?
Date: Thu, 09 Mar 2017 16:01:14
Message-Id: CAGfcS_nZa+XTVtNoJ9uTYO9V=u5s_MTZ1BfTFy9s5t+kqM2Y8g@mail.gmail.com
In Reply to: [gentoo-dev] How to deal with package forks? by "Michał Górny"
1 On Thu, Mar 9, 2017 at 10:34 AM, Michał Górny <mgorny@g.o> wrote:
2 >
3 > 1. classic forks -- package B is forked out of A, and the development of
4 > both continue independently (eudev/systemd, ffmpeg/libav);
5 >
6 > 2. large patch sets / continuously rebased forks -- where the particular
7 > set of changes is usually applied to mainline or regularly rebased
8 > against mainline but without full separation (kernel patchsets, bitcoin
9 > patches);
10 >
11 > 3. abandoned package forks -- package A stops being maintained upstream,
12 > someone forks it and starts working on top of that (xarchiver).
13 >
14 >
15 > For group 1., I think it's pretty clear that most of the time we want to
16 > use separate packages for the forks.
17
18 ++ - I doubt there is much controversy here.
19
20 >
21 > The second group (patch sets) is more unclear. AFAICS some people argue
22 > that packages with major patch sets applied should be distinguished by
23 > separate package names. Others see that applying them via USE flags is
24 > easier.
25 >
26 > Separate packages are used e.g. for different kernel patch sets.
27 >
28 > A single package with USE flags is used e.g. for openssl (hpn patch
29 > set), bitcoincore (ljr patch set).
30
31 I think that using separate packages for huge patch sets that
32 basically are incompatible with anything else makes sense. (realtime
33 kernel, etc) It practically turns something into a new package
34 anyway.
35
36 I think that USE flags make a lot more sense for smaller patches as in
37 the examples you cited, because there often can be multiple patches
38 that may be selectively applied.
39
40 That said, something like gentoo-sources actually lumps together a
41 bunch of patches that are individually small. So, we're not entirely
42 consistent here. USE flags probably don't make as much sense for
43 gentoo-sources (unless they're fairly broad like turning on/off
44 categories of patches like the categories inside genpatches), since
45 all the patches are generally short-lived other than stuff like the
46 service manager requirements.
47
48 Perhaps it would make sense to issue a guideline that USE-based patch
49 sets should be off by default unless their purpose is primarily
50 integration (though in general most integration patches tend not to be
51 USE-based anyway). I think this is really where the controversy tends
52 to come in. Gentoo doesn't really have a "we follow upstream"
53 principle officially codified but I think it is something most around
54 here tend to adhere to.
55
56 That said, I'm not sure I'd make it a hard rule, because situations
57 always come up. After all, most chromium users would probably not
58 prefer an "upstream" experience that has a bazillion more bundled
59 libraries. Also, I think that ebuilds that are honest with their
60 notices go a long way. I think a non-upstream default that advertises
61 itself in a notice and explains how to get the pure-upstream
62 experience is better than one that silently makes changes.
63
64 Now, if a package has a different name (which might just be an
65 appendage to an existing name) then it could be considered to have a
66 different upstream and I think we can allow more leeway with the
67 defaults.
68
69 >
70 > The third group (dead package forks) is most unclear to me, especially
71 > that those kinds of forks frequently continue using the original package
72 > name.
73 >
74
75 I think this becomes more of an issue if we have competing branches.
76 If upstream is TRULY dead and the fork is effectively the new HEAD
77 then we can probably just leave it alone until it seems broken.
78 Otherwise we end up having to make up a name since upstream isn't.
79
80 --
81 Rich