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

Market Acceptance

Construction Techniques

Our Background

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.

Market Acceptance

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.