Open source is gaining popularity throughout the world. It is being used throughout each software development lifecycle and has gained wide acceptance in organizations worldwide and is highly visible as it moves into the cloud. Whenever we need to fix a problem, it’s all too easy to reach for the nearest software library or package that seems to fit our needs. But one major challenge that each one of us faces is which open source software to choose from the widely available solutions? Most of us do not follow any systematic approach while choosing an open source tool, which leads to problems in the later stage of software development lifecycle.
We need to have some standard criteria to base our decisions on selecting a particular open source software as adding a problematic open source component may end up our product with a lot of obstacles in future which might increase the cost as well.
This blog will guide you with major key considerations while choosing the open source solution.
One major criteria for choosing an open source software is requirement fulfillment, i.e., whether or not the available open source software fulfills our software product development requirements. There are many open source software available with similar functionality, but what distinguishes them is the extra features they provide. One major mistake that most of us commit these days is of selecting an open source just by looking at the number of additional features/plugins it provides and most of the time those additional features do not even fit our needs.
An open source solution with lesser popularity and with very few key features/plugins that solve all our requirements will always be a better choice than the one which is popular and is providing hundreds of features but doesn’t serve our requirements.
One question we should always ask ourselves before selecting an open source software is that “Do we have the required skills to deploy and maintain that particular software?”.
There might be an open source software available which serves all our requirements and provides a lot of additional functionality, but we do not have the skill set to use that software. Choosing a software might require us to undergo some training that will have an additional cost involved, which altogether fails the agenda to use open source. Thus, we should always choose an open source software which can be used and maintained by presently available skill set. However, if learning of the new skill set serves all the requirements and it is actually worth learning which will help to reduce the project cost in future then one can go for it.
The user community is one of the largest resource available for an open source project. An active community always helps to move the project forward. The user community generally consists of people that use the software and in some way participate by answering user questions on reported bugs and feature requests. A good open source software always has a community of developers or active users who write code, detect and provide support to other users. It is the community that does most of the testing and provides quality feedback. One can rely on the community as a resource for an open source software to check its quality and reliability. The larger the community, the better support you are expected to get in case of trouble. Choosing a software with sound community support will always help you in future whenever you are stuck in fixing bugs.
Before selecting an OSS always look at its support available. A software with good quality support will always be more beneficial. Always check whether the open source software you selected has a good Community Support or not. Look if there are any active public groups or forums addressing user queries regarding installation or other bugs. Good community support will always help you fix problems which might occur in future.
Sometimes Paid Support is also available. One of the signs of the good quality software is the availability of the third party paid support. This will prove to be extremely beneficial when you get stuck in something very crucial which cannot be solved by community support. Selecting an OSS with paid support along with good community support will always prove to be a good choice.
Popular and good quality open source solutions always have good documentation. This can be a great indicator for the quality and support one can expect from the community. Generally, there are two types of documentation.
One is the User Documentation, which generally describes how to use the system. Sometimes there are different levels in the user documentation corresponding to different user levels and rights. For example, applications with administrator role may have different documentation for administrators. The available documentation should fulfill our needs.
The second one is the Developer Documentation that describes how to add or change the code. This documentation is very valuable if we intend to change our code in future.
Thus, always look for open source software with a good user and developer documentation.
Security nowadays is a crucial aspect in all the phases of software development lifecycle. For most of the OSS, the source code is publically accessible, so it is always easy to find vulnerabilities. Just by reviewing the code, the developer can find the vulnerabilities and can strive to fix it. It depends totally on the developer on how they respond to the found vulnerabilities.
There are few websites which you can refer while looking for software vulnerabilities, eg: http://www.securityfocus.com, https://secuniaresearch.flexerasoftware.com/community/research/, etc. We can check how serious a software is in regards to security by looking at its website and checking the release notes.
All OSS comes with a license which we should comply with. One of the most commonly used is the “copyleft”. Copyleft licenses, like the GNU GPL family, require the user to release the full source code and all of the rights to modify and distribute the entire code of the product. The license should always fit with the intended software use. For example, if you plan to alter and redistribute the software in some way, but you do not want to distribute the source code, in that case, go for a non-copyleft license instead of copyleft.
Thus, always look at the license first before choosing software.
Thus multiple factors should be taken into consideration before finalizing an open source software for your project and the one which fulfills maximum factors must be chosen.