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 |