What is Open Source To Me?
I like the whole concept of open source where everything is open and anybody can use/modify it. One of the greatest advantages open source has is it continuously gets assessed and improved. People from all over the world use open source softwares, find bugs and report them and people from all over the world improve it. I have great faith in open source community and I am proud to be an open source user and contributor.
I have been using open source softwares for few years now and most of them are open source. From VLC, Rhythmbox to LibreOffice, OpenCV, Python, I have been using open source softwares. It’s kind of difficult to choose one as each of them has its own functionalities and jobs. I have been using OpenCV for around two years now and I have seen OpenCV evolve from a small library to a huge necessity. It started small with C and few modules and algorithms implemented. Now, it has converted into this giant which provides Python, Java, C++ libraries. I have browsed through its source code and have modified it a bit for my use and I have witnessed shear brilliance. The way python bindings changed from swig to Python/C API, it has changed my whole view point towards design of the code.
MATLAB is a similar software to OpenCV with many more modules, but what it lacks is speed and not to mention it MATLAB costs a lot. MATLAB is comparatively very slow in front of OpenCV and has less Computer Vision functionalities than OpenCV. OpenCV being open source has greater community with better support and not to mention forums.
A well thought open source developer always thinks about future and the scope of the software. A new piece of code must not break any part or entire software. Always think about users, compatibility and portability of the software. The product must work on all the platforms with bare necessities. Adding more dependencies is always a bad idea unless there is no way out. But the product must be developed in such a way that even if the user doesn’t have all the required dependencies, the product should work and be able to produce output where certain dependencies are not required. A newer version must not break the products which used older versions.