Community is an overloaded term, particularly in the world of software development. Sometimes people make vague references to a group of developers with similar interests and refer to them as a community, even if they have little communication. The open source “community” is probably the worst about this (see, I just did it), because there really is no cohesive open-source community, as is readily apparent to anyone involved. There are plenty of splinter groups, a few organized anarchies, some true communities, many corporate gatherings, and even a few genuine movements, but no single community. As has been said many times, one cannot simply send email to “the open-source community”. However, the shared sense of purpose definitely exists, and it is this purpose that is most valuable and which provides the glue that binds the community together.
By definition, a community is a group of people with a common interest. Not all communities foster communication, but the word itself invokes a sense of purpose toward communication, a term with which it shares a root, communis(Latin for common). Online communities are built around creative technology designed to promote communication, and certainly the communities humans find most vibrant are those whose members interact and communicate dynamically.
In the software design process, a community can be as small as a single developer or a team, or as large as the thousands of developers who contribute to the Linux kernel. Sometimes communication is primary and central to a project, sometimes it is combative but productive, and usually when it is missing, a project dies.
The one property shared by all communities is that they are made up of individual human beings.
Why am I so interested in communities? I am helping to build an online community for embedded Linux developers. This is one of the most exciting projects I have ever worked on. I have spent many years working with both proprietary and open-source software, with Linux in a variety of applications, with embedded systems, mobile systems, cluster supercomputers, and even enterprise servers, writing documentation sometimes down to the level of bare metal. I can safely say that I have at least been exposed to the extremes of both hardware and software, and I have written many thousands of pages specifically for developers. However, I have not before had such a central role in helping developers communicate with each other. The longer I work on this project, the more I realize that by helping to nurture that communication and get individual human beings talking to each other and helping each other work out problems and maintain boundaries, the more useful I feel in helping the larger communities of which I am a member.
I am very excited to share this community with you… as soon as it is out of beta. 🙂 Watch this space for announcements, and feel free to ask me about it.
UPDATE: It is out of beta! Come join us at Meld.