What if users brought the infrastructure?

James Salter

Maintaining a free cloud app is an unsustainable hassle.

Pre-cloud, you could write a piece of software, compile it once for all the systems you wanted to distribute it for, upload the binary somewhere (or send hard copies to people), then go to the beach.

No cloud servers, no hosting bill, no scaling, no keeping the servers alive.

Most of the APIs you'd use were part of the OS and changed very rarely, so your app could last for decades with very little maintenance, maybe with none at all.

There's a lot to like about this model of development. Users could rely on the software to continue to work as long as they had a system that can run the software, even if the developer who wrote it stops maintaining it. Developers were not on the hook to maintain production systems or go on-call for their app.

Back in the cloud era, however, If your app is used by your users to generate data they care about, they will probably expect the data to be written to a persistent cloud store, and to be able to load and edit it on different platforms and devices.

This necessitates running infrastructure which costs money and needs to be kept alive.

Users also implicitly expect the data to stick around for years or maybe decades, which implies you need to attach some sort of business to your app and then run it for a while.

That doesn't sound very fun, and it's a deal-breaker for most hobby projects.

Some people persist out of love. For example, free spaced repetition app Anki has a cloud service for synchronising your decks and progress. The Anki author, Damien Elmes, runs this service, is on call for it, pays for it, etc. Without this service, Anki would be more inconvient - backups would suddenly be a lot more important, and it wouldn't be possible to merge progress on multiple devices.

If Damien decides one day he doesn't want to do this anymore, he can't afford to do it, or something bad happens to him, the app will be crippled. This doesn't seem sustainable.

Anki is niche, but the same problem discourages free alternatives in many categories: office suites, note taking apps, photo galleries, where persistance of data and cloud sync is critical.

What if?

To use most software, users need to bring a device and an internet connection.

What if as well as those things, they brought the cloud infrastructure? What if each user had their own managed private cloud and there was a frictionless way to install your app to it?

There's some precedent for this. In the 90s it was common for ISPs to provide a small amount of storage (1-5MB) and access to a server to run your own CGI scripts. If you were lucky, they might even run cron jobs for you. You could run your own scripts, but people also ran other people's software, like guestbooks and IRC bouncers.

What's would a modern version look like?

  • ISPs could provide hosting of cloud functions, scheduled tasks, storage, and databases for each customer as part of their account offering.
  • There could be a standard way to package the code and database details, and a convenient way to install such packages for the user during app installation.

As an example, this would allow me to run Anki's synchronisation service in my private cloud as long as I continue to pay my ISP bill. I wouldn't have to worry about the maintainer's health. Or, I could run a photo storage service on it, and worry slightly less about the implications of losing access to my Google account.

Obviously, third party hosts could provide this service, not ISPS - there's just something I like about the coupling that frames it as a fundamental thing users should bring with them to use the internet.

Projects that are kind of like this

This almost certainly won't take off in the manner I've described.

But there's some similar things going on out there that give some hope:

  • sandstorm.io provides a packaging format and a container for running other people's services on your own hardware, with a marketplace. This could be really exciting, but it has not taken off - running something on your own hardware isn't mainstream or reliable and so the audience will always be quite limited.
  • Solid is a privacy-focused standardised way for users to host their data. There's providers hosting Solid pods, which is kind of exciting, but it doesn't seem to be taking off at all. It doesn't cover users running code, just storage.
  • If Google started giving away Firebase private clouds to GSuite users, you'd get a similar result, albeit at the mercy of Google
  • IPFS / Filecoin / Dapps may eventually provide this type of capability using the Dweb, but most of the focus in this space seems to be on applications where developers continue to pay for the infrastructure (in the form of IPFS pinning or Filecoin). Not sure if many people are considering models where the users are bringing Filecoin / IPFS storage themselves.