September 16, 2019 5:34 PM, "Brennen Bearnes" bbearnes@gmail.com wrote:
In the last 5 years I've come to think of the network we have as mostly pathological, bound up in and accelerating the pathologies of our culture and economy. I've lost hope entirely for some things I once cared about fiercely, the web itself high on that list.
With similar motivations, I've been building a whole new computer from scratch. Right now all you can do with it is program in (a fairly ergonomic syntax for) machine code. It takes one command to package up a program into a bootable image that you can run on Qemu or upload to a cloud server on Linode or similar for a few bucks a month.
https://github.com/akkartik/mu#readme
At first glance this seems to fall into the trap of trying to solve a social problem with code, which is what got us into this mess in the first place. I have two defenses:
1. Working on this preserves my sanity. Miniscule chance of reaching a worthwhile destination, but the journey seems to be motivating.
2. While you can't solve social problems purely with a technical solution, technological choices have a powerful influence on which social solutions get tried. In particular, I think a lot of the problems in our network stem from privileging whoever happened to show up first. Our computers are pervaded by bad decisions that we think we can't undo, just because we think we have to keep supporting old ideas for eternity. An innocent-sounding word like 'compatibility' is a key pillar supporting existing power structures.
The current codebase is nothing; the goal of Mu is to change the social contract.
Current contract: you build an interface, I start using it, you have to keep supporting it, you can keep adding to it, I get updates automatically, upgrades require no work, they never break anything I use (ha!)
Proposal: you build an interface, I start using it, you can change it however you want, I decide when to upgrade, upgrades may require some bounded work, and I can skip the upgrade if something doesn't work.
This seems more realistic, somehow. I'd love to hear people's thoughts.
One implication of this approach: lots of people won't upgrade. If a popular tool were to make an incompatible change, an eco-system will pop up to fork the old version. Branches will fork off of _that_.
We've been taught that this sort of 'fragmentation' is a bad thing. I don't know why that is. Most things in our world work this way, and they're better for it. If you find that a building has a structural defect, only that one building is affected. Why do we put up with a system where a one-line code change can break or compromise vast swathes of the internet? Having lots of forks is more robust to catastrophe.
The power of code stems from being easy to change. Today we gradually give up this power as new services mature. But the chains binding us to the past are largely in our own heads.
Anyway, that's my pitch. I want to build a new stack that supports a new social contract, and I think it'll lead to a more robust and resilient network. It requires lots of experimentation on tools to share code across incompatible forks. Who's with me? No programming experience required. I've taught people programming in the past, and if you're willing to persevere I'll do whatever it takes to support you.
I have no idea how the new world looks past machine code. What does a new internet and browser look like? I'm hoping we can figure that out together.
Sincerely, Kartik http://tilde.club/~akkartik