1. 程式人生 > >The Ingenious Ways Open Source Software Grows

The Ingenious Ways Open Source Software Grows

The Ingenious Ways Open Source Software Grows

Open Source Software (OSS) is everywhere. You may well be reading this on an open-source browser such as Firefox, installed on an open-source operating system such as Ubuntu. These programs rival the best offerings from Microsoft and Google — which begs the question: how on earth did a bunch of strangers from all over the world collaborate and organize themselves to create such reliable products, used and loved by millions? By diving deeper into the OSS development process, we can see the mechanisms in play that allow both creative input and stringent management processes to foster.

Firstly, we must understand the way OSS communities are structured. This structure can be rather democratic, in that a plurality of developers can be working on separate issues or features, or more dictatorial, in that a small subset would oversee the direction of the project, and decide on what contributions can ‘make the final cut’ so to speak. Though the ‘dictator’ model seems like it would fall apart, the key is knowing that any user, if disaffected by the overall direction of the project, can ‘fork’ the project — meaning they simply copy the entire codebase and do as they please with the project. This could mean creating a competing project to the original one; if a large enough group of developers were dissatisfied with the original project, they might jump ship to the new project.

This inherent freedom of OSS allows for what are known as ‘benevolent dictators’, and compromises are made before forking occurs. After all, it is in the best interest of the long-term success of the program for the developer base to not splinter into several competing factions.

Several other structural innovations have arised to allow for the success of OSS. Having so many people contributing to a single project would invariably lead to social interactions, giving rise to an ‘OSS online culture’ entirely separate of the individual cultures of the developers. Adopting a certain tone with other developers online, especially when delegating certain tasks, can be critical, as the appropriate balance of praise/constructive criticism can be the difference between a content contributor and a disgruntled volunteer.

These basic ideas have led to communities numbering in the tens of thousands, all made up of devoted volunteers who wish to contribute to something greater than themselves. When executed well, every volunteer, whether a beta tester or a ‘benevolent dictator’ overseeing the entire codebase, feels a sense of satisfaction from having helped create something useful to more than simply themselves.