4 ms·
Having been living in the Django world for a while now, I knew what the title was referring to. I disagree with the author, however. I think that magic is a ba
by teilo 17y ago
Having been living in the Django world for a while now, I knew what the title was referring to.
I disagree with the author, however. I think that magic is a bad thing, but this is really an in-house debate. Django and Zope are on the extreme ends of the spectrum of Magic to non-Magic, and I have worked in both frameworks.
Magic does not necessarily mean "poorly defined" as some people presume. Zope does an excellent job at defining the magic that it does. I just do not like the concept of a framework that changes the essential nature of the language in which it is written.
I think of a framework as a way to avoid writing the 80% of the code that any given web application needs. One could say, well, that 80% is magic, because it just happens, but there is a fundamental difference between a framework that changes the nature of your code, adding behavior that you would never suspect from the language itself, and a framework that provides functionality that you either invoke, or add to.
Magic is great for some people, but a real PITA when you don't want the magic to happen in the way it does. Suddenly you find yourself delving deep in to the guts of the framework, reverse engineering the decisions made by the developers, finding workarounds. Suddenly the magic becomes an impediment - you are now expending much time and effort working through a system whose entire point was to save you time and effort. The framework is no longer the elegant helper taking away a lot of work that you would otherwise have to do. It IS the work you have to do.
Again - this is an in-house debate, and no doubt a die-hard Rails developer will disagree, as is their right. But for me, I much prefer as little magic as possible.
- pcc 17y agoWith reference to Zope: it should be noted that the Zope 2 of old and the modern Zope 3 are themselves on opposite ends of the magic/non-magic spectrum. The Zope community learnt many lessons from the magic used in Zope 2, and radically altered the fundamental patterns for Zope 3 away from magic. These days people who live in Zope 2 environments (eg Plone) make extensive use of Zope 3 technologies and patterns via the Five (2+3) bridging mechanism. Ie, in the Zope world at large, "non-magic" is now considered best practice; its not fair anymore to consider today's Zope a framework that changes the essential nature of the language. Its been interesting to see the initial Rails elation getting tempered later by grumblings about the pricetag of such magic; the Zope world had gone through the same thing but a few years earlier. Today's Zope has already learnt from this and moved on. In fact the community has even been able to combine some of the philosophies of Rails (eg avoiding XML sit ups) with the Zope 3 paradigms, to create the Grok framework which remains wholly Zope 3 compatible. This really has the potential to strike a good balance.