CNET también está disponible en español.

Ir a español

Don't show this again

Culture

Building the Bazaar: coding community into software

Open source doesn't just happen. It requires modularity and open APIs to thrive.

There is a persistent myth that open source operates like Linux, with a global team of developers holding hands and praying for world code peace. Most open-source projects don't work this way, looking much more like Eric Raymond's "cathedral" rather than the holy grail, the "bazaar," as Juergen of SnapLogic points out in an exceptionally insightful post on open-source software development.

The problem with many open-source projects is that while familiarity may not breed contempt, it can certainly breed institutional incompetence:

Why do so many open-source projects not have the active community of external contributors they are hoping for? Because they have been largely developed by co-located teams of hired software engineers, 100% dedicated to the project, managed and organized like any traditional software development effort. This seems to be especially true for the new crop of 'custom build' open-source companies, which would like to take advantage of the open-source business model. They might hope to also enjoy the advantages of the open-source development model one day, but achieving that requires a conscious effort.

The key to building bazaar-like open-source development communities is, as Juergen points out, to insist on heavily modularized codeand open APIs. One more thing: think like your development community, which often is easier as a distributed development team rather than a cohesive bunch operating from the same cluster of cubicles.

...[W]hile lacking the benefits of immediate and direct communication, distributed development teams are forced to think about modularity and APIs between modules from the very start. Consider that Richard Stallman used Unix as the reference design for his GNU system for exactly this reason (among others): Well defined modules, facilitating a distributed development effort. It was a concious choice for GNU, and it was a necessity for Linux: Without an emphasis on modularity and APIs, a distributed development effort becomes unnecessarily difficult, if not impossible.

I encourage you to read the rest of Juergen's analysis. And then move far away from your fellow developers. :-)