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 |