Next: Economics of open source
Up: Development models
Previous: Perceived disadvantages of open
  Contents
If the characteristics of open source development models were to be
defined by a unique expression, `cooperation and competition' would
probably be the one to choose. Indeed, the combination of both
mechanisms is visible in almost any open source project, not to
mention when we look at the big picture, where every project and
company is in some sense competing with others for resources and
`market acceptance', while collaborating with the reuse of the same
code base. Let us provide some detail on how those mechanisms work,
and enforce each other in a very productive mixture.
- Cooperation within open source projects. Developers
participating in the same project, usually cooperate at levels
higher than those usual in proprietary software projects. The design
phase is usually completely open, with all developers collaborating,
and during the coding phase is quite common that a developer reads
and fixes bugs in the code being developed by another. The flux of
information is usually very high, and problems are solved by
consensus among at least the core developers. All of this together,
in addition to be more effective, usually causes the developers
to be more committed to the project, and makes their work much easier,
thanks to the help of other developers.
- Competition within open source projects. Within
open source projects there is also some degree of competition. Most
of them are organized as some kind of meritocracy, where the
developer who does more for the project deserves more credit, and
is given more weight in decisions. This allows for a certain
level of healthy competition between the developers, from which
the leaders of the project (when such leaders do exist) usually
emerge. This is still a fact not understood by many companies,
which need to realize that in order to participate in the
decisions about future directions of a project they need to have some
respected developers within it.
- Cooperation between open source projects. The very nature
of open source licences ensure a high degree of collaboration, even
between competing companies. This is for instance the case of the
many companies selling distributions of GNU/Linux. All of them share
the same code base (the GNU/Linux operating system and
applications), and whenever one of them fixes a bug, or improves a
package, all its competitors have access to the source code, and thus
to the same fix or improvement. Therefore, projects and companies in
the open source world are compelled to collaborate by the open
source model. And when they try to avoid helping their competitors,
they have to move away from the open source model, which usually
gives them more problems than benefits.
- Competition between open source projects. But in a world
of limited resources, open source projects also compete between
themselves. Projects developing software for the same niche compete with
each other in a way similar to companies in that niche competing. In
the end, they are forced to maintain high levels of quality, or they
will lose users and developers, and will finally fade away. In fact,
this is one of the mechanisms which ensures a good quality in
open source production. When a project starts failing in terms of
perceived quality or management, there is a chance that some of the
developers will open an independent development branch. This branch soon
becomes an independent project, perhaps using a similar code base,
which starts to compete with the old one. This competition usually
causes both teams to improve their product, and in the long term,
one can become mainstream while the other becomes marginal, or
they can diverge giving special attention to different issues. This
is, for instance, the case with NetBSD, FreeBSD, and OpenBSD, all of
them sharing similar code, each with a different focus, and all of
them exhibiting a high quality product.
Usually, this mixture of competition and collaboration is not
intentional, but the product of the development model, and of the
licenses used in open source projects. In short, everybody is forced
to compete by exposing the tools (the source code) they are using, and
improvements are quick to spread through the competing projects, in a
manner quite different to the traditional software industry. Competition and
collaboration are probably the ultimate cause of the high efficiency (in
terms of quality and quantity of software produced with a given set of
resources) which open source projects reach.
Next: Economics of open source
Up: Development models
Previous: Perceived disadvantages of open
  Contents
Jesus M. Gonzalez-Barahona
2000-04-24