New Methods from
Open Source Software Development
May hold promise for Solving Various World Problems
There is hope for this planet yet.
It may be that recent breakthroughs in the field of software development contain the seed ideas for a new approach to planetary-scale problem solving.
It's a good thing and about time too, because the problems have reached an urgency that is overwhelming traditional problem-solving methods, including business, government, NGO's and individual efforts.
The hopeful breakthrough I refer to is the open source movement. The open source software movement is a world-wide effort of volunteers to write world-class software and give it away for free to anyone that wants to use it and abide by certain public licencing arrangements. The movement has succeeded in mobilizing hundreds of thousands of volunteer programmers to develop, document, enhance, test and deploy the world's fastest growing computer operating system: Linux. An operating system is the most basic software on a computer that creates the foundation that other programs run on. The commercial equivalents are Microsoft's Windows and MacOS. Needless to say, these companies are a bit nervous about Linux and other free alternatives to their products. The self-organizing, chaotic open source movement has produced a whole necklace of programming gems that often rival and surpass their commercially-produced counterparts from Microsoft. One of the most popular components of Linux is the Apache web server that is already the world's most popular web server program, running on upwards of 60% of all web servers on the internet world-wide. Whenever you type www.whatever.com into your browser, chances are that your computer will be talking to another computer running Apache to retrieve the web pages stored elsewhere on the Internet.
The accomplishment of creating this gift to humanity is astounding. As a free replacement for commercial server operating systems, a single Linux installation can save a typical medium-sized business or government agency tens of thousands of dollars (roughly the cost of a large multi-user Novell or Microsoft Windows Server License). Multiply that by a few dozen servers per organization-a million here, a million there and pretty soon, as they say, you're talking some serious change.
While the benefits of the Open Source software projects to humanity are huge, the real gift to humanity may well be the development methods that evolved along with the software.
Another way of looking at the scale of this accomplishment is to imagine that you've packed the Mall in Washington D.C. with several hundred thousand people for half a decade (so far). Each person is a highly-skilled software developer tuned into a medium that allows each of them to easily keep tabs on what all the others have created and to fit their own efforts into the pattern emerging from their collective mind.
If it was a bridge, Linux would far surpass the Golden Gate bridge as an engineering achievement. If it was a car, it would get 300 miles per gallon and go faster than the Blue Flame on Bonneville Salt Flats.
The main factor in this historic phenomenon is the internet. But, to say that the internet caused the open source movement is like saying automobiles created the steel industry when, in fact, they grew together. The operation of what we today call the internet is so fundamentally dependent upon open source software that it couldn't function without it and almost certainly would not have grown as ubiquitous as it is today without open source. It is as difficult to imagine open source software without the internet as it is to imagine the internet without open source software.
There are many other factors that have contributed to the success of the open source movement and many of them are discussed in "The Cathedral and The Bazaar" by Eric Raymond. It is my hope that by understanding the principles that lead to the success of the Linux operating system and other open source triumphs, we can understand how to apply those same principles to unleashing human potential in equally creative and coordinated ways, but applied to more diverse projects such as reversing global warming, restoring the ozone layer, preserving biodiversity, and reducing or eliminating various forms of pollution.
Beyond the environment, I also hope it will be possible to use emerging internet-based media to help fight hunger, disease, and human rights violations, among other social ills.
I realize that this will seem like a huge stretch to many people. Environmental problems are real-world whereas open source software exists in the limitless realm of cyberspace. Real world problems have limits like competition for resources and scheduling whereas software can exist in as many versions as programmers want to maintain and be created on schedules more or less unrelated to the schedules of the physical world. It's true that there are many differences between the kinds of real-world projects I envision benefiting from open source methodology, but it is also true that there are many similarities.
It's possible, though, that the main reason software development was the first major human endeavor to benefit from open source methodology is because the community of participants were simultaneously creating their own medium. Secondly, the only tools this community needed to get started were relatively simple tools like text editors and C compilers. There is a wealth of new software tools yet to be created that will facilitate the entry of additional communities of participants working of diverse projects.
But the big news is that it's already started. Even with crude tools like e-mail, plain web pages and chat rooms, groups have begun to make rapid progress. The WTO protests in Seattle were one example of internet-coordinated activism. Perhaps a better example is e-law (http://www.elaw.org). The emergence of "flash campaigns", where thousands of organization members (example: http://www.moveon.org) participant in write-in campaigns is another indicator.
So, on the other hand, maybe I'm on to something.
Let's proceed by exploring the principles of open source methodology from Raymond's book and see how they might relate to organizing on-line and real-world communities of people to work on environmental and social justice issues. Raymond's list describes project participants as "developers" or "programmers". These terms don't apply as well to communities of people working on problems other than software. I have taken the liberty of restating Raymond's principles with terms like "citizen", "activist", "organizer" or just "people" where it seemed best to me.
1. EVERY GOOD WORK OF SOFTWARE STARTS BY SCRATCHING A DEVELOPER'S PERSONAL ITCH.
18. TO SOLVE AN INTERESTING PROBLEM, START BY FINDING A PROBLEM THAT IS INTERESTING TO YOU.
There are other maxims from other disciplines that cover similar territory. For writers, it's "write what you know". For philosophers, artists and performers it's "follow your bliss". For most people it's "pursue a career for which you have a calling or passion".
The same goes for on-line participants in "planet-saving" projects, but as more and more people are impacted by growing world problems, there will be a larger and larger group of people willing to devote their time to planet-saving causes.
It has long been a woe of the environmental movement that it's hard to get people excited enough to volunteer unless the problem is close-to-home. The "NIMBY" (Not In My Back Yard) factor has motivated many small movements and failed to motivate larger scale problem solving.
But everyplace is somone's back yard. If the key to success truly is, "Think Globally, Act Locally" then perhaps the engines of the internet will fulfill the "Think Globally" half of the equation while people's natural concern about their own turf will continue to fuel the "Act Locally" half. Perhaps a global movement is really just a million local movements all happening at once.
To restate: "For best results, work on projects that are personally important to you.
2. GOOD PROGRAMMERS KNOW WHAT TO WRITE. GREAT ONES KNOW WHAT TO REWRITE (AND REUSE).
Most organizations from lack of enthusiasm brought on by endless meetings, bureaucratic hassles of setting up 501©3 organizations, finding office space and furniture, raising enough funds for same, getting out the monthly newsletter and working on the telephone. These are all "re-inventing the wheel" and detract from the more enjoyable, more direct activities that speak to the actual causes being furthered.
When you meet on-line and in people's houses, offices are not really necessary, and meetings are as short or as long as you want them to be: delete, skim or read in-depth-it's your choice.
If you don't have the expenses of offices, phones, postage and printing, then your organization will have to grow to a fairly significant size before expenses grow large enough to justify forming an incorporated organization. By then you'll have so many members that a small fraction of your volunteers can focus on fund-raising and they'll be big results from their efforts.
Beyond not reinventing-the-wheel, there are many other ways the internet can further "re-use" in large-scale, planet-saving projects.
Re-using on-line research and linking to related web-sites helps your organization communicate and get out your message.
Re-using e-mail lists, and parts of letters to politicians helps to automate functions traditionally performed with newsletters and individual letter writing.
Re-using environmental research to strengthen environmental law in different jurisdictions throughout the world, is the specialty of the E-LAW group at the University of Oregon.
Re-using project templates (for protests, political campaigns and other repeated motifs) can greatly reduce the effort needed to sustain a movement and make it more effective.
Search engines can help people re-use so much information. It still amazes me.
3. "PLAN TO THROW ONE AWAY; YOU WILL, ANYHOW." (FRED BROOKS, THE MYTHICAL MAN-MONTH, CHAPTER 11)
There is success, even in failure. You win some. You lose some. You always get better at it. Enough said.
4. IF YOU HAVE THE RIGHT ATTITUDE, INTERESTING PROBLEMS WILL FIND YOU.
No translation needed.
5. WHEN YOU LOSE INTEREST IN A PROGRAM, YOUR LAST DUTY TO IT IS TO HAND IT OFF TO A COMPETENT SUCCESSOR.
It is easier to find a competent successor, or at least a custodian, when you can search the whole planet easily. There are 50 million potential successors (internet users) out there. What percentage of humanity will be on-line by 2010?
If all it takes to keep hope alive for your project is a simple static web-site, maybe it will keep working for you for years and years.
6. TREATING YOUR USERS AS CO-DEVELOPERS IS YOUR LEAST-HASSLE ROUTE TO RAPID CODE IMPROVEMENT AND EFFECTIVE DEBUGGING.
11. THE NEXT BEST THING TO HAVING GOOD IDEAS IS RECOGNIZING GOOD IDEAS FROM YOUR USERS. SOMETIMES THE LATTER IS BETTER.
10. IF YOU TREAT YOUR BETA-TESTERS AS IF THEY'RE YOUR MOST VALUABLE RESOURCE, THEY WILL RESPOND BY BECOMING YOUR MOST VALUABLE RESOURCE.
This one is perhaps the most important (given that it is stated in three variations) and is more difficult to translate, but I think I know what the parallel is for non-software projects..
When you're working social justice issues and problems of poverty, don't be condescending, whatever you do. Give a helping hand, not a hand-out.
One of the best examples of this principle is the emerging "community-based" social work. Groups like "Real Change" for the homeless in Seattle are inspiring in their ability to mobilize the very people they are serving to help get their message out. In Seattle, homeless people sell newspapers for donations on street corners and the newspapers educate people about homeless issues. It's a win-win, creative solution.
This principle is harder to apply to environmental problems where your "users" might be flocks of rare shorebirds, but be open to any all feedback that helps you make your project more effective.
Another way to look at it: You have six billion potential allies, just counting members of your own species.
7. RELEASE EARLY. RELEASE OFTEN. AND LISTEN TO YOUR CUSTOMERS.
Don't stagnate. Involve people in your process. Listen. Follow-up. In software, a "release" is simply distributing your very latest efforts to anyone interested.
8. GIVEN A LARGE ENOUGH BETA-TESTER AND CO-DEVELOPER BASE, ALMOST EVERY PROBLEM WILL BE CHARACTERIZED QUICKLY AND THE FIX OBVIOUS TO SOMEONE.
19. PROVIDED THE LEADER HAS A MEDIUM AT LEAST AS GOOD AS THE INTERNET, AND KNOWS HOW TO LEAD WITHOUT COERCION, MANY HEADS ARE INEVITABLY BETTER THAN ONE.
This is the magic of the group mind. Get ready to watch it work miracles for you and your organization.
When I was the on-line fundraiser for the Eugene Free Community Network in the summer of 1995, the "computer room" (Clif Cox's closet) was in serious danger of overheating and burning out many thousands of dollars (okay many hundreds of dollars) of equipment because of a heat wave. I sent out an e-mail asking if anybody had a spare air conditioner they weren't using. Not one, but three were offered and one was selected and used with good results. There were only about 2000 users at the time.
Everything you need for your project to succeed is out there: money, expertise, equipment, services, influence, transportation, food. Somebody who cares about your cause knows an easy way to get it, and with the proper appreciation, cajoling and help, they will.
Believe it and experience the joy of co-creation.
9. SMART DATA STRUCTURES AND DUMB CODE WORKS A LOT BETTER THAN THE OTHER WAY AROUND.
Okay, what does that mean? This is very meaningful to object-oriented programmers who write in languages like Java and C++, but what does it mean for non-programmer types?
A database is better than a static web page. If you can organize your information in ways that make it more accessible for many different purposes, well, it's a very good and powerful thing.
This is the equivalent of "don't work hard, work smart". We computer geeks can help organize information better and make web-sites easier to maintain. It's worth spending time evaluating how you save and share information. There are ways to improve most of these processes by an order or two of magnitude (ten to a hundred-fold for those of you less familiar with magnitude and powers-of-10).
This one concept is probably the most important concept for those of us who would implement systems to facilitate and enable the work of on-line communities dedicated to diverse causes. It is up to us to make the best use of all our training in database normalization, entity-relationship diagrams, definition of classes and methods to create the simplest and most effective tools for our users.
12. OFTEN, THE MOST STRIKING AND INNOVATIVE SOLUTIONS COME FROM REALIZING THAT YOUR CONCEPT OF THE PROBLEM WAS WRONG.
A systems approach to environmental and social problems can yield amazing insights. Conservation is the most economical method of energy "production". Money spent giving opportunities to youth keeps ten times more criminals off the streets than money spent on prisons.
13. PERFECTION (IN DESIGN) IS ACHIEVED NOT WHEN THERE IS NOTHING MORE TO ADD, BUT RATHER WHEN THERE IS NOTHING MORE TO TAKE AWAY.
'Tis a gift to be simple.
14. ANY TOOL SHOULD BE USEFUL IN THE EXPECTED WAY, BUT A TRULY GREAT TOOL LENDS ITSELF TO USES YOU NEVER EXPECTED.
O O O O O
Much has been written about motivating software developers and what keeps volunteer programmers going. Most agree that it has a lot to do with social rewards including enhanced reputation and the respects of peers.
This may pose an obstacle. The community of people who cluster around open source software development are a different bird than, say, the community of people who cluster around reversing global warming or the community of people who cluster around preserving biodiversity.
Each cluster has its own norms and ways of establishing and expressing peer respect. If we are to be successful in harnessing the promise of internet tools to enable the solution of real-world problems, then we have to find ways to bridge between these communities, or, perhaps more to the point, people who serve as bridges between these communities. We must help biology wonks, climate wonks and computer wonks to sit down at the same table and to find the social rewards within and between their communities to be sufficiently worthwhile to keep them coming back.
O O O O O
15. WHEN WRITING GATEWAY SOFTWARE OF ANY KIND, TAKE PAINS TO DISTURB THE DATA STREAM AS LITTLE AS POSSIBLE-AND NEVER THROW AWAY INFORMATION UNLESS THE RECIPIENT FORCES YOU TO!
16. WHEN YOUR LANGUAGE IS NOWHERE NEAR TURING-COMPLETE, SYNTACTIC SUGAR CAN BE YOUR FRIEND.
17 . A SECURITY SYSTEM IS ONLY AS SECURE AS ITS SECRET. BEWARE OF PSEUDO-SECRETS.