Thursday, 14 July 2011

Why Open Source?

Why open source? Why would you need the source code of a software, a library or a framework? To cut it short you may just scroll to the last paragraph or just continue reading...

Softwares, libraries or frameworks are usually intended to be used for the purpose of making something easier. So in perfect world no one should ever need to rework on that piece of code... Well not actually... Let's assume you are an end user (not related to any programing language) who had spend his hard earned money on a new computer. Even if you realize or not, you had already paid a vendor for an OS and also paid to some for a piece of graphics hardware which needs to have another piece of software (called driver) to run on your already paid OS. However in most cases you may end up with a situation in which those two softwares don't behave nice to each other. This situation might have easily been solved by each party or a computer geek who had bought same hw/sw bundle like you if there was a source to look for an error. Or lets say you are someone already related to software development (well probably, since you are reading this post) and you have been asked to develop something on a new sdk/library or a framework in which you end up with an error. This error is not necessarily been caused by that software structure but even if it is your fault, without being able to debug the source, you may not even realize it. Something similar has happened to a friend who had moved from .net platform to java to code something on sockets. He was a moderate developer who missed something but could easily find his fault when he debug the stream at byte level in the socket code, I still remember how thrilled he was to be able to browse the source. Also that software might also have a bug which you may have noticed and ask for a patch (or even patch yourself) if you had a chance to see the source. What about adding new or needed features to a software you had already paid for? (your ide or database or the mighty framework). What if there is something you need to add which is quite simple to code and would greatly improve your performance. Isn't that piece of software is something you had already purchased (or get free) just for similar purposes? Why now to be limited to less functionality while you can add more. 

Using open source software does not necessarily mean you should also give your code to everyone. Also open sourcing your software does neither mean you need to give away everything free nor your code can be copy/pasted by anyone. It just means you have a nice poetry to show and someone may add few lines if they need to extend something and also you can always have some idea on whatever you are running on.

Using a software without the source code is like getting a house without the permission to ever paint the walls. Once I wrote a comment to a blog about open source software (which had been quoed at his book) who was asking why would someone insist on open source even if he knew he would never look at the code? Well... Open Source software is like airbags, nobody buy airbags to really use them but you can never know when would they save you.