Open source software is developed in a very different way than proprietary software. Proprietary software is developed along the same lines any commercial product is developed, under the control and direction of the decision makers in a corporation. Open source software is developed by volunteers who work on everything from the source code to bug testing to documentation.
The open source software movement dates back to the 1980s. The Linux operating system, which is now one of the main operating systems used for web hosting servers, was one of the first major open source software efforts. Open source software is available for free to anyone who wants to use it; the source code is available to engineers who wish to change, improve or adapt it.
The philosophy behind open source software is well stated in this mission statement from the Open Source Initiative:
The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.
We in the open source community have learned that this rapid evolutionary process produces better software than the traditional closed model, in which only a very few programmers can see the source and everybody else must blindly use an opaque block of bits.
So how does this work in the real world, without descending into chaos? These pages can give you a glimpse into the process:
- Call for contributors to WordPress, showing the range of skills needed
- Map showing recent contributions to Drupal, showing that this is truly a global effort (map is at the bottom of the page)
- A list of bug reports and feature requests for Drupal. This shows the excruciating detail of how software is developed.
Although open source projects generally begin as the brainchild of a small group of people, the larger open source web development platforms have spawned nonprofit associations dedicated to advancing the development of the software. The WordPress Foundation, Drupal Association and OpenSourceMatters (for Joomla) are nonprofits backing these three popular web development platforms.
Although WordPress, Drupal and Joomla are the most popular, they are far from the only options. As of this writing, there are 141 different content management systems listed at opensourcecms.com. And that is just content management systems. Virtually every type of software can be found in an open source version.
In addition to contributing to the core software, programmers can expand the capabilities of a web development platform by writing add-ons for specific purposes. These are called modules in Drupal, extensions in Joomla, and plugins in WordPress, but they all serve the same purpose of expanding the functionality of the platform for specific applications.
As of this writing, there are 15,614 plugins available for WordPress. Plugins (and their Drupal and Joomla counterparts) add specific functionality to a website: a photo gallery, social media integration, ratings systems, events management—you name it, there is probably a plugin available. The advantage of plugins is that a non-programmer can easily add advanced functionality to a website. On this website, WordPress plugins are the basis for the portfolio, the home page animation, and the contact form; they protect comments, forms and email addresses from spammers and display my twitter feed on the blog pages.
Open source web development platforms are free, and make it easy for a non-programmer to build a sophisticated website. There’s a lot to like about them. But they do have their pitfalls. In a subsequent post, I’ll dig a little deeper into the pros and cons of open source web development platforms.