Ubuntu explores replacing gnu utils with rust based uutils


At first I was sceptical, but after a few thought, I came to the solution that, if uutils can do the same stuff, is/stays actively maintained and more secure/safe (like memory bugs), this is a good change.

What are your thoughts abouth this?

https://www.cyberciti.biz/linux-news/ubuntu-to-explore-rust-based-uutils-as-potential-gnu-core-utilities-replacement/

don't like this

in reply to thedeadwalking4242

Ideas can only be patented, not copyrighted. If a company designs something novel enough to qualify for a patent, and so good that people willingly pay for the feature, that's impressive, and arguably still a good thing. If instead they design a better user experience, or an improvement in performance, the ideas can be used in open source, even when the code cannot be.

don't like this

in reply to SmoothLiquidation

This entry was edited (8 months ago)
in reply to SmoothLiquidation

Imagine a contributor of the project. He would have been fixing the bug for free and give the work to the public project. Right before he submits the code change, he sees an ad from a big tech bro: "Hiring. Whoever can fix this bug gets this job and a sweet bonus." He hesitated and worked for the company instead.

Now that he is the employee of the company. He can't submit the same bug fix to the open source project because it is now company property. The company's product is bug free, and the open source counterpart remains buggy.

This entry was edited (8 months ago)
in reply to Zenlix

This entry was edited (8 months ago)
in reply to Zaemz

Mainly memory safety; split (which is also used for other programs like sort) had a memory heap overflow issue last year to name one.
The GNU Coreutils are well tested and very well written, the entire suite of programs has a CVE only once every few years from what I can see, but they do exist and most of those would be solved with a memory and type safe language.

That said, Rust also handles parallelism and concurrency much better than C ever could, though most of these programs don't really benefit from that or not much since they already handled this quite well, especially for C programs.

in reply to 0x0

To add to @ParetoOptimalDev@lemmy.today

The uutils are MIT licensed, simply put it means “do whatever you want with it, as long as you credit us”.
The coreutils are GPL, simply put “do whatever you want with it but only in other GPL works, also credit us”.

The coreutils make sure forks will also be open source.
While the uutils aren't closed source, they do allow you to make closed source forks.

The uutils' license is too permissive.

This entry was edited (8 months ago)
in reply to Communist

This entry was edited (8 months ago)
in reply to Zaemz

I fear moving away from GPL that moving to Rust seems to bring, but Rust does fix real memory issues.

Take the recent rsync vulnerabilities for example.

cyberciti.biz/linux-news/cve-2…

At least this one in a Rust implementation of rsync would have very likely been avoided:

CVE-2024-12085 – A flaw was found in the rsync daemon which could be triggered when rsync compares file checksums. This flaw allows an attacker to manipulate the checksum length (s2length) to cause a comparison between a checksum and uninitialized memory and leak one byte of uninitialized stack data at a time. Info Leak via uninitialized Stack contents defeats ASLR.
in reply to ParetoOptimalDev

I fear moving away from GPL that moving to Rust seems to bring, but Rust does fix real memory issues.


So you prefer closed-source code to potentially unsafe open-source code?

Take the recent rsync vulnerabilities for example.


Already fixed, in software that's existed for years and is used by millions. But Oh no, memory issues, let's rewrite that in ! will surely result in a better outcome.

in reply to joel_feila

This is one of the old-time original arguments in the OSS community.

The crux of the matter is that the GNU licenses require that modifications be released back to the community. Other "more permissible" licenses like MIT do not.

So if you want to make a commercial version of X, and X is under a GPL, then any changes you make need to be released under the GPL. The idea being "I shared this code with the community with the intent that you can use it for free and modify it as you like, but you need to share back what you do." Also called "Share and share alike".

This defends against "embrace, extend, extinguish" tactics that companies like Microsoft has loved to do. They can't take your code, modify it for their own purposes and re-sell it possibly making a more popular version that is now proprietary.

in reply to LeFantome

Here's a better example: the use of GPL software (primarily Linux and busybox) by Linksys when they made their wrt54g router was used to compel them into releasing the source code of the firmware for that router. Subsequent GPL enforcement by the SFC made Cisco release full firmware sources for a whole series of Linksys routers. Thanks to those sources openwrt, ddwrt and several other open source router firmwares developed.

I can now run three openwrt routers in my home purely thanks to the GPL. If those projects had been MIT licensed, Linksys and Cisco could have just politely told everyone to go suck a lemon because they would have had no obligation to release anything.

in reply to Zenlix

My scepticism is that this should've been done within the coreutils project, or at least very closely affiliated. This isn't an area of the linux technical stack that we should tolerate being made distro-specific, especially when the licensing is controlled by a single organisation that famously picks and chooses its interpretation of "FOSS" to suit its profit margins.

On a purely technical level, GNU coreutils should very seriously consider moving to rust if only to counter alternatives before it's too late. While these utilities work well in C (and usually stay secure thanks to the Unix philosophy limiting the project scope), FOSS projects are continuing to struggle with finding new contributors as younger devs are more likely to use modern systems languages like Go and Rust. Not to mention that any project using Rust as a marketing tool will appeal to anyone rightfully concerned about hardening their system.

This entry was edited (8 months ago)