I've been using and contributing to (not expressively, though) FOSS for a relatively long time, about 6 years. During this time the most intriguing and hard-to-answer question about it was:
Does it really work ? if so, how ?
Many of you, who already know the benefits of FOSS and read other passionate blog posts about it, might quickly say:
Duh, yes, look around !
Amongst with other thousand of passionate images about freedom [typical needs citation point, I apologize in advance] contrasting with evil and illegal practices played by the current proprietary software vendors.
However, I'm afraid this approach is not compatible with the need the FOSS idea has to establish itself simply as:
A more appropriate way of producing and maintaining software
First things first ! That's all it has to be.
Solving world poverty and reducing pathological economic differences might be kept in the agenda of any sane person living in this planet, not only software developers, but affirming that free-software by itself will fix those problems is very naive, to not say irresponsible.
Enough philosophy for a admittedly 'narrow-mind' guy. Let's move on.
My attempt to answer such question, replacing all passionate arguments with pragmatic ideas, goes through a rough and simple logic model:
[Be aware that I could not find any explicitly compatible references, please feel free to disagree with my points]
FOSS benefits users because they have the opportunity to use and improve the collective code to serve their own purposes;
FOSS benefits are even more visible in the upstream project where all individual contributions (IC) are consolidated as the upstream momentum (UM):
Equation1: UM = Sum(IC)
Upstreams communities are clearly the most benefited entities in the FOSS scenario, and thus the most interested in keeping it running well. The more people gets involved and contributing the higher will be UM;
Within a FOSS upstream community, the individual benefits (IB) is equals to the upstream momentum (UM) times the level of shared interest (SI) established with the upstream community.
Equation2: IB = UM * SI
The equation above describes the magic of FOSS, given a higher level of shared interested each coin you put in the system will return an extra parcel of all the other coins already running in the system.
So, FOSS works (duh!), it's just a matter of selecting the highest upstream momentum and shared-interest to get the best individual benefit (IB).
Regarding the fact that your contribution by itself might increase the upstream momentum of a given project, for most of the cases, it can be ignored because the difference will be insignificant and thus the upstream momentum becomes a constant when classifying FOSS projects. It is an instantaneous metric. It is, by itself, already an answer for those people looking for a project to get involved with.
In the FOSS eco-system it's very common to find more than one upstream community aiming to solve a specific problem (programming languages, graphical libraries, window managers, etc). When all candidates offer a similar level of shared interest you should choose the one with higher momentum, it will produce the best benefit ... That's what could be called the FOSS natural selection rule.
You might have noticed that I haven't mentioned yet the contribution cost (CC) and how it should be considered when in the FOSS scenario.
The contribution cost affects how profitable (P) the relationship between the individual and the upstream community is, as in:
Equation 3: P = IB / CC or expanding P = UM * SI / CC
Obviously we know that a contribution cost always exists, each minute you use to contribute to a FOSS project certainly has a cost, it varies according subjective and personal standards, but certainly it's not zero. However the same standards apply to the profitable perception, i.e, for personal relationships FOSS is always a matter of choosing the project with the most momentum and which you share the most interest with and it can be very subjective, no doubt.
It is very important to note that the vast majority of FOSS project is sustained by unprofitable individual relationships by strictly following the equation above. Those relationships are driven by valuable personal believes that can't be measured or estimated in equations, but certainly result in a major benefit in each contributor knowledge and experience otherwise they would not happen (I said it would not be a passionate arguments, so better stop).
Back to the original pragmatic line, as it was supposed to be, with those three concepts in mind is much easier to understand the dynamic of FOSS.
Users, contributors, companies, they all (can) represent the same role in a FOSS community, should look for profitable projects. The ones :
- Having highest upstream momentum;
- Having the minimum contribution cost;
- They can establish the maximum shared interested;
I will be discussing alternatives for reaching good levels on those field later, but to not let a bad taste in the readers mouth lets pinch some ideas for the next post:
- Shared interest is always higher in small and encapsulated FOSS projects. Shared libraries, pluggable components, external APIs are the way to go.
- Contribution cost is smaller when the project well documented, code is accessible & readable and workflows are simple, clear and honest.