What is open source? It can actually mean a variety of different things, but most simply it means free software that anyone can use as is or alter as they see fit for their particular needs. According to Wikipedia - “Some consider open source a philosophy, others consider it a pragmatic methodology.” I think I fall into both camps, but being the pragmatic, methodological guy that I am I shall present that angle today.
When I first got into software and development a few years ago it was because of one of the most proprietary devices out there - the iPhone. Proprietary is the exact opposite of open source. It is not free. You are not welcome to see the iPhone OS source code. You are not welcome to use anything except for Apple’s set of development tools to build iPhone applications. You may only distribute those applications through the AppStore, of which Apple is the sole overseer. I didn’t consciously realize the implications of this stuff two years ago. I just wanted to build a band app that all my friends could use and get rich. So I bought a Mac and dove in.
Upon diving in, I realized many things. One is that Apple and their set of development tools - called Xcode (X as is OS X, the Mac OS) - came with the most amazing set of documentation on virtually every aspect of developing software built right in. My education began there. Poring over the included documentation and learning how the iPhone OS and Object Oriented programming worked on a high level was the beginning of the path for me here. Among other things I learned that the Mac OS (operating system) and by extention the iPhone OS were built upon an open source OS called Unix. Unix has been around since the late 60s, and was initially developed at Bell Labs. Unix runs on the “command line”, which is like way back in the floppy disk era when you used to have to type into DOS to get your computer to run programs. Most professional developers I met at the DrupalCon a month ago seem to have a deep fear of the command line. Luckily my early experience with Rails and Git got me over that fear before I learned that I should have one.
Anyway, there are many different versions of Unix out there, some open source (meaning open to anyone helping develop it) and some proprietary (meaning you have to pay a licensing fee to even use it). Some hippies at UC Berkeley one day got tired of Ma Bell and her ridiculous licensing fees and decided to make their own variant called Free BSD. To make a long story shorter, Steve Jobs and co. took Free BSD in the late 90s and made it the base of their new OS. OS X, a really awesome, intuitive, stable operating system that only legally runs on Macintosh computers took an open source project as it’s guts. What the world knows as OS X is basically a really nicely designed wrapper over top of Free BSD. If you’re on a Mac and you go up to the Spotlight in the top right and type in “Terminal”, you’ll get the command line for your computer. This is the real operating system you are speaking to underneath the glitsy OS X veneer.
So what’s the point? Who cares? Steve Jobs ripped off a bunch of hippies and now he’s a genius? Well, yes, and here’s why.
Windows, the beloved, world dominating piece of shit OS that never works right whether you know it or admit it or not is not an open source project. It and it’s source code have been sequestered away in Redmond WA for the last 25 years or so. The only people allowed to work on it are MS employees following MS corporate policies, coding practices, and managerial and marketing direction in their development of Windows. I liken this to being in a really high paid Connecticut wedding band. By contrast, Free BSD - though a newer OS than Windows even - comes from a pedigree of having been developed and refined for the last 40 years. Open source means anyone with the mind to can contribute to the project with only their own needs and imaginations as their guide. Ultimately what happens in a sucessful open source project is that a community of developers begins to coalesce. Different perspectives, features, and methodologies are brought in from all over the world by developers trying to solve problems, not by the marketing department downstairs or your manager who has to make his boss happy with this one feature. What would be a security hole to exploit is plainly visible for all to see and for all to immediately get on top of fixing for the good of everyone who uses that software. If you need a feature that doesn’t exist yet, you write it yourself and share with everyone in the community. I liken this to participating in the late night jam at Slopryland.
That’s probably enough for now.