Over the past few years there has been tremendous progress in making many components and solutions available in the open source markets like CodePlex, SourceForge, or even individual blogs and sites. Many of these are community driven projects supported by individuals, with some by commercial companies. For some reason many companies avoid or strictly limit allowing these solutions to be installed or used. When approached properly I think these solutions should be considered. This article will cover the advantages as well as outline an approach to make take when evaluating which solutions to install and how to test them.
The first advantage of implementing any solution is that it should make it much quicker to solve a business problem. In some cases it might be a complete solution, like commercial software components, but at the very least it should act like an “accelerator” offering you a springboard to the final solution. One advantage that it has over commercially packaged systems is that you have the source code in case changes, additions, or fixes need to be made.
Another advantage is that it can expose the development team to different coding techniques so that they can better address similar problems in the future. Microsoft has been providing sample databases and applications for years for this very purpose. People tend to learn more by seeing examples in action versus class diagrams.
Review Project Status and Activities
Not all solutions are of the same quality and grade. In some cases there are a few quick samples while in others there was a more formal project with full QA that has gone through multiple release cycles. It is therefore important to review things like the product status and release number. It is also important to review the Issues log to see how much activity there is and how quickly issues have been addressed. You can typically get a good idea about how widely it is used. In some cases you may be familiar with the developers which offers the advantage of discussing questions and issues directly with them.
Approach to Testing
To increase your chance of success and mitigate risk, it is important to always fully test the components to meet both functional and performance testing. With commercial software the expectations are normally pretty high, but I would approach this as if a member of the project team produced it even if no changes were made. This includes specialized testing like the “DisposeCheck” tests typically done to custom code that interacts with SharePoint’s API.
When expectations are properly set, and the solution is fully reviewed and tested, including these open source solutions can contribute to the team’s ability to effectively deliver solutions quickly.