Pull to refresh
Logo
OpenBSD ports team rejects Rust coreutils rewrite

OpenBSD ports team rejects Rust coreutils rewrite

Rule Changes

uutils proposal meets resistance from de Raadt and Henderson over compatibility, licensing

2 days ago: OpenBSD developers reject uutils proposal

Overview

Updated 1 hour ago

A proposal to add the Rust-based uutils coreutils to OpenBSD's ports tree met firm resistance within days. OpenBSD founder Theo de Raadt called the idea pointless, saying users don't want tools that behave “subtly different” from the originals.

The rejection exposes a structural split between how OpenBSD and Linux distributions treat core utilities. Ubuntu ships uutils as the default coreutils in release 26.10; Gentoo and FreeBSD offer it as an option. OpenBSD treats its base utilities as a curated, integrated whole — not interchangeable components.

Why it matters

OpenBSD's refusal shows that Rust-based rewrites of core tools face a compatibility wall that licensing and test-pass rates don't solve.

Questions about this story

Free account needed to ask — your question is kept and asked for you right after sign-up. Answers are public.

No questions yet — be the first to ask.

Key Indicators

3
Distributions adopting or offering uutils
Ubuntu plans it as default in 26.10; Gentoo and FreeBSD offer it as an option.
2
OpenBSD senior developers who opposed the port
Stuart Henderson and Theo de Raadt both spoke against the proposal on the mailing list.
10 days
From port submission to public report of rejection
The proposal landed September 20; the Lobsters report documenting the rejection appeared September 30.

Voices

Curated perspectives — historical figures and your fellow readers.

Ever wondered what historical figures would say about today's headlines?

Sign up to generate historical perspectives on this story.

People Involved

Organizations Involved

Timeline

May 2024 September 2026

4 events Latest: 2 days ago
Tap a bar to jump to that date
  1. OpenBSD developers reject uutils proposal

    Latest Rejection

    Stuart Henderson called the approach unusable; Theo de Raadt dismissed it as “agenda” and cited behavioral incompatibility.

  2. uutils port submitted to OpenBSD

    Submission

    David Uhden Collado proposed sysutils/uutils, packaging Rust coreutils as g-prefixed alternatives to GNU tools.

  3. uutils 0.12.0 released

    Release

    The release focused on Ubuntu-reported compatibility bugs and removed the last C dependency of expr.

  4. FreeBSD adds uutils-coreutils port

    Port acceptance

    FreeBSD accepted the Rust rewrite into its ports tree as an optional sysutils package.

Scenarios

1

OpenBSD formally closes uutils port proposal

Likely Resolves by Q1 2027

Discussed by: OpenBSD ports mailing list discussion; rejection sentiment from de Raadt and Henderson

The port remains in proposal stage but faces opposition from the project founder and senior ports developers. Without substantial restructuring, the proposal stays open but effectively dead. It may be formally closed or quietly abandoned as the mailing list moves on.

2

Port restructured and accepted into OpenBSD ports

Unlikely Resolves by Q2 2027

Discussed by: David Uhden Collado's uncertainty about individual binary installation suggests restructuring is possible

If the multicall binary is split into individual utilities, behavioral parity with OpenBSD base tools is demonstrated, and Rust bootstrapping concerns are addressed, the port could gain acceptance. But de Raadt's philosophical objection that the port duplicates existing BSD-licensed tools makes acceptance unlikely without major changes.

3

OpenBSD formalizes Rust exclusion stance

Possible Resolves by End of 2027

Discussed by: Observers on Lobsters and in BSD communities following the debate

The rejection could set a precedent for how OpenBSD handles future Rust-based submissions. If the project documents its position on Rust in the base system, it would give future contributors clarity about acceptable languages and packaging approaches.

Historical Context

3 moments from history that rhyme with this story — and how they unfolded.

1999–present

BusyBox and multicall binaries (1999)

BusyBox packaged dozens of Unix utilities into a single binary for embedded systems, dispatching to tools based on the name it was invoked with. It became the standard in routers, set-top boxes, and Android devices.

Then

BusyBox succeeded where GNU tools were too large for constrained devices, but developers constantly complained about subtle behavioral differences from the originals.

Now

Multicall binary design became standard in embedded Linux, yet no major desktop distribution adopted it as the default coreutils.

Why this matters now

uutils uses the same multicall binary design BusyBox pioneered. OpenBSD's packaging conventions expect individual binaries, and the project's developers rejected that design outright.

2008–2020

Python 2 to Python 3 transition (2008–2020)

Python 3 broke backwards compatibility so completely that a decade of migration tooling and parallel installation was required. Scripts that ran for years on Python 2 failed immediately on Python 3 due to changed print syntax, integer division, and Unicode handling.

Then

The transition took over a decade, with Python 2 reaching end of life on January 1, 2020, while many projects still lagged.

Now

The community now treats breaking changes as a last resort, requiring long deprecation cycles and migration guides.

Why this matters now

A Lobsters commenter explicitly drew this parallel: CLI tools are the “programming language” of an OS, and replacing them with subtly incompatible versions risks breaking scripts that have worked for decades.

1980s–1990s

GNU vs BSD utility split (1980s–1990s)

GNU tools were written as free replacements for Unix utilities, and their behavior diverged from the BSD originals. GNU ls gained long options and color output; BSD ls remained minimal. Linux distributions standardized on GNU tools, while BSD projects kept their own implementations.

Then

Two parallel utility ecosystems emerged. Linux users got GNU tools as default; BSD users kept BSD tools and treated GNU as optional ports.

Now

The split persists today. BSD projects like OpenBSD maintain their own tools and reject replacements that don't match their behavior exactly.

Why this matters now

OpenBSD's rejection of uutils is the latest iteration of this pattern: the project prefers tools it has tested and integrated over rewrites that claim compatibility but behave differently.

Sources

(7)