The Frameworkless Movement is a group of developers interested in developing applications without frameworks. We don't hate frameworks, nor we will ever create campaigns against frameworks, but we perceive the misuse of frameworks as a lack of knowledge regarding technical debt and the availability of alternatives given by the vanilla language or by dedicated libraries.
Why the Movement
Every time a team uses a framework, it also takes a risk. The risk is that after some time has passed the team ends up with a tool that does not provide any kind of value anymore and that most of the times represents a major roadblock to change. Most importantly a framework could "die" way before the software uses it, leaving the developers with a heavy burden.
This risk is amplified without the presence of a strong bond between technical decision making, business goals, and user experience. Instead, the non-functional requirements like deadline, lifespan, budget, usability, future business scenarios and domain-specific constraints should be the primary decision drivers for the architectural choices as well as for the implementation roadmap.
What Frameworkless Movement is
Like we stated above, we don't think that frameworks are evil. They are very powerful tools, written in plain vanilla language and in a very generic way, a fact that makes them great learning tools which can help anyone learn how to code without them. In order to know how and when you should use a particular framework you have to understand how frameworks work. Understanding the strengths and the constraints of each framework will enable you to make the right choice of a framework. Even more, it will be very clear when you don't need one at all. Grasping the concepts of how frameworks work behind the scenes will deepen your knowledge about the language itself. Knowing the framework's rationale will enable you to write better code for each specific problem you encounter.
Nonetheless, we believe that a framework, when chosen, should be used responsibly throughout the life of the project. Continuously remind yourself that every tool has some kind of tradeoff.
Frameworkless means that you must give the right importance to the technological decision making and realize that the choice to develop a project or a single feature with no dependence on a framework is a real possibility!
Frameworkless also means that you must take into account the entire context where the software will have to "be born" and "live". Including the developers' skills who have to develop the software, deciding if they can get help from a framework keeping in mind the reasons that support this choice and its tradeoffs.
Finally, Frameworkless means that you should not assume that writing software is a responsibility you can afford to delegate elsewhere and depend on other software (a library for example) to solve a specific problem you have. You can avoid binding hand and foot to a whole framework when you don't really need it.
Our manifesto is published on our GitHub repository. We firmly believe that to be useful this manifesto should be modified during the time as a result of the conversations that our community will have. Thus, it will not be possible to sign this Manifesto. If you find this Manifesto useful for your work please share it with your network. Sharing is how we would like people to sign this document.
Is Frameworkless only for developers?
Because user research, design activities and business goals are those that more clarify the non-functional requirements we think it's important to put everyone who works on the project in our discussion, non-developers included. Every technical decision, including the choice of a framework, should be made considering every aspect of the context the software "lives".
We are gathering all the resources about the Frameworkless approach on this awesome list. Feel free to add any resource that you feel would be useful for our community.