As a solutions' architect, I love open source solutions and I love even more incorporating them into the business solutions that I'm designing. First of all, I don't want to reinvent the wheel, secondly I'd rather focus my dev time on implementing the actually business requirement as much as possible, the time gained by not building it yourself is a great gain for the business and the client. However, there are so many out there, it can be quite overwhelming and one must be careful when choosing one to use it in your production environment. The consequence of choosing the wrong one could result in the failure of your project in worst case or to cause delay, drive cost at best. I have a set of questions, the answers to which really helped me to make a sound decision.
- What are others saying about this solution?
- Like any other opinion, one must take it with a grain of salt. Be sure to listen to both the good and the bad. Either way can be exaggerated or partially true.
- Is the solution being successfully used in production by any sizable and reputable company?
- I don't know about you but I don't want my clients to be the guinea pig of an open source solution.
- What is the open source license the solution is under?
- I've seen open source solutions found on github that will actually require a license fee if you were to use them in commercial products. So be sure to read the license agreement before investing your time and energy into understanding how it works. Check out the terms of the different licenses here.
- Is the solution being actively developed/maintained?
- This one actually goes hand in hand with the first one. The more people use it the more actively and better it is maintained.
- What does the source code quality look like?
- Go clone/download the source code and the look at the quality of the code base. One really good indicator is the test coverage and of course reading the code itself.
- How well is it documented and how well is the documentation is updated?
- Obviously this is huge, without it you might as well rewrite the solution yourself.
- Is there a good community / support group for it?
- Being open source, you'll need questions answered quicker than you can find it on your own. Otherwise, your productivity would be shot!
- Who is behind the project?
- For instance, Google is behind AngularJS and Microsoft is behind a bunch of open source initiatives.
- This is good indicator but not always the case so this should be weighed by the answers to the other questions. Big companies are known to pull plugs on projects open source or not.