|
|
Subscribe / Log in / New account

Sigh, not seeing the forest…

Sigh, not seeing the forest…

Posted Aug 19, 2024 22:43 UTC (Mon) by jasone (subscriber, #2423)
In reply to: Sigh, not seeing the forest… by iustin
Parent article: FreeBSD considers Rust in the base system

Imagine your Linux-based operating system had its included C compiler dictated by whatever the Linux kernel developers were using to compile the kernel version in your system. And then same thing for whatever Rust compiler they were using. That's very close to what happens with FreeBSD. It's a high tax to pay all around.


to post comments

Sigh, not seeing the forest…

Posted Aug 19, 2024 23:49 UTC (Mon) by khim (subscriber, #9252) [Link] (15 responses)

If they are doing things that way then adding Rust is, indeed, more-or-less useless.

Look rustc compatibility map: if you look on popular crates (that are actively maintained and used) then more than half require Rust 1.76+. Rust 1.76 was released in February. This year, yes.

If you are trying to stick with some fixed version of Rust you would find yourself limited to ancient versions of most popular crates and if you make it hard to bring crates into the codebase (most likely article we are discussing is close to correct) then you quickly end with with “FreeBSD Rust” that's entirely disconnected from “everyone's else” Rust.

People may tolerate that in kernel (which is special enough that you probably don't want to bring random crates just because someone thinks they are cool), but in the userspace? This would be pure misery for everyone involved: every attempt to ask about anything on public forums outside of FreeBSD would be meet with a shrug and “well, you have created problems for themselves, you find a way to resolve them” answer 90% of time.

Sigh, not seeing the forest…

Posted Aug 20, 2024 8:03 UTC (Tue) by gspr (subscriber, #91542) [Link] (14 responses)

> Look rustc compatibility map: if you look on popular crates (that are actively maintained and used) then more than half require Rust 1.76+. Rust 1.76 was released in February. This year, yes.

More than of those require rustc 1.76+ *in order to build their latest version!* Roll those crates back back a few versions, and you'll see a very different picture.

I do also find the Rust culture of "use the latest version of every crate, or bust" mentality problematic, but I've had success doing Rust development on Debian stable with only Rust crates (and rustc) as shipped by Debian stable.

Sigh, not seeing the forest…

Posted Aug 20, 2024 8:39 UTC (Tue) by Vorpal (guest, #136011) [Link] (13 responses)

Why though? I argue that the LTS approach is actually wrong. In theory you get stability and fewer bugs. In practise I have used Debian stable, Ubuntu LTS and Arch Linux and Arch has been the most stable of them all (with the few bugs I have encountered getting fixed promptly).

If you use Ubuntu and something breaks due to a backported fix you are out of luck until the next LTS comes around (unless you have a commercial support contract I guess, maybe?).

Arch Linux has also been the most stable when it comes to things like laptop suspend/resume working and not bugging out.

This suggests to me that LTS/stable releases doesn't actually work in practice. They end up less well tested than upstream, and thus buggier. Now, I'm not suggesting that you should run the absolute bleeding edge (you should run debian testing, NOT unstable). And if you have something critical that depends on things working you should have automated tests before you deploy. In fact you should have automated tests anyway, or you risk breakage when updating from one stable version to the next.

Really, the only reason I see for staying on old versions (other than temporary until a specific bug is fixed), is if you legally need certification (e.g. a certified compiler for software in medical devices, automotive, etc). And at that point you better have really good automated testing as well. (And follow a bunch of relevant standards for how you code, etc. I work on safety critical systems for my day job, it can be fairly involved.)

Sigh, not seeing the forest…

Posted Aug 20, 2024 8:54 UTC (Tue) by gspr (subscriber, #91542) [Link] (9 responses)

I guess we're deviating from the actual topic (what version of rustc is required for the most popular crates), but the digression is interesting too, so I'll answer in general terms:

I work in research. I need my computer for that. I do *like* maintaining computer systems (that is, for example why I participate in the Debian project as a DD). However, the older I get, the less time I have for it. So then, in order to be able to do my work, I need my equipment to be *predictable* when I start the day. It's not really relevant whether the latest and greatest breaks or not (my younger self definitely didn't experience much breakage at all when living like that), it's more about whether things change from under me. Can I start exactly where I left off yesterday, or do I need to adapt to the world having changed?

The world upending completely every two years or so feels like just about the right pace for me. A one year cycle would be OK too. The main point is that I've come to love and appreciate the stability(*) of classical, slow-cadence, distro releases (and all the software they ship). I use the word stability in a very Debian-y sense here: not stable as in does-not-crash, but rather stable as in does-not-change(-for-good-or-for-bad).

So I guess that makes me a weirdo who loves hippest programming language in town *and* simultaneously the good old ways of classical distros. (I'm even a weirdo who'd love to see something like ABI stability and dynamic linking in Rust, but that of course faces many technical hurdles.)

Sigh, not seeing the forest…

Posted Aug 20, 2024 8:57 UTC (Tue) by gspr (subscriber, #91542) [Link]

I'll add: Of course one sometimes needs access to the latest and greatest. Especially in research. While I don't at all embrace the "containerize everything" fad, I do very much appreciate that container systems let me spin up isolated bleeding edge environments on top of my stable base system whenever a research project relies on version-released-yesterday neural network, or something like that. Best of all worlds.

Sigh, not seeing the forest…

Posted Aug 20, 2024 9:16 UTC (Tue) by khim (subscriber, #9252) [Link] (6 responses)

> The world upending completely every two years or so feels like just about the right pace for me. A one year cycle would be OK too.

But are you sure it's because that's how older people feel or because that's the only alternative available?

I know lots of older people who have got Chromebooks or Chromeboxes for them. And that thing updates itself every 6 weeks. Most of these users are pretty happy.

The trick is, of course, that they don't ever need to know or care that it updates itself.

> I use the word stability in a very Debian-y sense here: not stable as in does-not-crash, but rather stable as in does-not-change(-for-good-or-for-bad).

Yes. That's what elders violently assert they want but what they actually need is, most likely, stable as in does-not-crash.

Yearly Android and iOS releases invariably lead to more complaints than every 6 weeks Chrome and ChromeOS releases.

People tolerate certain amount of breakage and certain amount of instability. They are not robots. The trick is to reduce that amount below certain threshold. And not to provide LTS releases.

Of course it only works if you don't go and break things just because it's new release and you feel you have the right to do that, but change things slowly and gradually.

But that actually happens pretty much automatically in the “use the latest version of every crate, or bust”: major breakage is confined to major, semver incompatible, releases, minor releases need, at most two or three lines of code changed (in places where you used something explicitly unsupported, usually).

Sigh, not seeing the forest…

Posted Aug 20, 2024 10:45 UTC (Tue) by gspr (subscriber, #91542) [Link] (1 responses)

>> The world upending completely every two years or so feels like just about the right pace for me. A one year cycle would be OK too.

> But are you sure it's because that's how older people feel or because that's the only alternative available?

Yes. I'm the "older person" in my own anecdote. I'm not very old, but older than I was a decade ago when I very much enjoyed having the latest version of everything. I can't say for sure whether my change in attitude comes from age. But I guess that's not really all that important – what's important is the very real change in attitude.

Sigh, not seeing the forest…

Posted Aug 20, 2024 11:14 UTC (Tue) by khim (subscriber, #9252) [Link]

> I'm not very old, but older than I was a decade ago when I very much enjoyed having the latest version of everything.

So you have never tested the approach that you are criticising from what I can see.

Rust approach is not to push disruptive changes on you, but to have few versions available: one that is only getting fixes and is backward-compatible and one that is getting new features.

You are expected to always pick the bugfixes but only upgrade to next major version when you have time.

In practice that's closer to Android model than to LTS or Debian testing.

Sigh, not seeing the forest…

Posted Aug 20, 2024 14:10 UTC (Tue) by Wol (subscriber, #4433) [Link] (3 responses)

> > I use the word stability in a very Debian-y sense here: not stable as in does-not-crash, but rather stable as in does-not-change(-for-good-or-for-bad).

> Yes. That's what elders violently assert they want but what they actually need is, most likely, stable as in does-not-crash.

Why can't they BOTH be important? What matters is stability, as in "if it worked yesterday, it has to work THE SAME WAY today".

And yes I DO LIVE THIS EVERY DAY!

As someone providing support to a disabled wife, and her elderly parents, my BIGGEST problem is change. That's why we upgraded directly from XP to Windows 8.1. My wife pretty much didn't touch 7 or 8.0, because *I* couldn't face the pain of upgrading her, until her XP computer became pretty much unusable because of its age ...

Cheers,
Wol

Sigh, not seeing the forest…

Posted Aug 20, 2024 14:45 UTC (Tue) by Vorpal (guest, #136011) [Link] (2 responses)

How painful was that upgrade once you actually did it though?

As for getting both, that would be nice. Doesn't seem to happen in practice though.

Sigh, not seeing the forest…

Posted Aug 20, 2024 20:28 UTC (Tue) by ringerc (subscriber, #3071) [Link]

Trouble is you don't know how painful the upgrade will be, and rollback is usually infeasible.

I disk image systems before upgrades but most people can't do that.

I have little time and can't afford to spend 2 days tracking down why my updated GPU driver causes the main app I use to overlay fuzzy squares on everything. If it works I minimize change until I have some contingency time in hand. Since home desktop and laptop systems are effectively all unique (hw+sw+config combo) there's always a chance of mess.

Since my last Ubuntu update for example I'm having some frustrating issues with both Firefox and with Electron based apps experiencing periodic display glitches. No time to deep dive on it at the moment so I put up with it. Last update my laptop display server started freezing when unplugged form the external display. The one before that, it would periodically fail to suspend or resume... and this is pretty well supported hardware on a widely used distro. Admittedly the nVidia GPU is a significant part of the problem, one I'm usually able to avoid but wasn't with this model, but still.

The windows systems I have to maintain are even worse because they aggressively force significant updates. They're infrequently used so they're often pretty much disabled by immediately forced updates when I do boot them every few months...

Sigh, not seeing the forest…

Posted Aug 20, 2024 20:43 UTC (Tue) by Wol (subscriber, #4433) [Link]

> How painful was that upgrade once you actually did it though?

Pretty painful. Not as bad as 7 or 8.0 would have been, however, I don't think. Precisely because 8.1 brought back a lot of the XP look-n-feel.

Mind you, it's now degenerated to "supporting anything is painful", as the in-laws can no longer cope with technology full stop, and my wife struggles all the time. That's why change is so painful now - if things don't change at least she stands a fighting chance of remembering what to do, if it changes - no chance!

Cheers,
Wol

Sigh, not seeing the forest…

Posted Aug 20, 2024 10:21 UTC (Tue) by Vorpal (guest, #136011) [Link]

Fair enough, I would rather take a laptop that properly wakes from suspend to ram every time (never seen that work reliably on Ubuntu or Debian, it is 99.9% reliable on Arch). I guess it all depends on what stability metrics you care about.

And even on Arch most updates don't "upend the world". Yes, sometimes they do (KDE 6), but that is rare, because upstream doesn't release such major releases very often. I guess the question then is, do you want those 3-4 times per year (and only small and partial to specific subsystems) or do you want to accumulate a bunch and get them all in one go.

Really though, I can't think of any major update in the last year except for KDE 6. Yes, there been 2-3 updates where I hit minor bugs after updates too (quickly reported and quickly fixed, and none of the a showstopper), and one where I got a fairly annoying bug (Bluetooth defaulted to off in the login manager, easy to fix in the config file once I figured that out, and on a laptop it is an inconvenience not a show stopper).

LTS versus staying on latest

Posted Aug 20, 2024 9:58 UTC (Tue) by farnz (subscriber, #17727) [Link] (2 responses)

I worked at a place where we transitioned from LTS to staying on latest while I was there; there were two impacts of this change:

  1. The bug count went down overall, but the specific bugs we were facing kept changing. This was acceptable for us, since we could work with upstream to fix the ones we cared about, and it didn't matter that the exact set of bugs varied with time, only that we had no important bugs.
  2. Upstream were much more willing and able to work with us on the bugs we cared about when we were using their latest code than they were with LTS code. As a corollary of this, we got much more support for fixing regressions, because upstream were much more willing to revert the improvement that caused a regression for us while they found a version that fixed the regression than they were when we came in via LTSes (where the attitude was often "well, if we simply revert while we find a fix, we cause a regression for this other user").

Based on this experience, I would say that LTSes are the right approach when it's critical that there are no regressions but you're happy to live with the existing set of bugs, while staying up to date is the right approach when you can handle a regression but are unhappy having to live with known bugs.

LTS versus staying on latest

Posted Aug 20, 2024 20:31 UTC (Tue) by ringerc (subscriber, #3071) [Link] (1 responses)

Right. LTS is about predictability more than runtime stability.

Especially when you are part of a chain of delivery it can really help.

LTS versus staying on latest

Posted Aug 20, 2024 20:43 UTC (Tue) by farnz (subscriber, #17727) [Link]

And specifically LTS is about having a known set of bugs; you may have a bug that means that one app overlays little fuzzy squares on everything, but it's consistently present, and you're not going to exchange that bug for one where the app crashes after 72 hours of continuous use. The idea is that you can live indefinitely with the bugs in the ".0" release of the LTS, but you cannot cope with the introduction of a new bug or with a regression.


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