Sustainable Software

About a week ago I had a nice long conversation with my brother about wine. This is something that happens a lot in my family: my brother is a wine rep, my uncle spent a while running a small wine importer, I've worked in wine production and sales, and the rest of my family really enjoys drinking wine even if they've kept it out of their professional lives. I am the annoying friend who likes to talk about and think about the wine we're drinking at dinner but I pale in comparison to most of my family.
My brother has worked in natural wine sales for a while, but recently started a new job at a wine importer whose focus is not just on natural wine, but on "sustainable" wine. The big distinction here is that, while natural wine focuses on small production and lack of chemical intervention, sustainable wine focuses on that and on ensuring that the wine is produced ethically in general: everyone involved in the production is paid fairly and the business has a sustainable model not focused on scaling up or being bought out by a larger provider. My brother is pretty excited about this fact and I'm happy for him: working to help sell wines that you can be wholeheartedly enthusiastic about selling makes the job pretty enjoyable.
Sustainability means a lot of different things to a lot of different people but I think this is a pretty good way to think about it. It's important to consider the environmental sustainability of a project, but that's not the only factor that matters: is this a sustainable way to live and produce for everyone involved in the process?
Since that conversation I've been reflecting a lot about how this way of approaching a business and a product appeals to me in my own field. No matter what angle you take on it, the contemporary software development ecosystem is unsustainable. Whether it's the emphasis on launching over maintaining in large companies, the incentive for small companies to scale or be acquired in order to meet unreasonable VC expectations, the "just one more new library bro" mess that frontend has become, or the million other things that make software as a practice and as a product such a frustrating mess, we're certainly not thinking sustainably.
I've historically been as guilty of this as any other developer. I've always tried to learn the hot new framework or find a way to shoehorn in the hot new tool instead of necessarily developing a deep understanding of something stable and established. Generally it's always seemed like the better career move. But working in a civil service environment has been a frankly refreshing shock to the system: focusing on boring technology instead of hot new tools and building solutions with an emphasis on backwards compatibility and not letting perfect become the enemy of good. This is still a relatively new way of thinking for me, and I'm sure my supervisor would gladly point out that I'm still prone to throwing in a new package or easy-seeming solution without necessarily thinking through the ramifications of adding complexity, but I am excited about thinking and working in a way that's focused on sustainability (and on applications that serve the public rather than shareholders).
There are broader movements towards what I'd consider sustainable software that I think are interesting: permacomputing, malleable computing, local-first computing, whatever the hell solarpunk is, and plenty more. All of these are valid approaches but I guess I'd like to see a more holistic approach. All of these seem to slice at one part of a broader problem, which is the deeply broken incentive structures at every stage of the software development process. Sustainable software needs to be a big tent: sustainability isn't just about the environmental impact but about making things that stay useful, about economic models built to last, about development practices that respect both devs and users, about solutions built for communities and not for a billion-plus users.
I think my ideal software product is something like the tech equivalent of a single-origin producer. Something built by a single dev or a small team that solves a specific problem and is genuinely useful, something not focused on growth but on paying the people who produce it a living wage. Something like Obsidian or (the sadly zombified) Pinboard. Something I can get utility out of for free or cheap, something I can buy a lifetime license for instead of a subscription for (or in the case of Obsidian, a "freemium" service that's reasonably priced and that I don't have to buy - I pay for Obsidian sync because I like the product and it makes my life easier but I could just as easily get the same functionality with a bit more setup). These are products that do what I want them to, have malleability and extensibility for power users, require no ecosystem lock-in and generally make me feel respected. I know pinboard is just one guy - I know less about Obsidian's business practices so I hope I don't find out they're paying pennies to their devs but certainly they seem to be a company focused on maintaining a core product and not on, like, throwing an AI assistant into the app I use to take notes.
I'm not ready to write a manifesto about what sustainable software is but I hope this is the beginnings of a sketch. I want to see a world with more single-origin software, more apps with a holistic approach to minimizing negative impact and maximizing the experience of both employees and users. If the continuing popularity of independent bookstores and the "shop local" movement are any indicator, I don't think this is an impossible goal, either. People want to buy good products and support good businesses. Maybe the way people think about technology isn't quite there yet, but I think we can get there. There are other ways to create and produce software in the world and as inevitable as FAANG dominance feels this techno-oligarchy is still in its teens. A better world, and better software, are possible.
Member discussion