Matt's Blog

Cheap software and the economics of local and open source

What do we do now that building and cloning software has become very cheap? My immediate thought is that things should move towards local first (and possibly open source) software. The economics are changing by removing code as a primary moat, so how we sell software needs a rethink.

Local first software offers a bunch of benefits to both users and developers, so it's more than just economic reasons that we should be interested in it. On the user side of things, the obvious ones are ownership, security, and privacy. As a developer, you get to enjoy the benefits of lower complexity - when developing web software you tend to need to keep multiple layers of a system in your head at one time. Local software tends to be more flat.

Who pays for complexity?

The most notable downstream effect of complexity is the pricing of software, evident in the amount of subscriptions we pay these days. I believe that web software is sufficiently complex in a way that necessitates larger teams working on it. Combine that with the ongoing costs of running and monitoring servers and a subscription is a natural result.

On top of that, you have to consider the prevalence of AWS as a choice of vendor for the vast majority of businesses and the inertia of subscriptions simply existing. We live in a world where people complain about subscriptions but as of now are still generally accepting of paying them.

All that is to say that costs are pretty much maximised at every stage. Made worse by ZIRP letting companies maintain large teams and expensive infrastructure, which isn't meshing well with AI.

The benefits of local first

If we just take a look at some reasons why we might want local software to exist or be more prevalent:

  1. Increasing the performance ceiling for the software we run has a positive outcome for the work that we do with it. It stands to reason that if you are able to do your work through faster workflows or with less friction due to faster interfaces, the resulting work will likely tend towards a higher quality.
  2. The longevity aspect: in my opinion, if you have paid for something, then you deserve to keep it. What you do with the software you've bought and how long you keep it is your own business. Relying on a vendor to stay in business to keep your work afloat feels like an unnecessary risk.
  3. We don't have to look very far these days to see a large number of security breaches. In the case of local software, we're in control of our own data and it potentially never has to even leave your machine. Now this isn't to say that that's categorically safer but it does shift the accountability, including keeping software up to date. This is basically a UX problem that has, for example, been largely solved by browsers: you don't often notice them updating.
  4. Features that are primarily associated with the web, like collaborative work in Google Docs, are still achievable through technical means. For example, with the use of CRDTs. That is, we don't necessarily have to compromise on functionality either.

Moats

There has been a lot of focus on decompilation recently with people decompiling games and replicating them or porting them to different platforms. If we just ignore the legal implications for a moment, it's worth saying that this issue doesn't go away if you only target a web platform. Cloning the behaviour you see at face value (at least) is still trivial. So having a hosted service doesn't help by default.

There is inherent risk in open sourcing software even in a low secrecy environment. You may have proprietary systems or algorithms that are a competitive edge. If so, then these are a candidate for putting behind a separate service (a case where you may trade being open-source for not being local-first). That is, it's worth creating the service if this competitive edge is not easily replicable (e.g. something like DxO's "AI subject detection" functionality, which is hard to recreate due to the creation and distribution of training data).

I think value shifts here towards social mechanisms like trust and relationships. It seems likely that creating a personal story around your product and team definitely has more weight than it may have done in the past. If you can show your users that you're good people then - for what I would like to think is a decent chunk of people - that would be a selling point. There are certainly people who won't give a damn about who's selling them software - it may be worth looking back in time to when high streets had actual shops. What's the thing that brings customers to a local coffee shop rather than a Starbucks?

There may be people who say that there's a moral implication to teams selling themselves as "good force for the world" people who also use LLMs to create software. I personally don't think these are mutually exclusive but we ought to work towards the value of our creation outweighing the cost of negative externalities (again, we might look to local communities here, if possible).

Revenue models

So how do we sustain the creation and maintenance of software in this world we're entering? What is the customer paying for if not for the code? One case is goodwill and fairness. We can see this in previous examples such as Sublime Text or WinRAR. Note how these are both closed source and so these approaches don't mandate open source software. In these cases, the vendor is known to be a small team or an individual, and paying them feels like there is a tangible positive impact in the act of paying. Helping to pay for the maintenance of software that is a positive force in your life is obviously a good thing. In these cases, I definitely feel that small accessible teams are more appealing than large faceless organisations. (Side note but corporations marketing themselves as communities always gave me the ick.)

Another is responsibility and accountability. This is generally done through selling support, which is most common for business-to-business cases. I wouldn't say that anything in the systems inherently enforces hosted services. When you're doing local or on-prem software for a large business, it can be more complex due to centralised management. If you're selling to customers or shipping open source software, they are on the hook for their own management.

Finally, you pay for ongoing operations, e.g. Obsidian offers a paid sync service. This is the freemium or open core model where the software itself is free - potentially open source - but the customer pays for outsourcing some feature that is symbiotic to the application itself. What you are relying on here is both trust, that is, "Do I trust the service with my data?" and friction, that is, "How easy is it to spin up an alternative hosted service?". I do think the friction becomes less prominent as cloning services and deploying them (e.g. "Claude DevOps") becomes easier with the help of LLMs.

It's noteworthy that these only really work for either niche, engaged audiences or professional audiences like B2B. I think that generally, these are the only people that are paying for software anyway. Broader consumption of software is mostly paid for by ads. So we're really not losing an audience who would have paid previously.

Costs now

So upfront building is significantly cheaper. Maintenance is also cheaper as the update cadence increases (because LLMs do the heavy lifting). AI companies are pushing the boundaries of the update cadence with their harnesses, though it's worth noting that this is primarily targeted towards a more technical audience. What I really mean here is that it's become more risky than ever to have a slow release cadence where investment is front-loaded and features are developed over an extended period of time. The risk of losing your edge has never been higher.

Smaller and more reactive teams certainly feel powerful here, especially when backed by LLM based productivity. The complexity of web-based software may remain a barrier, though it's certainly more tackleable now. I do think local first still keeps its edge through the lack of needing to run and monitor and pay for servers (at least, so extensively): operational costs are lower.

What does it all mean?

In essence, things have definitely changed and are still changing: code and proprietary logic aren't moats any more. I don't think we've really discovered any new business models that have become more viable yet. But it is clear to me that existing ones only really survive if they sell something other than code or secrecy (I suppose that's blindingly obvious really).

Relying on social mechanisms like building community and trust seems like it might become more necessary. I think for that, having a small team where users can put a face to a name for anyone on the team might work as a selling point. I also think that the stocks of open source software specifically have gone up, since the potential costs or downsides of embracing open source diminish through the ability to clone or decompile software.

#software