In the true collaborative Better World by Design spirit, we’ve used a handful of open source applications and frameworks in the development of this site. While most open source software is free to use, the defining feature of open source software is the community-based approach it uses for development. As the Free Software Foundation puts it in their Free Software Definition, “‘Free software’ is a matter of liberty, not price. To understand the concept, you should think of ‘free’ as in ‘free speech,’ not as in ‘free beer’.”
WordPress is what we use as a content management system for the site. It is, at the time of writing, the most popular content management system used on the internet. And, of course, it’s open source.
A Brief History
Matt Mullenweg and Mike Little began WordPress by creating a fork of another open source project called b2/cafelog. Mullenweg got a job with CNET and worked on WordPress “every free moment” he had. Mullenweg grew WordPress on what he dubbed a “freemium” business model. He “wanted to make money by being a commercial Robin Hood” with services such as Akismet (which prevents spam) and WordPress.com (which provides hosting and support for a WordPress installation hosted on their servers), both of which are free for individuals but charge a small fee for businesses. The brilliance of this business model is that it encourages adoption by new users while bringing in money to sustain the project from businesses and users who desire advanced features. See more detail in his interview on Mixergy.com.
The About WordPress page describes WordPress as “an Open Source project, which means there are hundreds of people all over the world working on it.” The core development team chats weekly in open meetings on IRC. The team manages the aspects of day-to-day development including source code, timelines, roadmaps, and tickets on WordPress Trac. Minutes, agendas, and out-of-meeting discussion take place on the WordPress Development Updates blog. It is quite active, with a semi-randomly selected post: WordPress 3.3 Proposed scope showing 46 comments. How to contribute as a newcomer (by providing anything from documentation to tech support to development) is clearly laid out in an article in the WordPress Codex: Contributing to WordPress.
While working on the 2010 site, fellow advisor, Tim and I had a couple of instances in which we inadvertently overwrote each other’s code changes. It’s a common problem when using FTP to upload code to a server. There are a few different approaches in revision control to alleviate this. Dreamweaver has a “file locking” a.k.a. “check in / check out” feature built in. The issue with “file locking” though, is that only one person can work on a file at a time. A more seamless approach of “version merging” requires version control software such as Subversion.
What Does Subversion do?
The Athletics blog gives a thorough and accessible overview called “On Using Subversion for Web Projects”. It lists the “big idea” of Subversion as:
- Store (and safe-keep) your project in a repository on a remote server.
- Allow multiple users to collaborate on the same code base at the same time.
- Keep track of all changes made to a project over time. (Sidenote: This aspect of version control is very similar to Mac OS Leopard’s Time Machine feature.)
Stack Overflow is an indispensable forum (or as they would call it, Q&A site) for programming. The key is that collaborative editing and a ranking system ensure that questions and answers allow questions and answers to be edited / moderated easily and allow good answers to rise to the top. Also, a point system called “reputation” lets users earn privileges to do more on the site. This simple reward turns forum participation into a rewarding and addictive activity.
Although privately held, Stack Overflow is about as community-driven as a company can get. Even the name was chosen by an open vote. The content on the site is released under Creative Commons licenses. Heck, Creative Commons even wrote a case study about Stack Overflow. And of course, there’s not much to it without questions and answers submitted by the community. In the blog post announcing the site’s launch, co-founder Jeff Atwood closes with “who cares what I think; my opinion holds no particular weight. I’m just a member. This is our site.”
Out of Stack Overflow grew Stack Exchange, a network of Q&A sites on a variety of topics. There’s a “new site staging zone” called Area 51, where users can propose ideas for new Stack Exchange sites. In their FAQ, there’s a clearly outlined process from proposal to beta period to full membership.
Tying it all Together with a Simple Example
After we launched the site, I was trying to resolve a bug with searches for multiple words. I checked the WordPress Codex (documentation) for the code to properly display search page results. It matched what I had. I put in some debugging code but couldn’t find anything to get me closer to a solution. Then I asked a question on Stack Overflow. I had traded several comments with one user who was attempting to find the problem. In the meantime another user offered the solution. It revealed an error in the code that was listed in the WordPress Codex. Then, the user with the answer pointed out that the WordPress Codex is a wiki, so I took the first step that WordPress suggested I take to contribute – I updated the Codex with this fix.