We need a Great Software Purge.
There are many good talks on this topic or on parts of it, but they're long:
The website obesity crisis
The reckless, infinite scope of web browsers
The thirty million line problem
Preventing the collapse of civilization
In short, our software ecosystem is awful, and it's because we're building atop all existing layers of complexity, so we inherit all their weaknesses. Fixing software requires *removing* the layers of complexity atop which everything is built, starting from the lowest levels, because the problems begin at those levels.
This ultimately means abandoning most existing software and hardware. I'm assembling thoughts about what we're going to carry forward through this abandonment, and calling it the Ark.
I am no expert on hardware, but I understand a huge problem that the Ark has to solve is that almost all of our hardware and firmware is proprietary, including our processor architectures, x86 (used in most computers) and ARM (used in smartphones and recent Apple computers). *We need open hardware.*
I have my hopes set on RISC-V. I know it's not the only open processor architecture but I single it out because it seems to be gaining traction.
I think there are three candidate OSes: Helios, 9front (derivative of Plan 9), and Redox.
Helios is brand new, but it's led by the person I'd trust the most with such a project, someone with great views about software, great qualifications and a demonstrated ability to get things done, and most importantly, someone who has learned from Plan 9.
9front is the most mature, I think. But it is actually ancient, and I fear that it will suffer from having been designed before modern considerations.
As for Redox, there are two concerns I have about it:
- Redox is partially chained to POSIX.
- While I like Rust, it is a bloody massive weight to have on a kernel, and I am full of doubt about this.
It isn't urgent, but C ultimately needs to be replaced. I think there are two candidates for this: Zig and Hare. We'll probably end up with both coexisting. Once they're more mature I'll definitely encourage everyone to write new low-level software in them instead of C.
I like Rust a lot, but I am sadly doubtful about it:
- It is bloody massive. And it is chained to LLVM. And because of its weight, I fear it will always be chained to LLVM, and will never support any Ark OS.
- Much of the mass is obviously unnecessary (APIs like .is_empty()) or is legacy cruft, like the legacy macro system.
- It seems on a trajectory of increasing bloat with no end in sight.
- Its freedom flaw, as stated by the Hyperbola devs.
- I've heard complaints from good sources (ie. Drew DeVault) about its support for non-mainstream platforms.
Rust's freedom flaw
Rust: "move fast and break things" as a moral imperative
The RISC-V experience
Good things about Go:
- It is not bloated! Very rare!
- It already supports Plan 9.
- It is more practical than C for application software, and probably more practical than Zig and Hare.
Python is a language I used to love, and still like more than other dynamic languages, however I feel it's "jumped the shark"; it is now being stuffed with inapproriate bloat, such as pattern matching (PEP 634), and has just always been a complex language. And I just hate all dynamic/interpreted languages nowadays.
A nice language to use, but:
- Like Rust, it is bloated and chained to LLVM, and so probably will never support any Ark OS.
- Global type inference means all compilation must be done in a single unit, which is impractical for large projects without high-end hardware. Back when I was first rewriting Didact in Crystal and it used an ORM I couldn't compile it on my VPS because it took too much fucking memory. Let me know if they solved that somehow.
subscribe via RSS