Gentoo Archives: gentoo-project

From: Samuli Suominen <ssuominen@g.o>
To: gentoo-project@l.g.o
Subject: Re: [gentoo-project] eudev project announcement
Date: Sat, 15 Dec 2012 21:02:31
Message-Id: 50CCDE98.5050809@gentoo.org
In Reply to: [gentoo-project] eudev project announcement by Richard Yao
1 On 15/12/12 05:52, Richard Yao wrote:
2 > Dear Everyone,
3 >
4 > I am pleased to announce the Gentoo eudev project. Many of you already
5 > know about the eudev project from early publicity that we had before
6 > things were ready. Despite that, I hope to take advantage of the
7 > official announcement to explain what we are doing, why we are doing it
8 > and what it means for you. I have broken the announcement into
9 > subsections, each with a title for ease of reading.
10 >
11 > Why fork udev?
12 >
13 > Earlier this year, udev upstream was absorbed into systemd. udev often
14 > breaks compatibility with older systems by depending upon recent Linux
15 > kernel releases, even when such dependencies are avoidable. This became
16 > worse after udev became part of systemd, which has jeopardized our
17 > ability to support existing installations. The systemd developers are
18 > uninterested in providing full support in udev to systemd alternatives.
19 > These are problems for us and we have decided to fork udev to address them.
20 >
21 > You are a Gentoo project. What does this mean?
22 >
23 > Gentoo as an organization is quite similar to github, although it is
24 > exclusive to Gentoo developers. Our rules permit all Gentoo developers
25 > have the ability to start a project and such projects are entitled to be
26 > hosted on Gentoo infrastructure. This by no means constitutes official
27 > endorsement by Gentoo's governing body and we have no authority to
28 > dictate the future direction of Gentoo. We do have the ability to
29 > provide an alternative to Gentoo users, which we fully intend to do.
30 > eudev will be by no means exclusive to Gentoo. We will handle bug
31 > reports from users of other distribution in the same way that we handle
32 > bug reports involving Gentoo. This will be much like other Gentoo-hosted
33 > projects such as portage and OpenRC.
34 >
35 > What is your project's license?
36 >
37 > The systemd developers were in the middle of a transition to the LGPL
38 > from the GPL when we forked. We inherited the code in the middle of that
39 > transition and we see no reason to pursue a different course. Therefore,
40 > all future changes that we make to eudev will be available under the LGPL.
41 >
42 > What are your project's goals?
43 >
44 > Our primary goal is to address the problems with systemd-udev that
45 > caused us to fork it in the first place. In particular, we want better
46 > compatibility with existing software such as OpenRC and Upstart, older
47 > kernels, various toolchains and anything else required by users and
48 > various distributions. We also want to minimize regressions and work
49 > with developers of other distributions (and components used by them) to
50 > address issues.
51 >
52 > How will you minimize regressions?
53 >
54 > We intend to maintain HEAD in a releaseable state. All minor changes
55 > require review from one eudev developer and all major changes require
56 > review from two eudev developers. This does not include the author. In
57 > addition, we intend to require commits to make logically independent
58 > changes with descriptive commit messages to make regression hunting
59 > easier when regressions do happen.
60 > These rules were not enforced at the beginning, but we are
61 > transitioning toward enforcement. They will enter full effect once we
62 > tag our first release candidate.
63 >
64 > How do you intend to work with other distributions?
65 >
66 > We have our repository on github, which is known for easy
67 > collaboration. If a distribution developer identifies a problem with
68 > eudev, they can file an issue and we will do our best to resolve their
69 > problem. If they wish to work with us to resolve it, we can talk in IRC
70 > and they can also file pull requests. Provided that the changes are not
71 > entirely unreasonable (e.g. pushing an init system into udev), we are
72 > willing to work with authors of pull requests to get them into a
73 > mergeable state. The only hard rule is that changes cannot break the
74 > ability of existing systems to upgrade.
75 > We also plan to make an official mailing list, which will be hosted on
76 > Gentoo infrastructure.
77 >
78 > Will you make the boot process faster?
79 >
80 > We have ideas on how to make udevd faster. However, people usually only
81 > notice the time that udevd takes when there is a bug and we are more
82 > interested in fixing those bugs than we are in shaving milliseconds off
83 > boot time. There are plenty of areas that could use attention by people
84 > that are interested in a faster boot process before udev becomes one of
85 > them. We consider things such as a reliable boot process to be more
86 > important than speed and we are willing to subject users to the
87 > additional few hundred milliseconds that failing to tweak things for
88 > speed incurs.
89 > We are already dealing with regressions that the systemd developers
90 > introduced in their attempt to make things faster and we consider fixing
91 > them to be a priority. However, we would be happy to collaborate with
92 > people willing to work on boot speed improvements to get them into a
93 > mergeable state. We encourage people interested in speed improvements to
94 > talk to us about how they could be done in a reasonable manner. It would
95 > be premature to do it at this instant, but it would definitely be
96 > something that could be done after we have tagged a few stable releases.
97 >
98 > What did systemd break when trying to make things faster?
99 >
100 > A good example involves module loading. Previously, each module load
101 > would incur a roughly 10 to 20 ms disk access latency and a 0.01 ms fork
102 > overhead. This was partially masked by udev's ability to execute rules
103 > asynchronously through fork(), which meant that multiple modules could
104 > be read in parallel.
105 > The introduction of kmod eliminated the 0.01 ms fork() overhead, and
106 > consequently required each module to be loaded sequentially. This
107 > imposes an overhead of 10 to 20 milliseconds times the number of
108 > modules, which is asymptotically worse than what it replaced. A feature
109 > of kmod intended to address that placed all modules into a single file,
110 > which would actually make things faster. However, none of our users use
111 > it and all of our users would suffer from it.
112 > In addition, the manner in which kmod was integrated has implications
113 > beyond speed regressions. The use of kmod by udev permits a buggy kernel
114 > module (possibly interacting with bad hardware) to hang in module_init.
115 > This causes udevd to hang, which prevents further rule processing. This
116 > is a bad situation, but we feel that it is important to handle bad
117 > situations in a graceful manner. Previously, the system would have a
118 > chance of booting in this situation. The manner in which kmod was
119 > introduced makes this situation far more likely to cripple systems.
120 > If you want to understand the worst case scenario when dealing with
121 > this regression, disable udev and reboot your system. You should have a
122 > virtual terminal with no networking and no X. Should this happen with
123 > systemd-udevd, then you would also have a hung systemd-udevd process
124 > that you cannot kill. Attempts restart systemd-udevd should result in
125 > more hung processes.
126 >
127 > Where is development now?
128 >
129 > We have rewritten the build system and restored support for older
130 > kernels and verified compatibility as far back as Linux 2.6.31. We have
131 > tagged 1_beta1 and eudev is in the portage tree. A few lingering
132 > dependency issues exist, but we should have them ironed out shortly.
133 > Work is on-going to introduce uclibc support, to reintroduce
134 > 70-persistent-net.rules and to reintroduce support for a separate /usr
135 > support without an initramfs. Strictly speaking, we do not recommend
136 > having a separate /usr mount, but we intend to support such
137 > configurations in eudev indefinitely.
138 > We are also looking into fixing various regressions that the systemd
139 > developers introduced, which include the kmod regressions.
140 >
141 > What are your plans for future development?
142 >
143 > We intend to demonstrate to the current Gentoo udev maintainers that
144 > maintaining systemd-udevd outside of the systemd package is unnecessary
145 > when we have eudev. If they wish to continue maintaining systemd-udevd
146 > as they are, then that is fine unless the Gentoo Council decides otherwise.
147 > After eudev has reached stable status in Gentoo, we intend to start
148 > reaching out to other distributions to collaborate on further
149 > development. Ideally, eudev will be something that all distributions can
150 > use as a drop-in replacement for systemd-udevd.
151 >
152 > Yours truly,
153 > Richard Yao
154 >
155 > P.S. I have BCCed a few people that might be interested in reading the
156 > project announcement. Unfortunately, the gentoo-dev list requires
157 > registration to avoid spammers, so you will need to register to reply to
158 > the list. Documentation on how to register on the list is available at
159 > the following address:
160 >
161 > http://www.gentoo.org/main/en/lists.xml
162 >
163
164 Despite what you may have thought or seen my opinions to be earlier, I
165 wish best of luck to you.
166
167 I don't have plans on trying eudev, and trust you will continue to
168 backport relevent code from orig. upstream git so people don't have to
169 cross-post to 2 different places. I also hope eudev will never require
170 code to other packages, in a way of keeping the compability with orig.
171 upstream to keep things maintainable as they are now.
172
173 Thanks,
174 Samuli