The free software ecosystem and its denizens
Free software is a remarkable phenomenon. It is a highly evolved form of collaboration: compared to other creative endeavors, free software developers all over the world are able to work together on a project with surprisingly little friction. It is a grassroots political movement which has grown from small online communities to span geographical and national boundaries. It is a multicultural social group with unique and diverse characteristics. It has spawned a variety of self-governing organizations and successful corporations.
It is also an interesting example of a gift economy. In general, participants in free software donate their work to the greater good, with no expectation of an exchange of value. Some contributions are rewarded by social or professional recognition, where the author achieves standing among their peers or receives gratitude from recipients of their work. Others indirectly evoke rewards in kind, such as where the creator of a program is rewarded by contributions from others which improve it further. Some are works for hire, where a corporation commissions a contribution through its employees, in pursuit of its own aims. There are other types of exchanges where I do not personally understand what motivates the contributor.
There are many recognized roles in free software, but they can be broadly classified into three types:
Developers are the heart of this economy. They are continuously creating and improving free software technology, and publishing their source code for other developers to use and learn from. Some developers write one program and then vanish from the community, while others contribute to many different projects over the course of decades. Highly effective developers are celebrities in the free software community.
Users, also known as “people”, are the reason why software is written. Their needs and wants determine which software is considered valuable. Many of them also contribute directly to free software in one way or another, by promoting awareness, providing testing and feedback, supporting other users, writing documentation, or building communication links. Historically, most users of free software were also its developers, but today, this is no longer true, and millions of people use free software who are not developers.
Packagers connect these two groups. They gather up the source code produced by developers, wrap it in standardized packaging, and bundle it into collections (distributions) designed to meet the needs of users. Users experience free software almost exclusively through a distribution. As the free software stack has grown in size and complexity, so have distributions, and the maintenance of a modern distribution is a large-scale development project in itself: selecting appropriate software and versions, getting the lot working smoothly together, and releasing it in the form of a product which is accessible to users. Packagers create only a small fraction of the software included in their distribution, but they define several key aspects of “what it is like” to use it. Users most strongly associate their experience of free software with a distribution.
If free software were film, developers would be some combination of writer and crew, creating and expressing characters and a story. Users would be viewers (including critics and fans), who receive and interpret the work. Packagers would be the film crew, realizing the production on film so that it can be seen.
If free software were food, developers would be chefs, developing recipes and cooking. Users would eat and critique the dishes. Packagers would be restaurateurs, serving customers and creating an environment in which they can experience the food.
Neither of these analogies are very complete. In particular, these analogies fail to capture the strange loops of free software. Every developer is also a user, reliant upon of thousands of other programs which they receive in packaged form order to do their development work. Every team of packagers develops some software in order to make their distribution work, and they use the distribution itself in order to do so.
Distributions, and the integration work that they do, are a critical part of this ecosystem. Many of us would not be using free software today if not for the efforts of projects like Debian, whose mission is to produce a complete system out of free software created by others. In my case, Debian provided both the means and the motivation for my contributions to free software, and later made Ubuntu possible.
Strong, productive relationships between these groups are essential to continuing the growth and development of free software. Whichever groups you’re part of, get to know your counterparts in other groups. Talk to the people who are packaging your software, writing the software you package, using your software or packages. Learn about the problems they face and how you can help each other. Don’t assume that this communication is someone else’s job: reach out and make it happen.