







It's hard to find an aspect of modern life that is not influenced in some way by software. Some of it is very visible, for example the Web browser I start on my computer. Other software is completely invisible, such as the software controlling my car's diesel engine. Some software is safety critical, for example flight control software in airplanes. Other software is used in a much more futile way, such as playing games. I could go on listing characteristics in which different software packages differ, but I will leave it at that - I don't really expect anyone to disagree about the ubiquity and diversity of software in our increasingly digital world.
Science is open software
TL;DR I claim that modern science is synonymous with open source software. This post explains why, why it matters, and what you can (and should) do next. Why do you care about (open source) software? - Everyone I spend a lot of my time working on software. I have been asked why software matters more times than I can remember. Software is, people say, not science. It’s a time sink, something to rush past in the pursuit of what really matters: results (and papers if you’re in academia).
The Evolutionary Ecology of Software: Constraints, Innovation, and the AI Disruption
This chapter investigates the evolutionary ecology of software, focusing on the symbiotic relationship between software and innovation. An interplay between constraints, tinkering, and frequency-dependent selection drives the complex evolutionary trajectories of these socio-technological systems. Our approach integrates agent-based modeling and case studies, drawing on complex network analysis and evolutionary theory to explore how software evolves under the competing forces of novelty generation and imitation. By examining the evolution of programming languages and their impact on developer practices, we illustrate how technological artifacts co-evolve with and shape societal norms, cultural dynamics, and human interactions. This ecological perspective also informs our analysis of the emerging role of AI-driven development tools in software evolution. While large language models (LLMs) provide unprecedented access to information, their widespread adoption introduces new evolutionary pressures that may contribute to cultural stagnation, much like the decline of diversity in past software ecosystems. Understanding the evolutionary pressures introduced by AI-mediated software production is critical for anticipating broader patterns of cultural change, technological adaptation, and the future of software innovation.


Tending Your Software Garden
Software: do you write it like a book, grow it like a plant, accrete it like a pearl, or construct it like a building? As Steve McConnell notes in Code Complete 2, there’s no shortage of software development metaphors: A confusing abundance of metaphors has grown up around software

The $70B Open Source Software Paradox
It’s no news that over the last 10-15 years, particularly noticeable in the last 5 years, the enterprise software industry has gradually transformed from complex, expensive, closed-source (proprietary) software stacks to extensible/configurable,...

The Software Revolution
In human history, there have been three great technological revolutions and many smaller ones. The three great ones are the agricultural revolution, the industrial revolution, and the one we are...
The Next Two Years of Software Engineering
Exploring five critical questions shaping software engineering through 2026, with contrasting scenarios for each. These lenses help prepare for the evolving ...

How open-source software took over the world | TechCrunch
It was just five years ago that there was an ample dose of skepticism from investors about the viability of open source as a business model. Fast-forward to today and we’ve witnessed the growing excitement in the space.

Where Did Software Go Wrong? | Jesse Li
Software is broken, but it's not because of NPM, startups, AI, or venture capitalists. A deep dive into how we think about and produce code, and how our software systems reflect the manic state of the modern world.

Designing and Programming Malleable Software
User needs for software features and interfaces are diverse and changing, motivating the goal of making it as easy as possible for users themselves to change software, or to have it changed on their behalf in response to their developing needs. However, in my opinion, current approaches do not address this issue adequately: software engineering promotes flexible code, but in practice this does not help end-users effect change in their software. End-user and live programming systems help users customize their interfaces by accessing and modifying the underlying source code. I take a different approach, seeking to maximize the kinds of modifications that can take place through regular interactions, e.g. direct manipulation of interface elements. I call this approach malleable software. To understand contemporary needs for and barriers to modifying software, I study how it is produced, maintained, adopted, and appropriated in a network of communities working with biodiversity data. I find that the mode of software production, i.e. the technologies and economic relations that produce software, is biased towards centralized, one-size-fits-all systems. This leads me to propose a long-term, interdisciplinary research program in reforming the tools of software development to create infrastructures for plurality. These tools should help multiple communities collaborate without forcing them to consolidate around identical interfaces or data representations. Malleable software is one such infrastructure, in which interactive systems are dynamic constellations of interfaces, devices, and programs assembled at the site of use. My technological contribution is a reconstruction of the programming mechanisms used to create interactive behavior. I generalize existing control structures for interaction as entanglements, and develop a higher-order control structure, entanglers, which produces entanglements when particular pre-conditions, called co-occurrences, are met. Entanglers cause interactions to be assembled dynamically as system components come and go. I develop these mechanisms in Tangler, a prototype environment for building malleable interactive software. I demonstrate how Tangler supports malleability through a set of benchmark cases illustrating how users can modify systems by themselves or with programmer assistance. This thesis is an early step towards a paradigm for programming and designing malleable software that can keep up with human diversity.
History of free and open-source software
The history of free and open-source software begins at the advent of computer software in the early half of the 20th century. In the 1950s and 1960s, computer operating software and compilers were delivered as a part of hardware purchases without separate fees. At the time, source code—the human-readable form of software—was generally distributed with the software, providing the ability to fix bugs or add new functions. Universities were early adopters of computing technology. Many of the modifications developed by universities were openly shared, in keeping with the academic principles of sharing knowledge, and organizations sprung up to facilitate sharing.
Software Bonkers
I’m software bonkers: I can’t stop thinking about software. And I can’t stop building software.
Why We Can't Have Nice Software - Andrew Kelley
The problem with software is that it's too powerful. It creates so much wealth so fast that it's virtually impossible to not distribute it.
X : What are you interested in? Me : Wow, that varies constantly. Right now? There are a number of topics that I'm actively pursuing … a) When we talk about software engineering we typically think… | Simon Wardley
X : What are you interested in? Me : Wow, that varies constantly. Right now? There are a number of topics that I'm actively pursuing … a) When we talk about software engineering we typically think about the active part of creating code but software development is currently practised as a craft not an engineering discipline. The only engineering discipline in software engineering is testing. This creates a flaw in the comparison with using AI to code because development itself has never been optimised. If all we have to do is write code and we can automate that part then we can just replace those expensive typists with LLMs but development should be, and has the capability to become an engineering discipline. It's just not that for now. https://lnkd.in/eSRprhbf b) Most people talking digital sovereignty are doing so with good intentions but they literally have no idea what they are talking about. This is not because they are daft or foolish but because they cannot see the environment they are talking about. They are like generals talking about territorial sovereignty with no idea of what territory is or how you represent it. https://lnkd.in/eku2X_Ea c) Architectural decisions are made in code and not in the diagrams we create. Those architectural diagrams are more like prompts, wishes and beliefs of what a system should be but rarely reflect the actual system. This creates additional problems when the real architectural decisions are made by coders but coding itself is a craft not an engineering discipline. d) The current crop of LLMs / LMMs are driving us towards a new theocracy. We can counter this through diversity, critical thinking and open approaches but that does mean we have to get to the point of all symbolic instructions being open. That includes the training data. Copyright is a distraction from the real issue that we don't know what the systems are being trained on. Guardrails are a post event kludge. https://lnkd.in/exJVmNvD e) The medium we use in conversational programming environments such as cursor and lovable (or what we call vibe coding when not looking at the code or Software Engineering + AI when looking at the code) appear to be flawed. We are focused on text not images. The change of medium changes the conversation, the corollary is the conversation we have around the screen and the one we have around the whiteboard. Same problem, different medium, different discussion. https://lnkd.in/e_W6b6z3 f) "Value" in consulting land is mostly theatre rather than something meaningful. There are many forms of value but often we fail to identify this, quantify it or even measure it. https://lnkd.in/eeNbR_VY g) Rewilding Software Engineering. To change software development into an engineering practice, we need to introduce two wolves - one that software engineering is a decision making process and secondly that we need to build tools for problems we are facing - https://lnkd.in/epyUnqgh
Sustainable software manifesto
The systems we build are never neutral. They can magnify harm or support a just and sustainable society. How we build today shapes tomorrow’s possibilities.

Software Design is Knowledge Building
The product of software development is not code but a mental model, a theory: a specific way of explaining the world.
