Select a development framework it’s not an easy exercise, there are too much factors where we have to focus on.
Today they are popularly called “web frameworks”, name that to me is wrong, in a world where all is moving “mobile”. Let’s call it framework.
Other aspect is the target organization is a company, not a start-up. Here we have to convince people such: finance, business users, IT folks… This technical selection is part of an approved business case, with clear road-map.
With it, this is the initial criteria list we are going to use.
- Popularity and community size: this will tell you so much things. How many people accepts the concept and the way to implement solutions, how many available code is available and you do not need to write, how much forums are available to make your questions and pass the hurdles you find…
- Philosophy: the way of life of the open source project has to fit with your way of life, these aspects are essential during the evolution of the relationship between the given group of people using it, and the evolution the framework presents. Yes, relationship, this is like a marriage, you will have to live with the good and bad things of your new partner, so look for the partner that you can get along with.
- Sustainability / roadmap / scalability: We want to understand how the frameworks has evolved during the last years, how they have survived in a market where they have to attract community of people who has business issues. We want to understand if they publish a clear roadmap of their next steps for the core of the framework. We are going to build complex things, we want to know if we can build with a clear architecture and they provide all type of solutions that enable us to build our solution in an scalable way.
- Support: Look for how much channels of support you can access. This includes free forums, private companies offering their expertise, even check if the organization behind the framework provides support through their services or through a sponsor company. To review the sponsors list of the framework helps too.
- Amount/quality core upgrades: this will provide you information about how quick the project team reacts to changes, to pitfalls, how the cover security issues. Other thing is how each core upgrade affects to your system. This also gives you the visibility about how serious the people behind the framework is and how big their organization is. Quality is important too, for instance I have done thousand of core upgrades to WordPress and I never had an issue: this is my level of expectation.
- Technique (pattern): We are focusing here on the development pattern implemented by the framework itself. We can have freedom, MVC, POC,… what is the best thing for us?
- Security: This is very easy, 2 steps. First: What is the security requirements I have?; Second: Does this framework cover it?
- Documentation: how is the formal documentation offered by the framework, how much books are published about it, how much forums exist about “how to”, how well documented is the API.
- License: Not all open source licenses are the same thing, they are similar but it is important to understand the details.
- Availability of resources in market related to the framework: pieces of code, plug-ins, themes, people, servers adapted to this specific framework.
- Ability to integrate third party resources: a framework cannot attend all needs of the community, but it can enable the community to integrate the best pieces of software. This ability gives you how permeable/flexible is the framework, and how focused is the project team on their core capabilities. For instance, if the core of your framework enables JUnit integration as testing capability, you can focus the evolution of your framework on the core capabilities, offering the community how to cover testing needs with a trusted solution. If a framework has not clear differentiation in the market, it will disappear.
- Learning curve: This factor is more or less important. It could be the case you have a very experienced team and you do not care about it. It could be the case that you have so much attrition and you want to ensure that the market offers quick replacements through the hiring of junior people that quickly can be productive. It could be the case that it is relevant for you because the market offers you so much pieces of code that you can cover thanks to the community. It could be the case that easy learning means that when you want to implement complex things, the framework has limits, so it is not useful for you.