Guidelines for Choosing Open Source Frameworks
Given the plethora of open source frameworks available today, some guidelines for making choices on what to use are helpful. Here we examine the following questions:
Build vs Buy
Open source vs Commercial
RJB has utilized both open source and commercial software frameworks during the delivery of solutions to customers. Here are some guidelines on how to choose frameworks to support your software development project.
This article is a brief overview of our experience and capability. We hope you will find it useful. For more information, or for advice on your software development project, don't hesitate to get in touch.
Topics covered in this article:
Judging the usefulness and longevity of infrastructure frameworks can be tricky. Here are some guidelines to consider:
"Not all infrastructure frameworks are created equal."
Build vs Buy
The option to build is often more expensive than the buy option, particularly when there is an open source option available. However, sometimes building makes sense e.g. when the component differentiates you from the competition, or when you are building "glue" code to link together off the shelf frameworks. Building is still a fact of life in today's market. Sometimes we're lucky enough to buy the package that does it all. More often we are linking together Off-The-Shelf (OTS) software with built in-house software. The key is to have a strong development team that can guide the delivery of the solution from a technical standpoint. One caveat to keep in mind is the customization factor for frameworks. If you expect to have an upgrade path, regardless of the framework you choose, try to keep customization of that framework to less than 15% of the code base. This rule of thumb may make the difference between an expensive upgrade to your current framework, being locked in to a framework with fading popularity, or being free to easily upgrade or switch to another framework down the road.
Open source vs Commercial
While open source is not synonymous with free, there are many good, freely available open source frameworks on the market. Some free open source frameworks have optional additional commercial features that provide an enhancement path for future. Be careful to observe licensing arrangements when using open source. Some licenses are restrictive in the way they permit integration with other software, and how they may be re-distributed. Commercial licenses may also have some restrictions in that regard. Regardless of whether you go with open source, or commercial, look for adequate documentation and support options. If you have your own IT department, that can help mitigate installation, configuration, and maintenance risks. If you don't have that luxury, you may want to consider using a knowledgeable consultant to help.
Sometimes there is more than one viable choice for a given infrastructure need. We need to consider current and future market acceptance as a criteria: To what extent has the framework been adopted in the marketplace? Who is the "backer" of the framework? What is their track record? Is there a strong development community? Are there developing standards that might displace a particular framework choice down the road? Beware of frameworks that lock you into other frameworks i.e. "all or nothing" paradigms. Look for frameworks that "play nice" with others, while observing the market acceptance and construction methods mentioned above. While making the best choice possible on the available information, be aware that chances are we may have to make changes at some point down the road to remain "best of breed". We want to be able to make those changes in the easiest manner possible.
Construction Techniques Used
The choice of technology, best practice implementations, flexibility toward future enhancements, conformance to standards, etc. help forecast the longevity of a framework. For example, frameworks that conform to standards and "program to an interface" are more likely to integrate easily with other frameworks. They can also be replaced more easily down the road (if necessary) with a more modern implementation. Likewise, frameworks with clear extension points or a "plugin architecture" have a better chance of evolving over time.