The Future of Self-Evolving Software

· ateliti99 ·

5 min read Original article ↗

Software is evolving. You can feel it, and it will keep evolving. The main reason, of course, is AI. You're probably thinking, "oh no, another LLM blog post," and to be honest, yes, this is partly a post about LLMs. But it's also a post about how I imagine the future of software, and how software will interact with people.

First, a quick review of how the world experienced software before LLMs. Let's set that date to just before the launch of GPT-3.5, the first mainstream model. Even today, many people confuse "LLM" with "ChatGPT", like people who think gaming and PlayStation are the same thing.

Software was divided into two rigid layers: the people who use it, and the people who build it.

The first layer could only *use* the software. At most, they could leave a review about what they would change, but they couldn't modify anything themselves, at least not in the mainstream idea of what an application is. Open source software is a partial exception, and I will come back to it at the end of this post.

The second layer was the builders, meaning the engineers and designers who deliver the application and make it available to users. And there was one strict rule: users cannot modify it in any way.

Why did builders decide not to let anyone modify their applications? Simple: most people don't know how to. The only signals users can generate to steer an application's next update are reviews and feedback. And if those signals never reach the builders, there isn't much you can do: you take what's available.

This was the story until the rise of LLMs. The introduction of this new middleman capable of agency is changing everything, and it will keep changing everything. Here is the future I imagine.

First: the two layers no longer make sense. There is no reason to keep a strict division between the developers and the people who use the application.

Instead, applications will be steered by their users. The feedback people share will shape the prompts that tell the LLM how to proceed with development, with an (optional) human in the loop to ensure quality.

This is the simplest way to imagine the future for big applications: the ones that ship not just an app but an entire infrastructure, something a single person could never manage without other middlemen running it. I call this design **confined self-evolving applications**: the application evolves on its own, but its evolution is confined, and it is not free to grow in every direction. And of course, not all directions are equal in quality!

The main task of these applications will be to convince as many people as possible to share what they think. That feedback is the information you want to maximize against your competitors: if you can extract more of it than they do, you will grow faster, in the directions your users are most engaged with.

But there is another layer that will explode in the future: **pure self-evolving applications**, generated by you. And by "you" I mean basically everyone, even your grandparents.

I think the App Store was one of Apple's best ideas. Simple, no? Let some people build the applications that other people need. But you know what? Maybe I need an application that only *I* need. Maybe I'm the only person in the entire world who needs it. Or maybe I'll find something close in the App Store, but it's laggy, it crashes, it hasn't been updated in two years, and it's full of ads.

So what can we do in a world of LLMs? We already see people building entire software stacks from a handful of prompts, so why not bring that to smartphones? This is the future I see for mobile: phones where you can build applications with a simple prompt, directly in the OS. Applications you actually need. Of course, you can't build everything, since some things require external infrastructure. But if I need an app that counts how many bananas appear in a text I've copied and pasted, I should be able to have it!

The biggest challenge in these scenarios will be steering design quality. If you're Apple, for example, you want this whole universe of user-generated applications to follow your Liquid Glass theme and to match your human-checked apps in terms of quality and security.

There is one more idea I want to leave you with. Even within the rigid two-layer architecture of the past, we got some amazing open source projects: people from the programmer layer decided to work together to deliver free software for everyone. In the near future, I believe we will see the next step, which I call **open community software**: software built by a community, and not only by programmers.

These applications will be steered by the community, with agents working in the background in place of the engineering layer. Development will proceed purely based on the needs of the users, within a democratic system that gives everyone a voice. This will probably help remove the shareholder steering that we see in so many applications today.

The challenge here will be building the infrastructure that lets people take part in this process. I want to call it **democratic steering**: the process in which many people steer the actions of a model, as opposed to classic steering, where a single person decides the actions of an agent.

That's my vision of the future of application design and integration. I hope I've sparked some ideas, and I'd love to hear what you think.

Discussion about this post

Ready for more?