I've grown up in open source, I learned how to code in open source and my thinking about software was founded on the principles of open source. Needless to say as things went along I realized there were some interesting and unique problems associated with open source software. But before we dig in there's a couple of things we need to address.
First, I love open source. If you can't tell or don't know I have dedicated my time and my talents to promoting and furthering open source. And anything I share below is not because I don't believe in open source or the way the software can change the world.
Second, my background is a mix of math, science and art. To quote a well-known and massively overused line..."I have a unique set of skills." 😂 I joke, of course, but the truth is there are times when my design-sense takes over. And as I see open source software and the way the code is created I can't help but realize there's a problem that exists in many of these projects. There's an element that gets overlooked and completely ignored far too often in open source projects. So here's a problem I've seen and a few of the determinant factors.
Problem: Open source projects tend to gravitate towards feature bloat and disregard the power of minimalism and simplicity.
Group decision making
One of the greatest and most exciting parts about an open source community is the ability and opportunity for anyone to rise to a position of leadership. Communities are a fantastic way for individuals to find and discover their leadership talent. In a community everyone has equal opportunity to grow into a role or a position and to assume responsibilities. Usually these come from two factors: either you're naturally gifted, skilled, or inclined towards a particular subject and as such you are quickly moved into a relevant position; or you have a personal desire to volunteer in a particular area because of personal interests.
Regardless of the reason, communities usually allow for individuals to explore every possible working group (or at least the best communities do). But this wonderful opportunity can also be an incredible Achille's heel. If there are too many people in a group, too many voices on one particular subject the decision making becomes increasingly difficult.
In fact, I would almost venture to say it becomes exponentially more difficult with each new voice added to a discussion. Of course this topic of group decision making is not one to be addressed here as it would be a full blog post in and of itself. For the sake of simplicity let me merely suggest large group decision making leads to feature bloat in open source and this is something we should attempt to avoid.
All things to all people
The second cause for this rather disagreeable outcome of a feature-bloated product in open source tends to be the reciprocal evil for the inherent good when a large number of disparate people focus on a single idea. Whenever there is an abundance of voices there is also a corresponding abundance of opinions.
This abundance of voices and opinions is not a problem and as I have suggested this is one of the reasons why open source tend to be so successful. This is the power of the community, this yields a greater opportunity for identifying the most desirable solution. The problem arises when the notion of selection is neglected. What I mean by that is when the various ideas are not distilled down and the "best" one chosen the result is a superfluity of options and alternatives. This is not simple or minimal. This is feature bloat.
Open doesn't mean all-inclusive
This third reason is not so much a different reason but an expansion on the previous. When there is a great number of suggested alternatives there is also a desire to please as many people as possible. Therefore, in an effort to demonstrate "openness" or "inclusivity" all the options are made available and all the features are added. And any time when there are this many "all"s used in a single sentence the outcome is inevitably feature-bloat.
It is wise to understand that the idea of open does not in and of itself mean all-inclusive. There is nothing wrong with a community selecting what features to add and what features to refrain from including. This is not a negative and should not be seen as a derogatory response to a particular suggestion. Instead when the focus of the community is centered on the same outcome even in case of a denied feature inclusion there is a fundamental acknowledgement and acceptance of the solution for the greater good.
I would even go so far as to suggest those communities where you see options being added for everything, where toggles, switches and alternatives are included for everything there is perhaps a greater root problem. In these communities there exists a lack of strong, shared vision and a leadership team capable of making decisions based on that vision.
The power of simplicity
We all tend to recognize the beauty of simplicity. We are quick to appreciate the power of a good, clean, easy-to-use product. And yet, when faced with making the hard decisions of inclusion vs exclusion we often waiver and become more lenient in our decisions. We should ensure the power of simplicity is not only recognized but held as a requirement for the product created.
The problem is magnified in open source where again a multitude of voices can influence the product. Great open source communities are aware of and are able to require the power of simplicity in their product.
Why open source wins
Over time the value of open source and the power of the community has become well-known and acknowledged. It is easy to understand the many benefits found in a community of impassioned volunteers. As a result open source software has grown increasingly popular and increasingly commonplace in companies around the world. There is less and less a debate about whether open source software is better than closed source when it comes to these areas. However, open source wins completely when it is able to balance this power of community with the power of decision making. Coupled together the force of these two is unstoppable and the product unbeatable.
Open source wins because it's a better software solution. Open source dominates because a community and its leaders are aligned on a shared vision and focused on a single goal. The best open source communities fight feature bloat with each release and constantly evaluate their decisions in light of their goals.