What is a framework?
Frameworks in IT, their characteristics and their use in web apps
By Francesco Bonacini
In IT, when you decide how to develop a project software, you often come across the term framework and you discuss which to choose and which advantages or limitations they entail. However, it may be useful first of all to take a step back and ask ourselves:
What is a framework?
«[…] in software development, [a framework] is a logical support architecture […] on which software can be designed and created, often facilitating the developer’s programming.»
Wikipedia the free encyclopaedia, “Framework” article, Italian version
Let’s take a closer look at the definition we have just given. A framework should offer the tools to facilitate and speed up the development work of those who use it.
We should point out that the definition is purposefully generic. Let me give you a couple of examples of framework to better clarify this concept. Vue.js simplifies the interaction between the most commonly used web technologies: HTML, CSS and JS. NativeScript starts from written code using Vue.js (or other similar frameworks) and applies dedicated tools that allow you to translate everything into Android and iOS native mobile apps. Therefore, a framework simplifies the use of one or more programming languages and can manage different IT tools, such as other frameworks or software.
Frameworks adopt and implement design patterns to define how to solve the problems they were designed for. Once the architecture has been decided, other principles and logical rules are derived from it for a correct use of the framework itself: how to organise and name the files that make up the software, which technologies are required, recommended and not recommended, how to use the content of a file, what the best practices to follow are and so on.
If the person using the framework is strongly advised or forced to follow these rules, due to design choices, then that framework is opinionated. On the other hand, if it defines some guidelines, but leaves the user free to adopt the rules or not, then the framework is considered minimally or not at all opinionated.
With a well-defined structure, an opinionated framework can help the developer save time and effort in choosing the software and added guidelines to use, as well as assuring the respect of the rules. However, this rigid structure can become a problem when dealing with particular unexpected cases.
So, a framework performs the most common, yet essential tasks for the applications to work, allowing developers the freedom to concentrate on the creation of the most important functions of the product.
Which frameworks exist?
Up to this point we have spoken about the technical characteristics of a framework, but we haven’t mentioned many names.
This is because there are frameworks of all kinds: they may adopt different programming standards, be developed by companies or foundations and designed for one or more programming languages. As with every IT project, a framework can be developed and then abandoned and many of them are designed to meet the same needs using different tools and technologies.
Making a list of all the existing frameworks is impossible as well as useless. Consider for example that a company may develop its own framework and not even release it to the public using it exclusively for its internal projects. All we can do, every time, is to see if one that is suitable for our needs exists.
A few examples. .NET is a famous Microsoft framework designed mainly for C#, but it also supports other programming languages. Django and Ruby on Rails are two of the most commonly used web frameworks respectively for the python and Ruby languages, while Spring is one of the best for Java.
Many of the frameworks mentioned so far are designed to work with web technologies. Let’s look at this concept a bit more in depth. A framework is not necessarily used to work with the web: the abundance of these is due to the trend over the last ten odd (and perhaps even fifteen) years of making the apps usable online without requiring installation by the user (web app). However there are many frameworks that offer tools to create applications not based on the web that can be installed on the device that executes them.
Since we concentrate mainly on web development, we at Dreamonkey refer to Quasar, Vue.js and Angular as our frontend frameworks and we use Laravel for our backend development. To work with native platforms we are using NativeScript and we collaborate on a project for the creation of web component based on Stencil. Considering the speed of evolution of the IT sector, we are always open to innovation and the study of new technologies.
If you need to develop web projects and you are undecided on which framework to use, if you are using one of the frameworks that we have adopted and need some advice or you simply want to talk to us about our technological choices, don’t hesitate to contact us.