Unpacking Moxie's "People don’t want to run their own servers, and never will"
Moxie Marlinspike’s article on web3 has resulted in huge amounts of conversation online about various aspects of the web and decentralization. One aspect that got a lot of attention, and one that I paid particular attention to given my current project is this statement:
“People don’t want to run their own servers, and never will.”
I want to unpack why I think it’s very challenging to get non-technical end-users to run a home server of some sort, yet it’s not something I’d qualify as “will never happen” either. Apart from the obvious folly of declaring that some tech thing will “never happen”, it already is happening in some ways, and we can learn a lot from that.
Anecdote: during the recent holiday gathering one family member treated us to festive music by streaming it from their NAS back at home in an other State. This clearly counts as hosting from home, yet our DJ was not a hobbyist sysadmin by any means.
So how does this happen? People can and will run a server at home, it’s just a matter of getting the package right and creating a product that is compelling, responds to a need, and lets them get on with their lives.
Let’s go over a few aspects of what can make home serving widely successful or not.
What are we serving?
First up, what is this server for? A “server” is a generic term that could imply a myriad services and many more protocols. All these are not created equal. If you create an offering that lets people serve from home, what you choose to serve will have a big impact on how successful your users are. Here’s an incomplete list of things you might want to serve:
- files
- eth
- HTTP
- chat
- tor
- ipfs
- etc…
Given the comments I’m seeing it seems some people assume that just because you mention a server, that must mean a generic machine on which any of these protocols can potentially be served. This is one way to view things, but I think it’s more useful to realize some services and protocols lend themselves better to home serving than others, and winning this battle means picking the path of least resistance instead of fighting along all paths at once.
Consider email for example. There are software packages that include everything you need to host your own email server at home. However a common complaint is that emails sent from such a home server have a hard time landing in Gmail’s inbox. This is due to the overwhelming amount of email spam and email providers take any opportunity to label your email spam unless they can be sure it’s not. The burden of proof is on you, the sender, and its a big burden.
Compare that with HTTP: it’s much easier to successfully serve a web page. Sure, it’s possible to trigger various browser’s safe browsing filters, but if you manage to avoid serving anything nefarious there is no reason for a browser to block you. All you need is an IP, a domain name, and a TLS certificate (free from Letsencrypt) and all your friends can visit your site on any browser. Unlike email the burden of proof that allows your server to participate in the larger network is low.
Other protocols and services may be just as easy and possibly even easier than HTTP, but others may just lead to disappointment.
HX — “Hosting Experience”
I’d agree with Moxie if he’d written “Nobody wants to run Apache, or anything that requires hand-editing a config file.” A server intended for end-users needs to completely rethink what “running a server” means, and reconsider the relationship between the user and the software, which is entirely different than for something managed by a sysadmin.
“The server needs its iPhone moment”
Going further, such an end-user system would need to have all the characteristics of a modern wide-release computer product:
- Good defaults and secure by default.
- Foot-guns removed, or buried deep enough that most users will never get to them.
- Assume bad intentions: users can’t know if an app is safe or not, so like a smartphone, limit what apps can do using permissions or capabilities and sandboxing.
- Easy to set up: plug in power, plug in ethernet, visit some local web page and click through the setup wizard. 10 minutes tops.
- Apps are installed with one click from an app catalog (or several, this doesn’t have to become a walled garden), and just work. They can auto-update too of course.
Good IOT hardware (yes I know there are a lot of bad ones), NAS and good home routers provide this experience already (to some degree at least) so it’s entirely within the realm of the possible, it just needs to be invented and executed well.
Why are we serving?
The reason a NAS can be bought at any store that sells computer electronics is not because they embody the freedom to run your own services from your home, but because they respond to a need. People buy these things because people have a lot of files, some quite large, and they need to put them somewhere. Sure they could use Dropbox but that’s slow for large videos and it limits the number of connected devices. All cloud services cap or start charging after a certain amount of data is stored, and a local NAS with a decently sized disk will store far more than that and at far greater speeds when you’re at home.
Buying another electronic box and taking the time to set it up is a high bar, so the value must be there. Sadly I have no clear answer on what services could run better from home than hosted by a 3rd party. But here are some general lines of thought:
- Cloud-based services can get expensive. They are usually paid for monthly or yearly, so they are a constant drain on the user’s wallet. A one-time purchase of hardware can be attractive in such a case. The problem is consumers do not pay for online services that can be replicated in a home server (think Netflix, Spotify) so apart from file storage there are few options here.
- On the flip side free services tend to have little respect for the user’s privacy. People are uncomfortable with what big tech companies do with their data, but they aren’t doing much about it. That could shift one day, particularly if equally convenient solutions are available.
- Are services ruined by the constant search for growth? Most online services are VC-backed and are expected to show skyrocketing growth. This is often achieved in manipulative ways and is fatiguing to users. Again, it’s not enough to cause many to jump ship, but it’s another “con” to leverage against 3rd party services.
- Does the service work reliably? It’s tough providing a service for millions, especially if it’s free. Trying to max out machine use, sometimes performance suffers. I just tried sending a tab to my laptop using the Firefox send-tab service, and the tab arrived minutes after I needed it. A little personal service on a home server, which would almost certainly be under-utilized, might have forwarded the tab in the blink of an eye.
As you can see I offer no slam-dunks, just vague possibilities.
How to Get People to Self-Host At Home
- Find a real need. There has to be something that pulls in the potential self-hoster and makes them say “Yes, this is the better way to go for me”.
- Serve something that can actually work given current realities. If their friends aren’t going to receive their emails, what’s the point?
- Make it incredibly easy and safe. The iPhone of servers.
Each of these is hard on its own, yet you have to nail all three. Good luck!
This is the reason I expect most Dropserver users to rely on a cloud service to run Dropserver Apps. Later on, if it’s realistic, there could be a DS appliance, similar to what Home Assistant is doing. But that’s a long ways off.