Comment by Vaushite
4 days ago
Tools have to be allowed to evolve. Half the Linux ecosystem's problems are caused by sticking on some design that made sense in 1980.
At least the command is still called sudo or run0. Changing it to doas would have been a much more breaking change.
Alas, TFA blocks me with no workaround because I'm using Tor Browser so I can't read about the nature of the changes.
sudo.rs is a really weird direction for an evolution — it re-implements a complex piece of security dropping some arbitrary choices but keeping it pretty complex. It has the exact same security model. I honestly can't understand the appeal.
If you want something similar but simpler, go for doas.
If you need all the features in sudo, keep using sudo.
If you want to try new security models, try s6-sudo, or any other of various tools out there.
sudo-rs keeping the same name is actually a worse breakage — because it doesn't have the same API as sudo (as described by op), but has the same name and pretends to be a drop-in replacement while also not being a drop-in.
> I honestly can't understand the appeal.
Virtue signaling.
I fail to see how the term virtue signaling applies to what you highlighted, care to elaborate?
3 replies →
To many of us it's not about the features which you obliquely refer to when you say "evolve" but about licensing. It's extremely concerning that we're replacing GPL stuff for non GPL, and just as concerning that so many folks don't recognise this point.
sudo is MIT-licensed: https://github.com/sudo-project/sudo/blob/main/LICENSE.md
sudo-rs is MIT-licensed: https://github.com/trifectatechfoundation/sudo-rs/blob/main/...
Perhaps you are thinking of uutils? https://github.com/uutils/coreutils/blob/main/LICENSE
That is the problem. MIT isn't GPL. In our new AI powered future, we want the source so we can fix it ourselves.
8 replies →
This is by design.
They are slow-rolling the cancellation of Stallman's connection to the OS because their first attempt failed.
In 10 years, no one will have heard of GNU after all components have been replaced with corporate clones.
I find it hard to believe that all of this movement is because of Stallman. That seems so... petty.
6 replies →
Stallman is being canceled because an MIT licensed program (sudo) is being replaced with a different MIT licensed program (sudo-rs)?
Licensing is downstream of software existing. The person who actually writes software gets to make the license. If you want a GPL one you have to make that.
It already exists.
5 replies →
What is the GPL software that is being replaced?
Coreutils
2 replies →
Hardly relevant to TFA though
Maybe the GPL people need to get with the times, then. LLVM exists largely because the GCC people were so obstinate. I'm a big believer in copyleft software, but it only works if people want to use your software with their projects.
LLVM was supposed to be a virtual machine initially, hence the (original) name: Low-level virtual machine. The direction that it took, and especially the development of Clang: that was at least partially because of GCC's intentional anti-modularity.
2 replies →
Ref: https://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00...
If you read the article you would know this is a regression, not an improvement. Stuff breaking silently is never good. If you change config options error when you read the config file that no longer works.
It's not a regression, it's a documented, deliberate decision to change the behaviour of the program.
The manual should probably drop the wildcards section it's not implementing anyway, though.
> It's not a regression, it's a documented, deliberate decision to change the behaviour of the program.
If I install and setup and run "sudo" I expect it to work like sudo.
If you want your program to not work like sudo do not call it "sudo". This is what the OpenBSD folks did with doas.
POLA.
(It's fine if they want it to work differently than sudo; not fine that they called it "sudo".)
Maybe a deliberate decision in sudo-rs but its a silent failure when Ubuntu is upgraded so its a regression in Ubuntu.
And when one upgrades and OS and something that worked since 1980 stops working, what do we call that, class?
That’s right. “A regression”
Whether it was accidental or purposeful changes nothing.
I don't understand that logic. If it's fine for sudo-rs to have different behavior from sudo, why can't it also just have a different executable name? So that people who are expecting traditional sudo will get "executable not found" instead of having subtle silent problems.
according to https://itsfoss.com/news/ubuntu-25-10-sudo-rs/:
"Canonical's Jon Seager mentions that the sudo-rs developers are collaborating with Todd Miller, the original maintainer of sudo, and to think of sudo-rs as a "handshake across generations of secure systems".
He also added that sudo-rs is not expected to bring over all the features of sudo, as the devs are taking a "less is more" approach, excluding features that are too niche or outdated."
So sudo.rs drops some features because "less is more", but it's still called "sudo" because by working together with the original maintainer they capture the spirit of the original, a "sudo 2.0" so to speak.
Even if this change had been in the C version of sudo, I would expect deprecation warnings before the change, followed by error messages after the change, rather than silent failure. That's just good maintainership.
> So sudo.rs drops some features because "less is more", but it's still called "sudo" because by working together with the original maintainer they capture the spirit of the original, a "sudo 2.0" so to speak.
Except when the change of features are seemingly arbitrary. As the article points out when it comes to regexes, the following is not allowed:
but the following would be
So, as the author notes:
> The Rust sudo has apparently opted to keep the single most dangerous wildcard while disallowing all of the wildcards that allow one to be narrow and specific about what you're allowing […]
If the goal is a safer system: WTF?
You can perfectly write a replacement with advanced features w/o breaking anything. Best example breadth-first implementation of find. It mostly exists because find can't handle statx and so doesn't have access to all file properties like their birthtime.
It's 100% compatible to find plus some additional features. That's why it mentions find's manual for the basics and only points out what was added on top in its own manual.
UNIX creators moved on from their creations into Plan 9, Alef, Inferno, Limbo, Go.
Meanwhile FOSS OSes keep cloning UNIX.
However Ubuntu's approach to rewrite proven CLI tools into cool new language wasn't necessarily the best idea to do another RIIR.
It's treating command patterns in the sudoers file as literals when the previous one treated them as regexes.
Evolving tools or their defaults should be lead to silent and unexpected experiences on stable distros.
A transition period with warnings and logs, changes and key differences at the top of the man docs and helpers to find, migrate or at least fail loudly. These are all important bring everyone along, and vital to transition a critical tool like sudo.
> Tools have to be allowed to evolve.
Great, then give it a new name.
> At least the command is still called sudo or run0
You're happy it's a knockoff?
> would have been a much more breaking change
All these "Rust rewrite" projects are creating breaking changes all over the place, whilst solving no real problems. They can shove them up their arses.
It’s not a knockoff. They have a friendly relationship with the original creator of sudo. And their work helps uncover bugs of the original sudo so they send fixes upstream.
Friendly relationship or not, the end user experience is that something that was working, no longer is, because it's not feature compatible. This is despite it being used to replace it under the same name. If it had been `runas` or anything else it'd be fine.
There's a strong principle in upstream Linux kernel about "You don't break userspace"[1], that I really wish more folks would get into their heads, but most especially a variant "You don't subtly break userspace".
If you're going to replace an existing binary, under the same name, you need to be like-for-like in commands, even if your guts are completely different. Very few people give a damn about how it's actually implemented, just does it do what they need it to do.
If you want to do things differently, do it under a different name and have it be an explicit break for an end user by not shipping with the original and let people choose to install it if they really don't want the new thing. Breaking things subtly is completely unacceptable.
[1] espoused really clearly, as part of an infamous rant https://lore.kernel.org/all/CA+55aFy98A+LJK4+GWMcbzaa1zsPBRo...
1 reply →
All the time wasted on navel-gazing could have been spent auditing and fixing the original projects' code.
Starting anew WILL introduce new bugs. This is a statistical certainty.
Most Rust rewrites are justified upon imaginary boogeymen. The complex security nightmares of 'cp' 'ls' and 'rm' were begging for a new design.
10 replies →
Rust is a very good language, but some dogmatic people hyped in the language are ruining the reputation of the language.
agree
Who, exactly?
Every time Rust is mentioned, these mythical zealots are mentioned. Yet somehow they never seem to actually show up. Most elusive!
Are they with us in this room right now?
1 reply →
>Tools have to be allowed to evolve. Half the Linux ecosystem's problems are caused by sticking on some design that made sense in 1980.
the other half of the problems are from people who think redesigning the wheel is a good idea and try to wedge conformity-breaking tools into the thing.
> TFA blocks me with no workaround
I hope this copy works https://pastebin.com/mxAZyQJL (I was surprised the website even blocked archive.ph with "suspicious old browser")
Yes, they do. Put them into your stable server distribution AFTER they are complete.
Doas is already a replacement to sudo especially in the OpenBSD world.
You can install it in replacement as sudo on Linux.
Why? Do knives need to evolve? Screwdrivers? Hammers? Can’t good be good?
I don't know the history of knives and hammers, but screwdrivers _have_ evolved, in backwards incompatible ways.
Slot screws date back to the ~15th century, Phillips to the 1930s, and Torx to the 60s. They all brought improvements.
> Slot screws date back to the ~15th century, Phillips to the 1930s, and Torx to the 60s. They all brought improvements.
But Torx does not call itself "Phillips": you know the difference and plan accordingly.
Calling something "sudo" and then not working like sudo is the problem.
Sudo used to be in OpenBSD, but they found it too troublesome (at least as a default) so they created something else / 'better' for their needs: they didn't call it "sudo", they called it "doas", because it did not work the same way as sudo.
You may still be using flint-knapped knives, but the world as a whole moved on to bronze, then iron, and, more recently, steel. Hammers evolved as well, with more ergonomic grips being invented to reduce repetitive strain injuries, as well as various heads which are better suited to different tasks (like the claw hammer or ball-peen hammer).
Look at this guy still using flint
Did you mean changing it to doas or run0 would be breaking?