Still a good talk on software quality

Jonathan Blow - Preventing the Collapse of Civilization


@cstrotm I love listening to Jonathan Blow, even if I don't always agree with everything he says. You can just copy a program to a system on linux, it's called AppImage. And his comment about the OS layer... without it there's a lot of things you couldn't just do across those systems, like accessing the hard drive would be different on each system if you tried to go direct instead of through the OS. Same for shaders. You would shift it from metal/hlsl/glsl to Nvidia/Intel/AMD/Adreno/Mali.

@kazriko AppImage is not an program, each AppImage is an mini operating system snapshot containing a program. It is bloat. That is what Jonathan is criticizing.

@cstrotm That's a container or a docker. AppImage is only a set of libraries, Data, and the executable in an image of a file system. It doesn't have the entire OS in it. This would be similar on DOS of compiling statically, then putting all your data inside the executable as well.


It is not the same. Linkers/Compilers on MS-DOS could remove code that is not referenced, so in a static binary you only ship the code that will be needed.

On AppImage, you will ship a lot of stuff that is never needed by the application.

That is the kind of regression Jonathan talks about.

@cstrotm That's a minor regression though, Not to mention that most applications on Dos still had installers anyway. It was pretty rare to find one that was a single file with no overlays or data files.

@kazriko metal/hlsl/glsl are software abstractions on hardware. It is at the same level as an OS.

The abstractions could be made the same API.

But the companies that create these abstractions do want to make it hard to create games that are cross platform

@cstrotm Yes, but each OS vendor decided to make their own. So on Windows, hlsl is to allow all apps to use whatever graphics card on windows. On Mac, Metal is for allowing apps to use whatever graphics card. on Linux, GLSL allows you to use whichever graphics card. But you then to achieve compatibility to each would need to implement each of those separately. If you didn't have those, then you would need to implement Nvidia, AMD, and Intel's languages directly.

@cstrotm This makes perfect sense to Apple or MS, since they make it easy to just develop on their platform whichever GPU. Makes less sense when you get to the whole stack level, because now you're stacking abstractions on abstractions. Os abstracts the cards, then the engine abstracts the abstraction layers.

@kazriko Yes, and that is the regression, as with OpenGL it was possible to target different cards the same way across different OS.

There could be something like OpenGL for shaders. But it is not. And that is the regression.

@cstrotm also, Vulkan has a similar idea called SPIR-V. There's platforms that shut Vulkan out though, like Apple's platforms.

Sign in to participate in the conversation
Arkaic Mastodon

An instance for Kazriko