Grant Forrest

Linh Le on Unsplash

Photo by Linh Le on Unsplash

Sustainable software should be simpler


Decentralization may be the latest cool idea, but lo-fi is centralized, after a fashion. While the local-first aspects work entirely offline, in order to leverage synchronization and realtime features, you need to go through a server. It’s not a new model. It’s not fancy peer-to-peer. Users don’t get ‘full control over your own data and where it goes,’ I guess. You’ve got one server to talk to (for now, at least), and you need permission to talk to it. In contrast to the hype around peer-to-peer in this space, this decision sometimes feels archaic, backward, even malicious.

What makes me most excited about lo-fi and the type of local-first design it embodies, though, is the prospect of delivering a good app for 0 cost, where only users who pay for sync features use any server resources. It’s specifically both halves of that equation.

As a solo dev it feels so much more comfortable to know that I can make revenue on 100% of the interactions which will cost me money. It may feel gauche to care so much about income, but that’s exactly how you determine what model is sustainable or not. And what I want, more than a lucrative and explosive startup success, is just to have a sustainable way to practice my craft.1

There’s a lot of discourse about what went wrong with the internet right now, but imo one big misstep was building huge, expensive products, running on paid servers, accessible for free. The economics of sustaining those things are far more complicated and risky.

Of course these companies become reliant on outside investment and so beholden to infinite growth cycles. Of course they sell anything they have that’s valuable from users, gradually eroding ethics as the bills come due. Of course the ads get more prevalent and invasive, etc.

Compare that with a bakery. Taking raw goods, introducing value through labor, putting a price on the output. Customer base can be estimated over time, bills are predictable, prices set accordingly. Cost of expansion can be weighed against projected revenue and labor. I’m not saying running a bakery is easy, but the model is more straightforward, which seems to lend better to healthier business: consumer satisfaction correlates to more revenue. Growth is optional and can be strategically planned (not existential). Buyer trust is high.

The only thing missing from that model is the potential for creating overnight billionaires and “unicorns.” And honestly, screw that. “What does it profit someone to gain the whole world, but lose their own soul?”

In retrospect it seems insane that so much of the industry is obsessed with scaling server-powered apps for massively growing userbases who only abstractly represent untapped revenue. So much effort to create a cost you then have to betray those users to pay. These days everyone has a little computer in their pocket that can run your app faster and better than a server a thousand miles away. For free. And web tools are definitely at a place that can mostly leverage this. Seriously, lo-fi isn’t even very well optimized, and it feels faster and better than most web apps I’ve used.

I’m not sure I’ll ever make enough profit to create these little sustainable apps full-time, but the cool thing is I can be sure that as I do grow one, it is paying for itself. Time cost is real, of course, but I can regulate that by growing more carefully, scoping smaller. The servers may be spotty for a weekend while I’m on vacation - but people can still use the app locally, and everything will sync up whenever they get a stable connection. If that sucks, they unsubscribe - and they can keep their data-on device and come back anytime.

To me this just all feels more comfy, more just, and most of all, simpler. And I will take simplicity over spectacle.

1 I know this is the genuine desire of a lot of decentralized / p2p advocates, and the explicit promise of many crypto-based platforms. I will be keeping an eye on them to see if anything truly user-friendly and sustainable emerges, but frankly, I haven’t seen much delivery yet amid the rampant user-hostile and downright criminal projects which seem to dominate.

My personal belief is that peer-to-peer design has obfuscated the core problems I’m outlining in this post behind a massive sea-change in implementation and constraints. That kind of system change requires re-defining the shape of the problem again before it can be solved in the new order; it doesn’t eliminate it. Since my time and resources are limited, I’ve explicitly chosen to focus my efforts on defining the problem in the domain I’m already familiar with, make progress there, and start working on the solution.

In other words, I don’t think it’s impossible that decentralized tools will end up solving these problems, too. But I don’t think their existence inherently gets us closer to solutions, and I don’t think the old system prohibits those solutions, either.

That’s enough for one footnote!