Casey Muratori's long talk arguing that modern software has ballooned to tens of millions of lines because of hardware and OS diversity. He proposes a stable ISA for entire system-on-a-chip packages and recalls when games shipped with their own boot disk.
Why Hacker News points people here: HN recommends it, long as it is, as an eye-opening rant on software complexity and why systems became so complicated.
“The video is long, but it's worth watching all of it.”HN comment, 2018
“The video is long, but it's worth watching all of it.”
Muratori's proposal for a simple SoC ISA to replace OS complexity
Full comment
This may be a little off topic, but has anybody watched Casey Muratori's proposal on SoC ISAs[0]? The video is long, but it's worth watching all of it. It sounds to me like a SoC ISA could make docker obsolete. If it ever happens, anyway. [0]: this video
Strongly recommendshenningOct 2024
“Yes, modern computer systems are unbelievably complicated from the application level down to the hardware.”
Devastating consequences of modern system complexity
Full comment
Yes, modern computer systems are unbelievably complicated from the application level down to the hardware. The consequences are absolutely devastating. this video
RecommendsmeukOct 2018
“Casey Murati has a great rant about this”
Muratori's rant on OS complexity and hardware diversity
Full comment
I think the problem is that current OSes are too complicated. What does a common user really want? I'd say text editing, making presentations, multimedia, and browsing. While these sound like simple things, text editing usually happens in a Word-like format, which - from what I've heard - is ridiculously complex. The same thing holds for browsing (simple browsers don't exist anymore, and many use the same back-end for rendering). For multimedia, USB is very important, which is a very complicated format to use correctly. Then, there are tens of codecs and formats for multimedia, each with their own idiosyncrasies and ambiguities in the specs (or deviations from the spec that are so common that they are expected nowadays). The case is even worse when your OS is supposed to run on different hardware. I think this is the main reason that Apple, in general, has a much better UX: They only have to support a limited set of hardware. Casey Murati has a great rant about this: this video
RecommendsworldsayshiMay 2019
“If you'd like to venture further into this rabbit hole I can recommend”
Further reading on software collapse and complexity
Full comment
If you'd like to venture further into this rabbit hole I can recommend "Preventing the Collapse of Civilization": link And "The Thirty Million Line Problem": this video
RecommendsdsegoOct 2019
“There is an argument that a lot of today's complexity in software is an (unnecessary) byproduct of changes in hardware design.”
Argues software complexity stems from hardware design changes
Full comment
Have you seen the 30 million line problem* by Casey Muratori (of Handmade Hero fame)? There is an argument that a lot of today's complexity in software is an (unnecessary) byproduct of changes in hardware design. * this video
RecommendsscrupleJan 2020
“You might be interested in watching it.”
Related talk on software complexity
Full comment
There is a related Jonathan Blow talk titled "Preventing the Collapse of Civilization" [0] that I came across recently from a HN post. You might be interested in watching it. Also, Casey Muratori's talk titled "The Thirty Million Line Problem" [1]. [0]: link [1]: this video
Recommendsstephc_int13May 2020
“A quite well-known rant from Casey Muratori about a very similar issue”
Well-known rant on a similar issue
Full comment
A quite well-known rant from Casey Muratori about a very similar issue: this video (For those who never saw it)
RecommendsJamesSwiftApr 2021
“Heres a good talk I came across in a HN comment a little while back”
How games used to be developed versus today
Full comment
That might be what OS'es currently _are_, but I disagree that it is what an OS _is_. I think fundamentally an OS is as the OP uses it, a set of code that interfaces with all your hardware to make the computer function. Heres a good talk I came across in a HN comment a little while back [1] about how games used to be developed vs how they are today. [1] - this video
RecommendsposnetJun 2022
“(Long, but worth it, assuming you haven't seen it already)”
Muratori on software complexity
Full comment
You are not alone in thinking that, see 'The Thirty Million Line' talk by Casey Muratori. (Long, but worth it, assuming you haven't seen it already) this video
Recommendsdrivers99Mar 2023
“I'll point you to these two talks”
Eye-opening talk on modern computing complexity
Full comment
I would say just look around, but it's probably because of some of the information I've seen that opened my eyes to it, so I'll point you to these two talks: this video Preventing the Collapse of Civilization / Jonathan Blow link The Thirty Million Line Problem / Casey Muratori
RecommendsfrflNov 2023
“there's a relevant video I know of by a well known game-dev”
Relevant talk by a well-known game dev
Full comment
It's not what OP is looking for, but there's a relevant video I know of by a well known game-dev, The Thirty Million Line Problem - this video
Cites itloup-vaillantJun 2018
Cited on software bloat and why so much code is needed
Full comment
So now not only projects have to be maintained, we also have to maintain changes ? I'm seriously getting sick at the notion that nothing can ever be finished. Bugs? That will be those introduced by the change, nothing more. If there is any bug left, that's only because nobody discovered them yet. Having a maintainer won't change that, only usage reveals bugs. (Unless of course the "maintainer" is instead tasked with finding bugs in the first place). Bit rot? That's only an issue when the environment around the code changes. Clang is a compiler , there's not much it cares about its environment. And if you're talking about changes within Clang that could have an effect, and those are well within the maintainer's control. We shouldn't need a maintainer for every patch. This change in particular doesn't seem to introduce any new feature. I'm guessing it only allows Clang to run faster. The new code path replaces the old, so it shouldn't require much more maintenance. --- More generally, we should do away with the notion that everything should be maintained, forever. We should be able to code correct programs. We should have environments stable enough to preserve that correctness. And we should stop believing we need so much code in the first place. Let's not kid ourselves, programs "require maintenance" (euphemism for "aren't finished"), mainly because they're so damn big. We can do better, really. linklinkthis video
Cites itAnIdiotOnTheNetAug 2018
Linked as the intended Casey Muratori talk
Full comment
I feel like you intended to link this [0]? [0] The 30 Million Line Problem: this video The article is about Casey's work verifying collision geometry and movement code in Jonathan Blow's The Witness, to ensure that the player can't get stuck anywhere or fall through the ground or anything like that.
Cites itfrou_dhOct 2018
“he actually presented the same content in person to staff at Intel”
Muratori on canonical ABIs and pitching it to Intel
Full comment
> I think it was Casey Muratori who made the argument that we could return to having nice ABIs that are canonical APIs Here's the video I think you're referencing: this video IIRC he mentions that he actually presented the same content in person to staff at Intel, and discusses how it's very hard to get any buy-in even if the engineers consider the approach to make sense.
Cites itchenglouJan 2021
Cited in a discussion of VPRI and code size
Full comment
I happened to have read many of VPRI’s papers and some domain expertise in a few of their topics, or know close friends with such domain expertise. Btw, my collection of their links are at link The goal is a noble one; though it's unclear to me if their research is the right way to go. Alan Kay's gang's research's end result are often great, but their implementations are usually more geared toward prototyping rather than production. For example, the GUI innovation is great, whereas its implementation using Smalltalk is clearly geared toward faster iteration and not meant to be as competitive as a production language (let's not enter into this debate as this is another rabbit hole. Plenty of other HN threads on this). But I think so far these implementations have gotten a pass because the end result is futuristic enough for someone else to come along and implement e.g. the GUI in more production-oriented languages. In the context of VPRI, however, the goal wasn't to create more futuristic end results, but to recreate existing result using hopefully drastically more concise paradigms and DSLs. In this case, the implementation itself is the thing we should examine, and imo they kinda fall short. For example: - Yes, it's very appealing that Nile can reduce the antialiasing logic by so much. Is it resilient to real world requirement changes though? Unclear (and the Nile paper still isn't out as the author seems busy with some startup). - The OMeta parser tool is cool until you e
Cites itmodernerdApr 2021
“every game was a boot disk.”
Muratori on how every game once shipped with its own OS
Full comment
“In the 1980s with things like the Amiga computer, for example, every game was a boot disk. It booted into its own customized version of an operating system that ran what it needed to run to make its game work well and be performant and reliable. … We know that in the past, hardware that was very capable and very interesting made it so easy to create an operating system that literally everybody did it. Not a few people. Not even most people. But literally everybody.” – Casey Muratori in “The Thirty Million Line Problem” this video
Cites itYoofieOct 2022
“Reminds me of these videos from Casey Muratori”
Related Muratori videos
Full comment
Reminds me of these videos from Casey Muratori: 30 million line problem - this video Twitter and Visual Studio Rant - link
Cites itcellularmitosisMar 2023
“Casey Muratori proposes going back to the memory-mapped-io-as-universal-hardware-api”
Muratori proposes memory-mapped IO as universal hardware API
Full comment
Casey Muratori proposes going back to the memory-mapped-io-as-universal-hardware-api in "The Thirty Million Line Problem" this video
Cites itfractallyteJun 2023
“Apple is one of the companies directly responsible for the explosion in complexity - and insanity - in modern computing.”
Full comment
It's "abstractions" that led to this: this video [The Thirty Million Line Problem] And Apple is one of the companies directly responsible for the explosion in complexity - and insanity - in modern computing. It's all so deeply entrenched - the hardware, abstraction layers, languages, culture - that it's difficult to imagine ever being able to extricate ourselves from this mess. We need another 'quantum leap' in technology, or some new paradigm...
Cites itdatadeftNov 2023
“We used to have an operating system with every game released[1].”
Games once shipped with their own operating system
Full comment
> I'm really sold on the idea: Instead of a full-blown OS, You mean you are sold on the idea of going back to the 80s. We used to have an operating system with every game released[1]. 1. this video