The Art of Open Source

What is Open Source?

By definition according to opensource.com (supported by RedHat) open source refers to something people can modify and share because its design is publicly accessible. Lets think about this for a second, specifically the part that says ‘something people can modify’. That is an interesting concept; does this mean that open source projects are not finished work? Are they merely a starting point, a skeleton template if you will? I think this is the one thing that some people out there struggle with and why for some there is a difficult transition from closed software to open source software. Hopefully by the end of this posting I will have created something others can use to help understand the art of open source.

Open vs Closed Source

What are the differences between open and closed source software? Is one better than the other? Does the support most closed source solutions give you justify the cost? These are all very real and very valid questions that I find I am asking myself more often than not these days.

Early in my career I never used open source software…for anything. The companies I worked for just didn’t use it, it was all pay to play and at the time I didn’t know any better…or worse depending on how you look at it. As I progressed in my career I learned of open source projects that would do the same function as many of the paid solutions that were currently in use; some of them were even the upstream of the paid product that was in place. So I asked myself, why am I using the paid downstream when I can get the same thing for free?

When deciding whether or not to go the open source route there are two things to consider immediately. The first and most important being risk. What is the risk to the business? If there is an outage or bug what is the impact if something goes down? How quickly can I or my coworkers fix the system without paid support? These are all important questions when talking about the enterprise. The second is always budget. Do we even have the money for a new paid product? Does the functionality and support justify the cost? Lastly it is always important to decide whether it is a growing project with a thriving community. The worst thing you could do is to buy in to a project with little community support and eventually have it die….Candlepin?…Hopefully RedHat will revive that…Talking to you Katello guys.

Anyway, I digress. But the point is, when all your questions are answered, you have all the information at hand and you are about to make your decision there is one last question to ask yourself. Are you going to be involved in the community? Are you going to become a subject matter expert (SME) or as I like to say Lead Knowledge Dropper (LKD)? Are you willing do dig through source code, test new patches, run RCs in dev? If you can’t answer yes to at least a majority of those questions then you need to open up that check book.

Open Source…Bringing People Together

Lots of people complain about open source projects not having good support, or not doing everything they want. There is this strange misconception that if you pay for something, it will be better, it will do more and it will do everything you want it to. Yea maybe this is true depending on your skill set and how high up you want to roll those sleeves. Buy by and large if you are picking good open source projects to buy into (ones that are backed by real companies and not some guy that just codes for fun) more likely then not you are getting the same thing if not more than the paid alternative. RedHat is great for this; take a look at the long list of open source projects they back. These are really amazing pieces of software that they saw real potential in and wanted to help grow….also package up into a branded downstream to make a little money too.

More so then that one of the main reasons I enjoy working with open source software so much is the community. There are tons of people I talk to on a daily basis across the world. We all collaborate on what is going on with the project and how to make it better and we help out strangers as well who hop in and out of IRC only when they need help. All of this collaboration drives innovation and that innovation drives participation. This participation is what makes open source such an art form. I can clone down a repository, write some code, write some tests and submit it for approval to be merged into the official project. By doing this I know have a new feature that I wanted so I can no longer complain that it doesn’t do something I need, while also making it better for whomever else out there might have had the same complaint, or didn’t even know they wanted that feature.

In order to make impactful change through technology, technology must be in tune with the business/end users. If your end users are also technical then what better way to grow your software then to have a community of contributors submitting features they find useful.