This year – 2008 – could very well be regarded as the year that the term open source made it into prime time, into main stream media. We think that Google’s launch of Android towards the end of 2007 was a major contributing factor. Suddenly, everybody is an expert on the open source community. Individuals with no knowledge of how the community works have not shied away from expressing “expert opinions” about it. Even companies like Fortify, whose bogus survey of some open source projects was debunked here, have tried to mislead the public about the security practices of open source software projects.
The open source community, like any other, has its code of conduct – its culture, and it is important that those wishing to participate in it have a general idea of how the community operates. This is especially true for developers and enterprise managers itching to contribute code to software projects. To help this group along, the Linux Foundation has published an online book titled “How to Participate in the Linux Community”.
It is intended for prospective Linux kernel coders, but could apply equally well to any open source software project. Here’s a part of the guide:
WHAT THIS DOCUMENT IS ABOUT
The Linux kernel, at over 6 million lines of code and well over 1000 active contributors, is one of the largest and most active free software projects in existence. Since its humble beginning in 1991, this kernel has evolved into a best-of-breed operating system component which runs on pocket-sized digital music players, desktop PCs, the largest supercomputers in existence, and all types of systems in between. It is a robust, efficient, and scalable solution for almost any situation.
With the growth of Linux has come an increase in the number of developers (and companies) wishing to participate in its development. Hardware vendors want to ensure that Linux supports their products well, making those products attractive to Linux users. Embedded systems vendors, who use Linux as a component in an integrated product, want Linux to be as capable and well-suited to the task at hand as possible. Distributors and other software vendors who base their products on Linux have a clear interest in the capabilities, performance, and reliability of the Linux kernel. And end users, too, will often wish to change Linux to make it better suit their needs.
One of the most compelling features of Linux is that it is accessible to these developers; anybody with the requisite skills can improve Linux and influence the direction of its development. Proprietary products cannot offer this kind of openness, which is a characteristic of the free software process. But, if anything, the kernel is even more open than most other free software projects. A typical three-month kernel development cycle can involve over 1000 developers working for more than 100 different companies (or for no company at all).
Working with the kernel development community is not especially hard. But, that notwithstanding, many potential contributors have experienced difficulties when trying to do kernel work. The kernel community has evolved its own distinct ways of operating which allow it to function smoothly (and produce a high-quality product) in an environment where thousands of lines of code are being changed every day. So it is not surprising that Linux kernel development process differs greatly from proprietary development methods.
The kernel’s development process may come across as strange and intimidating to new developers, but there are good reasons and solid experience behind it. A developer who does not understand the kernel community’s ways (or, worse, who tries to flout or circumvent them) will have a frustrating experience in store. The development community, while
being helpful to those who are trying to learn, has little time for those who will not listen or who do not care about the development process.
It is hoped that those who read this document will be able to avoid that frustrating experience. There is a lot of material here, but the effort involved in reading it will be repaid in short order. The development community is always in need of developers who will help to make the kernel better; the following text should help you – or those who work for you – join our community.
Read the rest of the guide here