What Makes A Framework?

What if I tasked you to create a new web-framework. Something like Rails, Django, or Laravel. How would you approach this? Sounds easy at first, you’ll create an HTTP routing layer, a middleware layer, some form of templating, maybe some kind of dependency injection, maybe an ORM layer, and finally some way to manage the lifecycle of components.

But does that make a web framework? Do the combination of these components make the whole of a framework? Or does the essence lie somewhere else? Let’s explore and build a framework in Clojure.

Pre-requitise