Gentoo Archives: gentoo-dev

From: Richard Yao <ryao@g.o>
To: gentoo-dev@l.g.o
Cc: Patrick Lauer <patrick@g.o>
Subject: Re: [gentoo-dev] Changing order of default virtual/udev provider
Date: Wed, 17 Feb 2016 13:29:59
Message-Id: E82D37BF-FC1A-479A-852B-52F7F590DA6D@gentoo.org
In Reply to: Re: [gentoo-dev] Changing order of default virtual/udev provider by "Michał Górny"
1 > On Feb 17, 2016, at 1:37 AM, Michał Górny <mgorny@g.o> wrote:
2 >
3 > On Tue, 16 Feb 2016 21:54:31 -0500
4 > Richard Yao <ryao@g.o> wrote:
5 >
6 >>> On 02/08/2016 07:46 AM, Michał Górny wrote:
7 >>> On Mon, 8 Feb 2016 10:08:22 +0100
8 >>> Patrick Lauer <patrick@g.o> wrote:
9 >>>
10 >>>> Ohey,
11 >>>>
12 >>>> I've opened a bug at:
13 >>>> https://bugs.gentoo.org/show_bug.cgi?id=573922
14 >>>>
15 >>>> The idea here is to change the order of the providers of virtual/udev.
16 >>>> For existing installs this has zero impact.
17 >>>> For stage3 this would mean that eudev is pulled in instead of udev.
18 >>>>
19 >>>> The rationale behind this is:
20 >>>>
21 >>>> * eudev is an in-house fork, and there's more than a dozen distros
22 >>>> already using it by default that are not us. Which is a little bit weird ...
23 >>>
24 >>> That's not an argument. I can also fork random system components. Would
25 >>> you consider that a reason to replace the defaults with our 'in-house'
26 >>> forks?
27 >>>
28 >>>> * Both udev and eudev have pretty much feature parity, so there won't be
29 >>>> any user-visible changes
30 >>>>
31 >>>> * udev upstream strongly discourages standalone udev (without systemd)
32 >>>> since at least 2012
33 >>>>
34 >>>> (see for example:
35 >>>> https://lists.freedesktop.org/archives/systemd-devel/2012-June/005516.html
36 >>>> https://lkml.org/lkml/2012/10/3/618
37 >>>> )
38 >>>>
39 >>>> So it'd be (1) following upstreams recommendations and (2) dogfooding
40 >>>> our own tools. I don't see any downsides to this :)
41 >>>
42 >>> I'm strongly against this, because:
43 >>>
44 >>> 1. It is a conflict-induced fork. As such, it will never be merged
45 >>> upstream and it will never be supported upstream. In fact, it is
46 >>> continually forces to follow upstream changes and adapt to them. eudev
47 >>> is more likely to break because of the Gentoo developer(s) working hard
48 >>> to merge upstream changes to their incompatible code.
49 >>
50 >> That was the entire point of the project. Upstream rejected any attempts
51 >> to do things that we actually needed and broke things claiming the
52 >> distributions were responsible for handling the breakage, so eudev was
53 >> started on the basis that we needed a project that would ensure that
54 >> changes in udev occur in a way that makes sense.
55 >
56 > What things? Things like 'let's try to spawn this script third time in
57 > case someone mounted something so that it happens to work this time'?
58 > Yes, that old behavior really made sense.
59 >
60 >>> 2. Many of Gentoo users are programmers who appreciate the 'vanilla'
61 >>> API experience Gentoo often provides. Switching the defaults to a fork
62 >>> that is known to intentionally diverge from upstream goes against that
63 >>> principle. Programs written against eudev may not work correctly with
64 >>> upstream udev.
65 >>
66 >> If upstream udev were stable, that would be one thing, but it
67 >> intentionally diverges from itself continuously. The only experience
68 >> that could be reliably provided with upstream udev is one of continual
69 >> breakage.
70 >
71 > This is FUD, without any proof.
72
73 That kind of breakage is the reason eudev exists. If it did not occur, I would have not organized people to start eudev a few years ago. Part of the motivation was inflicted by the sys-fs/udev maintainers at the time, but systemd upstream did it's fair share by rejecting compatibility patches on the basis that only downstream should handle those. eudev was founded to be that downstream and also be upstream as sys-fs/udev refused to take patches that systemd would not take.
74 >
75 >>
76 >>> 3. eudev has fallen behind systemd/udev more than once in the past,
77 >>> and caused visible breakage to users this way.
78 >>
79 >> When?
80 >
81 > Whenever we installed new systemd and udev versions, and needed to bump
82 > the dependency in virtual, and eudev maintainers were nowhere to be
83 > found.
84 >
85 >> Can we also consider all of the times udev broke the boot process
86 >> because upstream just didn't care about doing changes in a sane way and
87 >> the people interested in providing the upstream experience delivered on
88 >> that goal?
89 >
90 > Proof needed.
91
92 Go back and look at logs of me talking to WilliamH and talking in #systemd in the year before eudev was founded. There were problems with separate user among others. By the time, eudev was started, it was a wonder why it was not started earlier.
93 >
94 >>> 4. eudev is underdocumented, and the maintainer admits that 'he sucks
95 >>> at documenting'. In fact, did anyone even bother to note how far eudev
96 >>> diverges from upstream udev to this point?
97 >>
98 >> The FreeBSD developers were complaining about how poorly documented udev
99 >> was well before eudev existed. This is not a regression unless systemd's
100 >> innovations in replacing documented things with undocumented things made
101 >> them worse.
102 >
103 > So... replacing thing that has some docs with a thing that has no docs
104 > and links to docs of udev that aren't exact match for eudev is good?
105 > Good to know.
106
107 What documentation do you mean? As far as I know, udev documentation had always been nearly non-existent. Just ask the FreeBSD developers who have been looking for documentation so that they could reimplement it in a clean room manner for years.
108
109 If you would like to see that change, you could start writing documentation.