by 01HNNWZ0MV43FF | 2026-01-29 19:16:01+00:00
I'm going to lump together proprietary and for-profit software a little because I rarely see exceptions:

Proprietary / for-profit software is made that way, yes. There's no other way you can do it, given the incentive landscape. You take the huge base of FOSS code and spend as little effort as possible to build a thin little layer of moss on top. You respect the customers as little as possible to keep them around. You fix bugs as little as possible. You use other proprietary services that spy on your customers, like Sentry and Firebase, because privacy costs money.

Free / libre software has to compete on its merits. If a project isn't useful it doesn't grow. But not growing is okay. Some projects accrete over years, like a pile of stones forming a cairn. They don't need to squeeze money out of people to live because they aren't alive. They don't have to "eat".

I'm mixed on the Unix philosophy. It makes a lot of sense when you're building CLI tools that a hacker is going to plug together, because then your program is really a function in a programming environment that spans one or more entire computers. Tools like ripgrep, jq, curl, they're all great, I love them. A good function does one thing and does it well.

But just as often, I'm okay with huge software that does a lot. Web browser engines are evolving into universal GUI / IO frameworks and I'm trying to make peace with that. Systemd does a ton of stuff, but hell, so does the Linux kernel. I don't see an inherent problem with having an init system that acts like a monolith kernel for userspace. Microkernels are nifty but in the end we all ship our org charts. Maybe there's no need for microkernels if the real divide is between kernel programming and userspace programming. For the same reason, I haven't found any personal use for wasm, because wasm makes the most sense when you're connecting two pieces of code written by different teams at different times, like a GIMP plugin. I don't need wasm to plug my own code into my own code.

And for GUIs it's just been a fucking nightmare. 57 years since the Mother Of All Demos and it's still 10x easier to write `fn main()` and build a CLI program that runs on _every_ OS, rather than a GUI program that maybe runs on one OS, like it runs on Ubuntu 24.04 but not Ubuntu 22.04. What a fucking mess. GUIs don't compose, so every GUI project I've tried feels like I'm inventing the universe from scratch. It's fun but it's a stupid fucking waste of time.

Honestly browser engine frameworks like Electron and Tauri _are_ the Unix philosophy compromise. Making a GUI framework requires tens of thousands of lines of high-effort code made by experts. If a browser's one thing is "Be a GUI framework" then it allows your GUI app to just serve HTML and now it's a CLI app that runs anywhere without fucking with GTK 3 vs GTK 4 bullshit.

Sorry for the long rant. This stuff is all percolating in my head. I started with Visual Basic 6 and I still haven't seen GUIs improve since then. Phones have been a fucking step backwards, too. Everyone uses a phone but just like a mouse-and-keyboard player dominating gamepad players in a shooter game, I get a lot more done at a real desktop with a real pointing device.