It isn't a false dichotomy. Inside of vs on-top-of. Or, you can say that framework code is lower in the stack frames. Or, you can say that you must make your code comply with the framework's execution model. Or, you could say that the framework supplies the organization and you provide the customization.
From this perspective, underscore.js presents an Enumeration framework. However, it is usually a couple stack frames deep and still way at the leafs of your code paths. Backbone.js is clearly a framework -- it describes your data model plumbing and interactions and provides the bindings and pipelines -- this structure dominates the organization of your code and program flow. Nothing about underscore's utility functions have this "infectious" or "dominating" characteristic.
From this perspective, underscore.js presents an Enumeration framework. However, it is usually a couple stack frames deep and still way at the leafs of your code paths. Backbone.js is clearly a framework -- it describes your data model plumbing and interactions and provides the bindings and pipelines -- this structure dominates the organization of your code and program flow. Nothing about underscore's utility functions have this "infectious" or "dominating" characteristic.
I used to maintain: https://twitter.com/FrameworkvsLib