Why use open source at all with AI?
I’ve been anxiously asking myself a question lately. Why use open source at all with AI? You can generate your own “good enough” solutions pretty quickly.
I think the answer depends on what you’re building: a tool for yourself or software you intend to ship and maintain.
To see why, I want to start with what our goal is as software engineers. In my opinion, it’s to deliver value efficiently and reliably over a long period of time.
Building prototypes and proofs of concepts are part of software engineering, but they are not software engineering by themselves.
Recently, I needed to rehearse a script for a video I was creating. At one point, I entertained using a teleprompter, and I used AI to discover various options. I installed one of the products, and it was outstanding. However, it only allowed me to use about 10 minutes of recording time a month. I wasn’t sure if I’d use it enough to justify the annual subscription of $100, so I had a clanker implement a local solution.
With a single prompt and about five follow-up prompts, I had a working tool. Yes, it was significantly clunky, but it worked well enough. And because it’s free, it’s likely to become a regular part of my workflow.
That ability to generate tools incredibly easily is a wild concept.
While my prompts may have been better directed because of my experience as a developer, it certainly felt like my prompts were basic nudges to reimplement this product I used once before. If that’s true, I’m not sure that I’ve fully grasped how much will change in the future by making app development this accessible.
What’s interesting is that I have no interest in selling this tool or sharing the code with others. I’ve met my immediate need, and that’s good enough.
If I did, the scope of concerns would grow significantly. I’d have to consider what user flows would be needed, what scenarios I’m not solving, and what are the technical boundaries of the solution?
A clanker can provide an answer to all of these, but it may not be the right answer. And in most cases, only you can define what right is. There are inherent risks and tradeoffs in each of these decisions.
And that’s where we cross into the realm of software engineering. People weighing the tradeoffs and making decisions. The more thought that goes into those decisions, the higher the quality of the application1.
What’s challenging is that there are a LOT of decisions to be made about building an application. If you put the same effort into every decision, you’re going to burn out and never ship the tool. On the other end of the spectrum, you’ll end up with a ball of mud codebase, a confusing user experience, and an app that may or may not work.
So we as software engineers must fall somewhere between those two extremes. We want to make enough decisions to reach acceptable quality but not get bogged down in making so many decisions that we never ship.
If you’re in the business of making money, the fixed axis will be time. At some point, regardless of quality, you’re going to need to ship. So the question is, how can you maximize the quality of your application within that time frame? And by quality, I mean how well it holds up over the long haul.
Or put it another way, how do you get more deliberation than your time allows? You buy it.
When you buy software, you’re buying the decisions the previous developers made. Yes, some of those decisions will be irrelevant to us, but most won’t be. If quality comes from time spent deliberating on decisions, then you’re buying that deliberation, and with it, higher quality.
Which brings us back to AI. The clanker built my teleprompter quickly, but only for my one specific use case. If I wanted to solve other people’s problems, I’d have to decide what the edge cases are, what the tool should solve, and what it shouldn’t. Releasing it to the world also means taking ownership of its future and its faults. All of that takes thoughtful deliberation. AI can write the code, but it can’t actually perform the deliberation of ownership. Either I need to do that, or I need to buy it.
And you can likely guess what’s better than buying software: buying free2 software. This is why open source is fantastic for your organization today, even in the age of AI. Open-source software is free to build upon, carries the quality from years of deliberation, and allows you to ship faster.
-
Not all deliberation is equal, but if you’re spending time critically thinking about a problem, more often than not, you’re going to make a decision that results in higher quality. ↩
-
Open-source software isn’t free, and yes, you should donate your money or time to support it, but it’s punchier to say it’s free. ↩
Written by Tim Schilling
Django 6.x Steering Council member, maintainer of django-debug-toolbar and django-simple-history, and a professional software engineer since 2009. These days, I mentor developers one-on-one.