Yesterday I mentioned James Bennett’s discussion of the two camps of Python framework design. Ian Bicking has responded to James and seems to disagree.
Quoth Ian in his Full Stack vs. Glue post:
In a recent post on Framework design James Bennett describes as a fundamental dichotomy in framework design
“full-stack” vs. “glue”. In this case, Django (which James works on) as a full-stack framework, and TurboGears and Pylons as glue frameworks. This is not a good way to describe the differences.
He then discusses “awkward glue and easy glue”, the “intent” of the pieces, and “coupled” versus “decoupled” frameworks. Read the whole thing.
I have to admit that I tend to agree more with James on this one.
Sure you can get all nuanced and discuss the subtle differences in terms for each program design element… but when it comes down to it, the glue vs. full-stack gets the point across. For better or worse, some frameworks glue together existing parts (e.g. TurboGears and Pylons), and some write the whole thing from the ground up as a full-stack (e.g. Django).
There is nothing inherently wrong with either approach. And if you ask me, having two competing ideas is a Good Thing. I’d expect the invisible hand to deliver us even better frameworks in the future. So does the nomenclature really matter?