|
|
Subscribe / Log in / New account

Rewriting the GNU Coreutils in Rust

Rewriting the GNU Coreutils in Rust

Posted Jun 9, 2021 16:29 UTC (Wed) by andrewsh (subscriber, #71043)
Parent article: Rewriting the GNU Coreutils in Rust

This concept document describes why and how we at Apertis came to a conclusion that we’re going to switch to uutils as our coreutils implementation. The work is currently in progress to integrate it into the target images.


to post comments

Rewriting the GNU Coreutils in Rust

Posted Jun 9, 2021 18:41 UTC (Wed) by IanKelling (subscriber, #89418) [Link] (21 responses)

Your document says you specifically want to prevent from running modified code on their device and are choosing uutils for that reason. As your document says and https://www.gnu.org/philosophy/open-source-misses-the-poi... says, tivoized open source is not free software. In fact, I suspect the most common software by total installs and total lines of code on end user computers is tivoized open source. The most notable programs are the kernel linux and sqlite on android.

Rewriting the GNU Coreutils in Rust

Posted Jun 9, 2021 20:22 UTC (Wed) by Wol (subscriber, #4433) [Link] (17 responses)

What you're missing here is that most "Free Software" is, to MOST users, "tivoised".

Not because they are physically or legally blocked from changing it, but because they precisely are USERS, they do not possess the ABILITY to modify and update the source and code.

This is where the Free Software philosophy falls down - all too often the end user cares nothing for the freedoms because they do not have the ability to avail themselves of them.

Cheers,
Wol

Rewriting the GNU Coreutils in Rust

Posted Jun 9, 2021 20:50 UTC (Wed) by pizza (subscriber, #46) [Link] (13 responses)

> Not because they are physically or legally blocked from changing it, but because they precisely are USERS, they do not possess the ABILITY to modify and update the source and code.

There's a big difference, legally as well as morally, between "not having the skills to do X" vs "actively prevented from doing X by a third party (and usually enforced by the government)"

"Tivoized" refers to the latter only.

Rewriting the GNU Coreutils in Rust

Posted Jun 9, 2021 21:53 UTC (Wed) by khim (subscriber, #9252) [Link] (12 responses)

That's true but in reality anti-tivoization clause takes important features from users (the ability to watch video on Netflix, the ability to play games they like, the ability to work with work documents on their own device and so on) in exchange for the nebulous freedoms which they couldn't use anyway.

Only true “free software” believers may think they can convince “Joe Average” that it's good trade-off.

Rewriting the GNU Coreutils in Rust

Posted Jun 9, 2021 22:17 UTC (Wed) by pizza (subscriber, #46) [Link] (10 responses)

> That's true but in reality anti-tivoization clause takes important features from users (the ability to watch video on Netflix, the ability to play games they like, the ability to work with work documents on their own device and so on)

Yep, "the industry" is downright user-hostile, seeing them only as eyeballs to monetize.

But speaking personally, if "the industry" wants to do that, they can write their own code instead of using mine.

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 0:01 UTC (Thu) by Wol (subscriber, #4433) [Link] (9 responses)

That's your choice, more importantly that's your right! But the trade-off that works for you doesn't work for Joe Average User.

Emphasizing the anti-tivoisation features of GPL3 will simply alienate them. And actually, most Android phones are not, I believe, tivo-ised even though the GPL2 permits it. Yes, it's a bugger to get round the tivoisation feature, but you can. By Design.

Thing is, this really is a feature, not an anti-feature, because it enhances security.

And given the environment I work/think in, much as I like the idea of copyleft, in practice the GPL does not "work as designed". It relies on the concept of "derivative work", and in a world of byte-code, with no concept of linking, there is no *practical* difference between GPL and LGPL.

Cheers,
Wol

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 0:46 UTC (Thu) by pizza (subscriber, #46) [Link] (3 responses)

> That's your choice, more importanlly that's your right! But the trade-off that works for you doesn't work for Joe Average User.

... so you're saying that folks that don't write software don't get to chose how their software gets used?

When "Joe Average User" gets fed up with getting trampled on, stuff will start changing. As an example of this, farmers are driving the "right to repair" movement.

(Another example -- the entire "maker" community. They're largely about "empowering users" too, only it tends to get expressed in non-software manners)

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 8:09 UTC (Thu) by joib (subscriber, #8541) [Link] (2 responses)

> When "Joe Average User" gets fed up with getting trampled on, stuff will start changing.

Issues of how people go about their digital lives, and to which extent they are themselves in control of it ("digital sovereignty" if you will) are certainly increasingly important. We have $multibillion corporate empires encouraging and monetizing online bigotry and hatred, influencing democracy in a very negative way, and may even be implicated in genocides (Myanmar). The free software movement could be a powerful public voice in all this. But no, instead it's retreating into the "by and for unix geeks stuck in 1990" world, rendering itself irrelevant.

> As an example of this, farmers are driving the "right to repair" movement.

Indeed; "farmers", "right to repair movement". Where is the free software movement in all this? Sitting far away in a corner lamenting the existence of permissively licensed projects like uutils or LLVM and hoping they fail.

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 10:25 UTC (Thu) by pizza (subscriber, #46) [Link] (1 responses)

> The free software movement could be a powerful public voice in all this. But no, instead it's retreating into the "by and for unix geeks stuck in 1990" world, rendering itself irrelevant.

What, exactly, are they supposed to be doing? Again, they have a shoestring budget and are up against companies who spend more than that every month on office supplies for their PR department. And do you honestly believe governments who think nothing of shooting their own people care what some foreign geeks think?

> Indeed; "farmers", "right to repair movement". Where is the free software movement in all this? Sitting far away in a corner lamenting the existence of permissively licensed projects like uutils or LLVM and hoping they fail.

The Free Software has been there all along, with formal organizations issuing press releases and filing occasional court briefs in support of the farmers. y'know, being an advocate like they've always been, with volunteers writing software to help solve problems they personally care about. That is literally all they can do, write software and be an advocate -- because that's all the legal regime allows -- anything more (such as developing alternatives) requires breaking DRM, which even talking about is enough to expose you to ruinous fines and jail time in most (if not all) developed countries.

The the FSF (and the greater Free Software movement) is not a corporation capable of imposing top-down direction onto a massive army of employees (and another army of lobbyists to bribe politicians) but that's what it's up against.

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 14:24 UTC (Thu) by joib (subscriber, #8541) [Link]

> What, exactly, are they supposed to be doing? Again, they have a shoestring budget and are up against companies who spend more than that every month on office supplies for their PR department.

True. It's not an easy or guaranteed win. But if your compare to, say, the abolitionists or suffragettes back in the day, they didn't have any money compared to the moneyed interests they were up against either. But they won, because they had morality and ethics on their side, and were able to leverage that into mass movements that supported their causes. I hope the free software movement could do the same in helping (not saying the free software movement must do this alone!) rein in the excesses of surveillance capitalism. But a narrow focus on copyleft won't achieve that, as most people who aren't software developers won't even understand what they're talking about, much less understand why it would matter and why they should care.

Freedom for people matter. Freedom for software doesn't, per se, except as a means to an end.

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 3:19 UTC (Thu) by pabs (subscriber, #43278) [Link] (4 responses)

I'm not so sure GPL2 permits tivoisation, doesn't it require the scripts for compilation & installation?

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 3:46 UTC (Thu) by pizza (subscriber, #46) [Link] (2 responses)

The FSF believes the GPLv2 permits tivoiization, and addressing that was one of the primary goals of the GPLv3:

(See https://www.gnu.org/licenses/rms-why-gplv3.en.html starting with the 6th paragraph )

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 4:24 UTC (Thu) by pabs (subscriber, #43278) [Link] (1 responses)

Interestingly, Software Freedom Conservancy (who enforce the GPL on behalf of some Linux kernel copyright holders) believes the opposite, that the GPLv2 does require installation too, with the caveat (apparently for both GPLv3 and GPLv2) that devices containing both GPL software and proprietary software can remove or disable the proprietary software once the GPL software is modified:

https://sfconservancy.org/blog/2021/mar/25/install-gplv2/
https://sfconservancy.org/copyleft-compliance/
https://events19.linuxfoundation.org/wp-content/uploads/2...

OTOH, they (and it seems RMS) believe that both the GPLv3 and GPLv2 permit what Tivo did. Some quotes from the PDF:

Ironically, even if Linux were GPLv3, Tivo’s method of crypto-lock-down would likely comply with GPLv3.

bkuhn checked this with RMS: even he agrees this mechanism complies with GPLv3.

Rewriting the GNU Coreutils in Rust

Posted Jun 11, 2021 18:43 UTC (Fri) by IanKelling (subscriber, #89418) [Link]

So basically tivoization, like I understand and it wikipedia defines it https://en.wikipedia.org/wiki/Tivoization ( hardware restrictions or digital rights management to prevent users from running modified versions of the software), is not exactly what tivo did. So, it's etymology is based on an inaccuracy, but it is still a very useful word as it is defined now, so I will probably keep using it. Saying the whole definition out takes a lot more time.

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 7:03 UTC (Thu) by matthias (subscriber, #94967) [Link]

> I'm not so sure GPL2 permits tivoisation, doesn't it require the scripts for compilation & installation?

Yes, it does. But it seems that it does not require that the scripts still work on the device:

> The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.

No word saying that the scripts still have to work on the distributed device. Maybe it is enough if the scripts work for an empty device prior to software installation. This of course does not help the end user as there is virtually no possibility to get hands on such a device.

Therefore, the GPL3 is more specific in this regard. But still, it seems perfectly ok, if any proprietary software on the device stops working in the moment you exercise your rights to install modified versions of the GPL software, which will render many devices useless.

Rewriting the GNU Coreutils in Rust

Posted Jun 11, 2021 1:41 UTC (Fri) by gdt (subscriber, #6284) [Link]

Australia has just had a inquiry into Right to Repair. Issues around software dominated submissions to the inquiry. So I'm doubtful of claims of public disinterest. The public might not want to alter the software themselves, but nor do they appreciate the economic consequences of no one being able to alter the software.

Rewriting the GNU Coreutils in Rust

Posted Jun 10, 2021 11:47 UTC (Thu) by geert (subscriber, #98403) [Link] (2 responses)

While most users lack the ability to fix their car or microwave oven, thus may still find it valuable to ask someone of their choice to fix it.

Rewriting the GNU Coreutils in Rust

Posted Jun 11, 2021 2:34 UTC (Fri) by ncm (guest, #165) [Link] (1 responses)

When was the last time you heard of anybody fixing a microwave oven?

Rewriting the GNU Coreutils in Rust

Posted Jun 11, 2021 7:50 UTC (Fri) by geert (subscriber, #98403) [Link]

Thanks to covid-19 (avoid strangers entering the house), I did fix my oven (broken primary coil on transformer powering electronics) and cooktop (worn out solder joint on MOSFET controlling induction coil) myself last year.

Rewriting the GNU Coreutils in Rust

Posted Jun 11, 2021 5:05 UTC (Fri) by Cyberax (✭ supporter ✭, #52523) [Link] (2 responses)

People don't really care about tivoization anymore. Mostly because computing became ubiquitous.

It's hard to summon righteous rage when you're talking about how you can't get into a TV HDMI stick ($50 cost) to install your own Linux there. Why bother, when a RaspberryPi costs $30 and comes with helpful manuals and a developer community?

I guess people were worried about tivoization earlier when most people had one multi-$$$ computer.

Rewriting the GNU Coreutils in Rust

Posted Jun 12, 2021 6:35 UTC (Sat) by pabs (subscriber, #43278) [Link] (1 responses)

I think it depends on the form factor of the device, for example you can't replace a smartphone, a robot vacuum, a car or a tractor with an RPi. So Tivoisation is much more important for certain classes of device.

Rewriting the GNU Coreutils in Rust

Posted Jun 15, 2021 23:35 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link]

My smartphone allows me to install a different OS. There are official ways to do that on Samsung and Google phones. Not sure about robot vacuums.

Tractors are a more interesting case, because their tivoization is actually ALLOWED by the GPLv3. I'm not joking, it only applies to:

> A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling.

And tractors are an interesting case in general, because John Deere is not the only manufacturer. People can buy tractors without any sort of lockdown just fine. However, John Deere's tractors are desirable exactly because they have very helpful software, even though it locks out third-party repairs.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds