I can't remember which song I stole first. It might've been "Kryptonite" by 3 Doors Down, it might've been "Superman" by Five for Fighting. I do remember where I was: in my buddy's basement, connected over Ethernet to his blazing fast ISDN connection.
We had discovered Napster, of course, and for the first time in our lives all music on the planet was at our fingertips. But the funny thing is that the first song I stole, whichever superhero-themed alt-rock gem it was, wasn't routed through the internet; it was transferred directly over the local network from my friend's computer to mine. He'd already obtained the track and kept it in his Napster shared folder. When I looked for the song on Napster, the best available "sharer" of that track was naturally the guy I was sharing a router with. The transfer from his computer to mine was blazing fast, and the whole process was much easier than networking a Mac and a PC in those days.
The transfer from his computer to mine was blazing fast
Fast forward 15 years, and I just heard about Elon Musk's plan to launch an insane fleet of 4,000 satellites to serve internet to the entire globe. And, because that didn't sound ambitious enough for Elon, he plans to eventually bridge the network all the way to Mars. "It will be important for Mars to have a global communications network as well," says Elon.
Of course, there's an obvious problem: latency. Right now, Mars is about 20 minutes away from Earth at light speed. That's 40 minutes round trip (most web traffic is a round trip of some sort, a request and a response). Elon Musk seems to know how we'll get the internet to Mars, but it's up to people who make the internet itself to determine how sucky the internet on Mars will be.
But my buddy and I already (illicitly) solved this in his basement 15 years ago! The easiest way to get data "from the internet" is to let someone nearby download it and get it from them, right?
Of course, latency isn't just a Mars problem. Earth's internet is chock-full of solutions to the speed limit of light. One common solution is a CDN (content delivery network), which attempts to respond to internet requests with the geographically closest node, rather than letting the request travel all the way to a single central server. CDNs cache certain parts of websites on behalf of the website owner, and that owner can update the cache through various methods to keep the contents fresh.
The easiest way to get data "from the internet" is to let someone nearby download it and get it from them, right?
Maybe CDNs will be all we need for Mars internet. Huge Mars-based datacenters, filled with up-to-date copies of the web. But are CDNs the best we can do? They're still centrally controlled, and typically only cover the most popular websites — the ones who can afford the extra cost. And MarsCDN will probably be extra pricey.
I know what you're thinking! Because it's what I was thinking! What if we made a peer-to-peer CDN, kind of like BitTorrent, but for caching parts of websites? Well, somebody already did. It was called PeerCDN. According to its founders, it didn't work very well. Yahoo bought PeerCDN in 2013, and promptly did nothing with it.
It turns out, CDNs are hard. Peer-to-peer CDNs are even harder. How do the peers find each other quickly? (Remember, in my Napster example I found my friend manually). How do you keep the cached content fresh? How do you make sure none of the peers corrupt the files they're sharing for nefarious purposes?
And, most worryingly for Mars, how can a CDN of any kind handle the kind of dynamically generated, constantly updated, instantly available "web apps" like Twitter, Facebook, Gmail, Google Docs, Trello, etc.? Parts of those sites can be cached at the edges of the network, but the dynamic backbone and mega-database has to be served (relatively) centrally.
"Legit" peer-to-peer does have some success stories, but they're mostly highly controlled environments or limited use cases. Spotify used behind-the-scenes peer-to-peer sharing of music until recently, which saved them bandwidth costs and improved performance for users — until Spotify had enough money to distribute music faster through traditional means. Big blobs of static files like video games and operating system distributions work great for peer-to-peer as well, but the tiny, ephemeral components of websites are much harder to handle.
So, is Mars internet doomed? And, more temporally relevant: is a more decentralized Earth internet just a pipe dream?
BitTorrent's Project Maelstrom browser
I don't really know. But my hunch is that we're just getting started. PeerCDN was a failed attempt at a great idea. The creator has moved on to more generalized peer-to-peer solutions for web browsers, like WebTorrent (a browser-based torrent client) and instant.io (peer-to-peer file transfers, based on WebTorrent). By extracting more ideas from BitTorrent (its security, fault tolerance, and speed) we might get a better, faster, distributed internet.
Or you could go all-in on BitTorrent right now. BitTorrent's Project Maelstrom browser is in beta (Windows only, so far). Instead of augmenting the regular internet, it adds a parallel internet composed of torrent files. And if you find the Bitcoin model more inspiring, there's this crazy project called MaidSafe that makes the distributed internet idea even weirder.
A future internet splintered into siloed, incompatible protocols might be a fate worse than 40 minute lag times, but I think most of these experiments can be pulled in as architecture for the "real" web.
Let's build an internet that's ready to go to Mars. And let's write more emotionally conflicted songs about Superman, okay?