Frameworks are where we iterate on tomorrow's universal abstractions
The amount of complexity a single human programmer can handle is fundamentally limited. Until our brave cyborg future comes, even the best programmers can only hold so much in their minds at once. And the number of programmers that can productively work on a single project is limited by the N^2 communication cost of adding more people.
Therefore, the only way we can make programming go faster is to give programmers more powerful abstractions that encapsulate complexity. And this is in fact how the whole history of programming has evolved.
This is a slow and messy process, because an abstraction isn't great until it has both broad social consensus and mature implementations. The best abstractions are utterly taken for granted and are universally understood by large communities of people.
There is a bootstrapping problem here: abstractions can't be great until a lot of people share them, but you can't get a lot of people to share them until they're great. Frameworks exist to solve this problem.
A framework arises when a community of people agree to share some new abstractions. The abstractions are too new to be universal across all of programming, but they're universal within the community. This allows an ecosystem to grow as if the abstractions were universal, which is the best way to test their power.
In a sense, a framework allows a group of people to collectively share a simulation of one possible future of programming. And by tweaking the simulation, they can iterate toward abstractions that are good enough to truly become the future of programming. The community needs to maintain enough stability to let a rich ecosystem grow, balanced with enough innovation to jettison abstractions that don't work.
In the Ember community, our mantra is "stability without stagnation", and this balance has allowed us to ship ambitious capabilities like the Glimmer rendering library, Ember Fastboot, and EmberCLI while still maintaining a deep addon ecosystem and allowing even many of the biggest, oldest Ember apps to upgrade on a predictable schedule instead of being left behind.