Free software communities
There are many levels of participation in a free software project, and none of them should be closed. Apart from the development team, who are usually hired for that purpose, other people might contribute on an occasional or ongoing basis. This chapter focuses on the more social aspects of how to work in this kind of community which is created around these projects.
Contributing to free software communities
The concept of contribution covers much more than the code. It can also consist in:
-
Translations
-
Documentation
-
Bug reports
-
Other tasks
A basic rule is that the contributions are always individual, both in our own projects as well as when we contribute to external projects. That means it is always possible to trace the specific person who has done it, even if they work or participate on behalf of an organisation. The reasons for this are:
-
It is the only model which free software projects are structurally equipped to handle.
-
In free software projects, reputation is what makes everything tick, and that is earned or lost individually. People will rely more or less on the code someone has developed depending on the strength of previous contributions; their opinions in the communication channels and decision-making will carry more or less weight, etc.
-
Developers who regularly work on free software projects are used to this model. It makes interaction easier when they collaborate remotely. It is also useful for them in developing a professional career.
The other important consideration in this section, which applies if we want to modify an existing external component, is it is always better if our code modifications are incorporated, sooner or later, into the original product. That way we can:
-
Reduce future maintenance costs. If the integration is 100%, maintaining the features we have integrated might work out at zero cost to us.
-
Benefit from future improvements to the original product contributed by others.
If more people use our features, the City Council will appear as an institution that contributes to the project and free software communities as a whole. In the long run that could give it prestige and influence.
Bear in mind, however, that we can plan to facilitate this integration but, usually, we cannot guarantee it will happen in the initial stages of a project. Each community has its own rules of governance and decision-making rules which must be respected. But one thing that is worth doing is to keep everybody informed of our plans at all times and try to ensure they converge with those of the community we are addressing:
"Don’t think of community scrutiny as an obstacle to be overcome — think of it as a free design board and QA department. It is a benefit to be aggressively pursued, not an obstacle to be merely endured."
Producing Open Source Software