Brian's Blog Homepage
woman with hands clasped together like they are in prayer

There is a recurring pattern in open source communities, especially around mature ecosystems like Joomla, where enthusiasm for ideas is abundant but responsibility for delivering them is not. Users frequently arrive with confident feature requests that are framed as something everyone would benefit from, but with no intention of contributing to the work required to make them real.

These, often well-meaning, requests can often change the software into something harder to maintain, harder to use, and ultimately harder to sustain.

Open Source Is Not Amazon Prime

There is a particular type of Joomla user that appears with remarkable consistency. They arrive in issue trackers, forums, chat groups, and conference conversations armed with certainty and enthusiasm. They have an idea. Often several. Frequently presented as obvious improvements.

  • Joomla should do this.
  • An extension should support that.
  • This workflow is essential.
  • That feature is clearly needed.

And somewhere in the middle of the explanation comes the phrase that is supposed to settle everything:

"Everyone would benefit from this."

What follows is usually silence. No code. No testing. No documentation. No sponsorship. No bug fixes. No ongoing maintenance. Just the expectation that someone else will take the idea forward because it was framed as universally valuable.

It is consumer behaviour dressed up as community participation.

Open source is not Amazon Prime. There is no guaranteed delivery schedule, no hidden workforce waiting to implement requests, and no obligation on volunteers to turn every idea into reality simply because it was stated with confidence.

Good Ideas Are Cheap, Execution Is Not

Ideas are abundant in every open source project. In fact, they are one of the least scarce resources. What is scarce is time, focus, and the sustained effort required to build and maintain software over years, not weeks.

Every project has a graveyard of "great ideas" that were never implemented, not because they lacked merit, but because they lacked contributors willing to carry them through to completion and beyond.

What is often missed in feature discussions is that software is not just built once. It is maintained indefinitely. Every feature becomes part of a long-term commitment that includes testing, documentation, compatibility considerations, support questions, and future refactoring.

Every line of code becomes another line someone has to carry forever.

The people who understand this best are usually those doing the work: maintainers, reviewers, testers, and long-term contributors who have seen how quickly complexity accumulates when every "small idea" is accepted without restraint.

The Myth of "The Community Will Build It"

It is a common myth in open source that if an idea is good enough, "the community" will implement it.

But "the community" is not an abstract, infinite workforce. It is a small group of real people, most of whom are already stretched thin maintaining what already exists.

In practice, a handful of contributors do the majority of the work. A small number of maintainers review most changes. A limited group of volunteers carry institutional knowledge, support users, and keep projects alive through continuous effort.

When those people are overloaded with unfiltered feature demand, something eventually breaks. Not immediately, but gradually, through fatigue and fragmentation.

Burnout rarely arrives loudly. It accumulates quietly, often accelerated by an endless stream of well-meaning but unbalanced requests.

How Good Extensions Slowly Collapse

I have seen many excellent Joomla extensions decline not because of poor engineering, but because they tried too hard to satisfy everyone.

It usually begins innocently. A request arrives for a small addition. Then another. Then a slightly different workflow requirement. Then a niche integration. Each request, on its own, seems reasonable. Each one is justified as useful to "many users".

But over time, the accumulation becomes the problem.

Interfaces grow cluttered with options. Configuration screens become dense and unintuitive. Documentation expands into something closer to a reference manual than a guide. Development slows as every change risks breaking obscure edge cases introduced years earlier for a single use case.

Eventually the extension becomes difficult to understand, difficult to extend, and difficult to trust.

And the irony is that many of the features added to satisfy "everyone" are ultimately used by very few people beyond the original requestor and a small group of similar users.

The result is software that has expanded in scope but diminished in clarity.

The Tyranny of "Just Add an Option"

One of the most damaging phrases in software development is deceptively simple:

"Can’t you just add an option for it?"

This suggestion feels harmless. It appears to preserve flexibility. It seems like a compromise that benefits everyone.

In reality, it is often the beginning of uncontrolled complexity.

Every additional option increases cognitive load for users. It increases testing complexity for developers. It increases documentation requirements. It increases support burden. It increases the risk of unintended interactions with other features.

Individually, options are small. Collectively, they reshape the entire product.

Over time, the software stops feeling coherent. New users become overwhelmed. Existing users struggle to understand behaviour. Developers become hesitant to change anything at all.

This is how software slowly becomes fragile without ever "breaking" in a traditional sense.

Feature Requests Have a Permanent Cost

A critical misunderstanding in many feature discussions is that implementation cost ends when the feature is delivered. In reality, that is only the beginning of the cost.

Every feature introduces long-term maintenance obligations. It must be supported across future versions, tested against evolving dependencies, documented clearly, and kept compatible with changing environments.

It also becomes part of every future decision. Each new change must consider its impact on existing features, even obscure ones added years earlier for a single use case.

This is why experienced contributors become increasingly selective over time. Not because they are resistant to ideas, but because they understand the cumulative cost of accepting too many of them.

Good software is not defined only by what it includes. It is equally defined by what it deliberately chooses not to include.

How Good Extensions Destroy Themselves by Listening Too Much

There is a pattern I have seen repeatedly in extension development. A strong, elegant product begins to weaken not through neglect, but through over-accommodation.

Developers start with clear intent and a focused scope. The extension is understandable, maintainable, and coherent.

Then feedback begins to accumulate. Requests arrive from different users with different workflows, each convinced their requirement is broadly applicable.

One user needs a special edge case handled. Another wants compatibility with a niche integration. Another requests additional configuration options to fine-tune behaviour for their environment.

Individually, each request seems reasonable. Collectively, they pull the product in competing directions.

The extension slowly becomes a collection of exceptions rather than a unified system.

The interface grows more complex. The codebase becomes harder to reason about. New contributors find it difficult to understand where to begin. Support becomes more time-consuming. Development velocity decreases.

Eventually, the very people who benefited from the flexibility begin to complain that the product is now too complicated.

What was once elegant becomes burdensome, not because of poor intent, but because of unbounded accommodation.

Contribution Is More Than Demanding Features

A common defence to this critique is the idea that not everyone can contribute code, which is true. However, contribution in open source has never been limited to writing code.

Projects need testing, documentation, translations, support, design input, issue triage, community moderation, funding, and advocacy. There are many ways to participate meaningfully.

What matters is the difference between participation and extraction.

There is a meaningful difference between saying:

"This would help my workflow. Is there any way I can support making it happen?"

and saying:

"This is essential. It should be built."

One invites collaboration. The other assumes obligation.

Free Software Does Not Mean Unlimited Demand

There is a persistent misunderstanding that because software is free to use, it is therefore free to direct. That access somehow grants authority over what should be built next, or creates an obligation on others to implement personal preferences.

But free and open source software is not a contract for unlimited feature delivery. It is an invitation to participate.

Using Joomla, or any open source project, does not grant the right to demand features as if there is a paid support desk behind it. It does not convert volunteers into service staff. It does not turn personal preference into collective obligation.

The moment expectation replaces contribution, the balance shifts. What was a collaborative ecosystem becomes an extractive one.

There is a clear difference between asking, contributing, and demanding. Healthy projects rely on the first two. They struggle under the weight of the third.

Open source works because enough people choose to share their time voluntarily. When that choice is treated as obligation, the system begins to erode.

And when it erodes far enough, the outcome is predictable: contributors leave, progress slows, and the very people who were "just asking for features" are left wondering why nothing is being built anymore.

At that point, it was never a lack of ideas that was the problem. It was the assumption that ideas alone were enough.

J o o m l a !

Brian Teeman

Brian Teeman

Who is Brian?

As a co-founder of Joomla! and OpenSourceMatters Inc I've never been known to be lacking an opinion or being too afraid to express it.

Despite what some people might think I'm a shy and modest man who doesn't like to blow his own trumpet or boast about achievements.

Where is Brian?