Oxidizing Ubuntu: adopting Rust utilities by default
uutils Rust coreutils and compatibility
- Commenters note uutils’ explicit goal: 1:1 behavior with GNU coreutils, treating any divergence as a bug.
- Only the “production ready” subset (actual GNU coreutils, not util‑linux tools like
more) is being adopted, which some argue many people are missing. - Others emphasize that despite the stated goal, the implementation is still incomplete and buggy; GitHub issues show many behavioral discrepancies and missing options, so it is not yet a true drop‑in.
Security, TOCTOU, and correctness
- A TOCTOU check in uutils’
moreis dissected: one side claims it’s a benign extra stat() for nicer error messages; another demonstrates a symlink race that exposes/etc/passwd. - This leads to the conclusion that the original
moreis “vulnerable” in similar ways, so the extra check mainly affects error reporting, not core safety. - More broadly, some argue memory safety is not crucial for short‑lived, non‑networked CLI tools; others respond that utilities can end up in networked contexts or complex pipelines, so safer implementations still matter.
Licensing, copyleft vs permissive, and “attack on freedoms”
- A large subthread debates whether moving from GPL coreutils to MIT Rust equivalents undermines user freedoms.
- One side sees permissive licensing as a “corporate workaround” to avoid GPL reciprocity, warning about loss of strong copyleft at the base of systems and citing concerns about vendors like Red Hat or Oracle.
- The opposing view: coreutils are a commodity; BSD‑style userlands (e.g., macOS) show permissive licenses don’t doom ecosystems; GPL’s “viral” nature can also discourage adoption and contributions.
- Several participants stress that companies sometimes build proprietary alternatives rather than accept GPL, while others counter that even partial or probabilistic contributions under permissive licenses are better than “100% of nothing.”
Canonical/Ubuntu trust and history
- Many commenters distrust Canonical’s motives, given past decisions (Snap by default, search/terminal ads, ZFS licensing stance). Some see this move as “ulterior motive” licensing games, not neutral modernization.
- Others argue Canonical likely has solid legal advice (e.g., on ZFS) and that courts care about actual harm, not abstract license purity.
Rust as a technical choice (safety, leaks, and tooling)
- Rust’s memory safety is praised, but a long side discussion notes that Rust can still leak memory (e.g., via ownership patterns,
Rc/Arccycles, arena‑styleVecpatterns), and that the borrow checker doesn’t magically prevent space leaks. - Some argue leaks are at least no worse than in GC’d languages, and Rust’s strictness plus a strong compiler makes large refactors and even LLM‑assisted coding safer to review.
- Others report current LLM‑generated Rust tends to be verbose, misuse
clone/collect, and mishandleResult, requiring experienced Rust developers to clean up.
Value of rewrites vs stability
- One camp calls this “the worst kind of busy‑work”: rewriting mature, battle‑tested tools without adding features, thereby injecting new bugs.
- Another emphasizes maintainability and future evolution: Rust is more pleasant and safer for new contributors than aging C, and uutils is already adding small UX features (e.g., progress bars).
- There’s disagreement over whether performance or resilience will measurably improve over highly optimized GNU C code.
Labor and economic interpretations
- A provocative comment claims Rust rewrites are a deliberate corporate tactic to devalue C/C++ expertise and replace seniors with cheaper juniors.
- Replies largely reject this as conspiratorial: full rewrites are expensive and risky; skill obsolescence and language churn have always been part of software; if juniors can match seniors in C++ using safer Rust, that’s an argument against C++, not for gatekeeping.
Sandboxing, Wayland, and “security theater”
- Separate from coreutils, some tie this change into a broader frustration with recent Linux desktop “security” trends (Wayland, Flatpak/Snap): broken drag‑and‑drop, flaky clipboard, macro restrictions, blocked AppImages.
- Others defend application sandboxing as analogous to iOS/Android permissions: conceptually sound, though current UX and ecosystem smoothness are poor.