Open Source Projects are typically started by a few talented individuals who wanted to "scratch a personal itch". It is then taken over by the entire world (so it seems) and it grows in all directions, eventually magically solidifying into a product that is more stable than any similar effort made by human beings. In fact, OSP at the outset, resemble a great bazaar with different agendas and different approaches by different people.
How important is SCM for such an Open Source Projects project? Let us face it - OSP works and it works well. So how are such diverse interests synergized into a single mission? Looking at the extremely successful Linux example, Linus Torvalds acts as the gatekeeper to the Linux kernel. The actual development work is mostly done by others but Linus Torvalds decides on the contents of the release kernel. Each developer sends to him a patch containing the changes that have to be incorporated into the kernel. Thus for all practical purpose he acts as the one man software configuration management process offering control (incorporating patches from other developers), accounting (the changelog) and authentication of the configurable items (ensuring that the released kernel has all the pieces) - Not an easy task!
SCM and its supporting tools bring order into the chaotic development model of Open Source Projects. All SCM projects require "maintainers" whole job is to integrate the patches that arrive from various developers into the main code base, make sure that things are in order and put out the releases in a regular fashion. The maintainers provide the SCM for free software projects.
All successful OSP projects involve one form of SCM or another. In fact they employ all the procedures as defined in the traditional SCM process (See Section 3). These procedures are evolved unconsciously. If we make a conscious effort to incorporate the traditional SCM procedures into an OSP project, definite benefits can be obtained.
In the future sections, We will look at various OSP projects that are different in size and see how SCM can be effectively applied in those scenarios.
A quote comes to mind...
Take a great idea, work very hard on it and then advertise
This adage applies to OSP more than anything else does. Open Source Projects require publicity as much, if not more, than any other project to be successful. OSP projects to compete in the commercial space will require building credibility with the external world. Credibility should be built starting with fellow developers to users to other large commercial software houses.
One of the ways to build credibility is by leveraging the fact that a clearly defined SCM process exists and is followed for the OSP.
Developers benefit from the existence of an SCM process since it makes their life easier. There is more clarity as to who is responsible for what portion of the code, how and when their patches will be integrated into the main source tree and when software releases will be made.
The existence of such an operational roadmap will help keep the enthusiasm of the developer community thereby ensuring good quality software development.
In the OSP community, a few people will act as the testers for the application by setting up the new version on their system and using it on a regular basis. To them, the availability of an SCM will help in recreating a particular release of the software. They can establish test beds easily and compare multiple releases against each other to find out the cause of a particular bug/issue.
There are a few groups and commercial organizations providing support for the Linux platform. Support can be in the form of providing total solution using Open Source software to providing telephone and/or email based support for customers who have businesses running on Open Source software.
SCM can help them by providing a means to quickly setup a reference platform that contains the exact same software version that is present at the customer site. Thus they can reproduce the problem easily and provide a workaround or solution for it.
Leveraging Open Source to corporate management can be done in the following ways.
Existence of a formal process
The existence of a formal process is always reassuring to the management. It signifies "professional approach" and existence of control in the project.
Merges well with corporate culture
Most commercial software organizations will have one form of SCM or another. Thus any OSP that is going to obtain a corporate backing will benefit from SCM since the Software Configuration Management will help integrate the OSP better with the organization's culture.
Satisfies one or more KPAs of SEI'sCMM.
Investors and venture capitalists perform due diligence before investing in any particular venture. Due diligence is the fancy term for the exercise that attempts to find out whether the particular venture is worth investing into. Since I am not familiar with what is involved in due diligence, I will not be able to add finer points here. All the same, the existence of a defined process to manage the development will always help.