vision dead 2012

udev (systemd) eudev

When udev was absorbed into systemd, Gentoo forked it as eudev to maintain device management for non-systemd Linux distributions. The fork became a lifeline for the anti-systemd movement.

What it is

eudev is a standalone fork of udev, the device file manager for the Linux kernel. It manages device nodes in /dev, handles hotplug events, and loads firmware. The fork removed systemd-specific dependencies and maintained compatibility with musl libc and non-glibc toolchains.

The story

The systemd wars of the 2010s were one of Linux's most vicious civil conflicts, and eudev was one of the key weapons forged in that battle. In 2012, udev — the Linux kernel's device manager responsible for dynamically creating device nodes in /dev — was absorbed into the systemd source tree. This meant that distributions not using systemd as their init system faced an increasingly hostile upstream that had little interest in supporting their use case.

Gentoo, the distribution beloved by people who enjoy compiling things from source and having opinions about init systems, announced eudev in December 2012. The fork was led by Richard Yao, following Gentoo's tradition of prefixing projects with 'e' (a convention started by founder Daniel Robbins). The immediate trigger was that udev had started depending on recent kernel features and glibc-specific APIs that broke compatibility with alternative C libraries like musl and uclibc.

Eudev served as the device manager for distributions that ran OpenRC, runit, or other init systems instead of systemd. It became essential infrastructure for Gentoo, Alpine Linux, Devuan, and Void Linux — basically the entire non-systemd Linux ecosystem. The fork proved that udev's functionality could be maintained independently without dragging in the rest of systemd's considerable scope.

But the story has a twist ending. By 2021, the original reasons for eudev's existence had been resolved: patches from the openembedded project made it possible to build the systemd version of udev without the rest of systemd. Gentoo officially retired eudev in 2022, recommending users switch to udev from the systemd-utils package. A new eudev project was established by Alpine, Devuan, and Gentoo contributors to continue maintenance for those who still wanted it, but the urgency had faded.

Eudev is the rare fork that succeeded in its mission and then became unnecessary — not because it failed, but because its existence pressured upstream to fix the compatibility problems that caused it.

Timeline

udev absorbed into the systemd source tree

Gentoo announces eudev as a standalone fork of udev

eudev adopted by Alpine Linux, Devuan, and other non-systemd distributions

Gentoo announces eudev retirement; standalone udev from systemd-utils now works

Independent eudev project established by Alpine, Devuan, and Gentoo contributors

Key people

Richard Yao
Gentoo developer who announced and led the eudev project
Lennart Poettering
systemd creator whose integration of udev prompted the fork
Alpine/Devuan/Gentoo contributors
Teams that established the independent eudev project after Gentoo retired it

Impact

eudev was essential infrastructure for the non-systemd Linux ecosystem, keeping device management working for distributions that chose alternative init systems. Without it, projects like Alpine Linux (which powers most Docker containers) would have faced much harder choices about systemd adoption.

More subtly, eudev's existence applied pressure on the systemd project to make their udev implementation more portable and less tightly coupled. The fork served as proof that decoupling was possible, which eventually led to upstream changes that made the fork unnecessary.

Lesson: The best forks are the ones that make themselves unnecessary by proving the upstream could have done it right all along.

Related forks