> "The sky above the port was the color of television, tuned to a dead channel."

_William Gibson, Neuromancer._

> "You can't take the sky from me."

_Theme song from Firefly (2002)._

I want to talk about web hosting, and personal identity, and corporate entitlement, and technical literacy, and a hundred thousand other things that tangle together when the human condition is the gasoline lit by the fire of Prometheus at the top of Mount Silicon. But for the sake of starting somewhere, maybe we should talk about transformation.

When you load `facebook.com` in your web browser, because for some reason your parents and childhood friends are as tightly wedged into that platform as Excalibur into granite, there is - somewhere - a database. It's a complicated database[^1], and there's some kind of cache in front of it, but it's a base and there's data in it. That data is structured. And it's structured very differently than the HTML page that gets sent to your browser. Somewhere between the two, some web application that used to be PHP[^2] has asked the database quite a lot of questions, and turned the answers into a format that your Firefox tab can understand. A transformation has occurred, and for sociopolitical reasons, it happened somewhere geographically distant from your house.

Now, the transformation has to happen somewhere. Nobody would want to consume their feed of horse pictures and right-wing AI-generated propaganda through the `sqlite3` CLI. Well. Okay, an extremely narrow niche of perverts, probably, but let's ignore them for the sake of this conversation. Some part of the pipeline needs to handle post privacy, user blocking, and such, so that you can't see stuff you shouldn't. Some part of the pipeline needs to assemble the raw text data with profile pictures and hyperlinks. Layout, colors, links to the settings that Meta will repeatedly change behind your back to its own benefit. The beans must be cooked before you can eat them.

So why does this happen on Meta's servers? Because that's good for Meta, first and foremost. And things that are good for Meta the Superorganism are, as a reasonably solid heuristic, bad for everyone else, and even most of the people working there. So let's bail. This party's loud and stupid. I wanna go somewhere quiet, where we can hear each other think. Somewhere we can talk about what the WWWeb could be, without the din of Corporate America writ international echoing between the walls of your skull.

What if... the transformation happened on your own computing device? The one you control, where the software is whatever you choose to run. What if the bytes flying over the Internetwork, Allmother of Networks, were a lot closer to the conversation between the webserver and the database?
# One Does Not Simply

You can't just take every way the internet currently works and just blindly forklift transformation to the local machine. There are implications. It's an entire different way of thinking, with different hazards. And the point is not to try to recreate the current world on a new foundation, anyways - what we have today was grown organically on top of a wrong set of assumptions and decisions, and is a natural extension of that wrongness, a vapor of capitalist opportunism deposited on a dirty substrate. I am going to ask you to think more in terms of _alternate history_ - to imagine the world as if we'd had 30 years to grow on top of tech that was harder to exploit and extract from.

To put my cards on the table, let's imagine this alternate history with the following assumptions.

1. Most websites serve static content. It might get updated, in some cases frequently, but when an HTTP request is fulfilled with something other than [`sendfile(2)`](https://www.man7.org/linux/man-pages/man2/sendfile.2.html) feeding a file straight from disk to socket, _that_ is the exception, and in some cases socially considered suspect.
2. Much of the data being sent is _structured_, and there are multiple coexisting standards that have their strengths and weaknesses, but all well-supported by clients. XML, CSV and JSON are presumed to be the holy trinity in that list of formats.
3. It is customary for HTTP responses from servers to contain a `Transformer: <url>` header, and a `Schema` header similar to (but distinct from) MIME.

It's this last one that will raise some eyebrows. Yes, a browser should competently display raw data, particularly for XML that conforms to a narrow and standardized subset of HTML[^3]. But raw data is not usually what the user wants to see, and so a web site can _suggest_ (very deliberate phrasing here!) a local application that will transform the data, and possibly fetch supplemental data from other URLs, as the preferred way of processing that data into a less raw, more palatable form for human consumption.

This isn't just a shift of how your browser downloads a multi-megabyte React application at a corporation's behest. A browser should never Just Do That. I'm talking about _plugins._ Plugins with limited scope, standards for how to interact with the browser, written in JavaScript. But installing that plugin (and then being able to use it for any page of the same schema standard(s)) is a _prompt_ that the user can choose to reject. There should be a sense of resistance to installing and running code from a vendor that you don't trust. Many browsers should ship with a set of default plugins for popular schemas, but you can install whichever one *you* want.

This means a website vendor can always serve you inert data, but running code is a privilege that is only granted in the positive presence of trust and good faith. It still allows for fun interactive demos teaching science on some university professor's website at the click of an "OK" button, but the friction of permission and the availability of alternatives are pointedly punishing for the web services that would most love to abuse their popularity. Getting big and/or abusive is painting a target on your back for adversarial interoperability.
# Playing it out

There are a lot of positive implications here. It doesn't kill e-commerce, for example - quite the opposite! Having a schema for online marketplace data means that _every vendor benefits from users having a trustworthy personally-chosen frontend across the entire internet of shopping._ This takes a Bowie knife to the guts of Amazon and its kind. You could spend a month on that little piece of the thought experiment alone - how a more distributed ratings system would work, how submitting your purchase information would be one of the few culturally legitimate uses for POST requests, it goes on for miles.

But let's talk personal data and what kind of internet happens when _owning and hosting your own data is typical._ That affects the way that residential internet grows out, and whether your modem might have a fat hard drive in it. The default experience is that when you want to contribute information to the internet, you host it and nudge other people to pull it via HTTP. In our current world, that sounds like a nightmare of asking everyone's grandmother to learn UNIX and nginx administration, but we're talking about an alternate history where _this_ is the structural flow that a full generation of nerds has sanded the sharp edges off of for the sake of adoption and accessibility.

Let's talk privacy. The only real privacy is the kind backed by encryption. So if you're Alice and you want to make a part of your hosted data that only Bob can see, you do some public key cryptography to it, and that gets reflected in URLs, so Bob is by convention pulling a Bob-specific URL that will have gibberish data to anybody who isn't Bob.

But now we're talking about public key infrastructure, so let's talk about identity and key exchange. Universal handles are a sketchy thing to achieve across the anarchic internet. Rather, nicknames are a _personal_ mapping between public-key-derived large ID numbers and short bits of text. They start from domain names and then extend as a series of handle hops, like `stacy@greg@example.com` - a navigation that you can slurp up and shorten in your own personal mapping. Much thinking has to be done here about key invalidation/migration[^4], but moderation is a corner of this model I've thought a bit more about.

This is essentially an invite model of the internet that roots from the members of your community who are Really Freakin' Nerdy but branches out into the non-technical folks who are Just Chillin'. And there are contexts, even in this alternative reality, where you need to worry about people who deserve to be exiled from your life/circle - particularly ones who evade bans and may have folks enabling them to do so. This is achievable with an ACL-ish model where both trust and distrust cascade recursively. If you trust `example.com` to verify identities, but not Greg, then you will see an internet that in some way excludes Stacy, but includes `beatrice@example.com`.

There are even implications for how you could have a better and more consensual/pull-oriented replacement for email. The fundamental sin of email, snail mail, and the phone system is that someone can contact you without your proactive permission, which is why each of these technologies has inevitably become a reviled and resented facet of the agony of modern public life. I don't publish my email on this website because I grew out of hating myself around my 30th birthday, and I ain't goin' back about it. A federated harassment service is still _all three words_ and the emphasis will always gravitate to the middle.

Now you see why trying to massage this blog post to a state of maturity in my head was making me insane, and why I've chosen the alt history framing so intentionally. It's just a choose-your-own-adventure branching path of thought-provoking rabbit holes and implications and it _just never ends_ and is inevitably 99% handwaving, because we do not live in a history where the near-entirety of technical society has spent multiple decades exploring every nook and cranny of the Web of Raw Data and Plugins model. It's _just fucking me._ And I've been at it in the background of my brain for less than like two months. It makes a girl feel like she inhaled the Time Vortex. I'm glad I gave up and wrote this despite it being so half-baked, because to do anything else would be like trying to cast an infinite generator function to a list, entirely inside my brain, and I think the effort would sprain something important in there.
# Doing something

I honestly think the best thing we can do is to start exploring this version of the web (which I'm not egotistical enough to attempt to name) in practice. These are ideas worth refining, but they can only be refined by confrontation with the real world. This is complicated, but not made impossible, by the fact that the non-consensual code execution web already exists, and has shaped the norms of the technical and non-technical slices of humanity alike, so we are unlearning and trying something new, decades late.

I don't think it's impossible, though. There are shades of this in the web we _do_ have, and ironically, it's the appification of consumer technology that carried a lot of the weight there. The APIs, the CDNs, the SPAs. We are living in the golden shower era of even the worst bastards of the tech oligarchy _voluntarily_ creating clean separations between structured input data and presentation software, which would otherwise demand adversarial interoperators to put a lot of perpetual effort into fragile paint-unmixing software[^5].

At some point, I'll probably figure out how to practice what I preach, and make this site a practical demo of deference to plugin-based presentation software. But in the meantime, I'm not... _not_ doing that? In a sense? You can `curl` any page of this site and get the Markdown source. I generate RSS of this blog. The spirit is there, and delivering the value of humility today, but the new and broader standards are yet to be forged. And probably one of the first things to figure out is how to deliver this site in a way that's compatible with both new and old, since that's a piece of this story that literally every implementer is going to care about as much as I do.

For a related and tangentially inspirational rant from somebody entirely else than me, I can recommend [this one](https://starbreaker.org/opinions/has-indieweb-become-irrelevant.html) as worth reading, which puts some emphasis in places I didn't (but generally agree about), for example, the worthlessness of making your site legible to both the VC-entangled platforms making the web worse, and to the free alternatives following too closely in their footsteps for lack of imagination. It will probably be funny to Matthew Cambion that what I'm proposing is in so many ways microformat-y, but for an entirely different and better answer to the question "legible to _whom_, motherfucker?"

See also the magnificent Robert Kingett on [the cognitive enclosure of the popular imagination by closed (and ultimately ephemeral) platforms](https://sightlessscribbles.com/posts/6552/).

[^1]: For the sake of this post, let's ignore that this is an abstraction over what must realistically be 4+ different database technologies and enough Kubernetes to orchestrate the funeral concerto of God.

[^2]: Perhaps in the same sense that the Brundlefly was once a soft-spoken physicist named Seth.

[^3]: I love RSS in a lot of ways and for a lot of reasons, but let's never recreate the RSS (or email) formatting crisis ever again. For the sake of storytelling, let's say that this went through the normal web standards committees like W3C when they were less influenced by moneyed and predatory interests. In a present-day implementation, I consider "who should own this standard" to be an open question, since the loose boundaries of "how much formatting without a transformer is _too_ much" are easy to get a lot of people to agree on at a vibes level, but the exact details need to be nailed down by _somebody._

[^4]: I am fully expecting this to be a hard problem that will bite the heck out of anyone who just does some naive fragile solution. "Much" is an understatement here.

[^5]: Which, some people are still doing, successfully, out of necessity! I watch YouTube via Grayjay, and sometimes download videos on my desktop via `youtube-dl`. Both of those projects are in an arms race with their shared toxic upstream, which really does not like when you take a pair of bolt cutters to the steel chain of surveillance capitalism and ad revenue they seek to suspend across the river between viewers and creators. So it can be done, given sufficient motivation and volunteers, it's just a lot of work.