Ian Bicking: the old part of his blog

Re: What Really Makes Rails Work

A small comment if I may...

It seems that the fundamental difference between Zope and all the other web frameworks I know of is simply that all the others are not frameworks.

A framework expects you to embed and extend inside the framework, its metaphors and its design decisions. A library expects you to access it externally, and if you do not like its design decisions, it does not matter that much because you are insulated from the library by a fairly well defined interface.

For a Windows analogy, most Pythonistas seem to prefer libraries, probably for the same reason Word is seen as a COM "server" more often than a COM "client" - its a lot neater to control Word from python and shove any data it needs in than it is to use Word as control point and create Python objects to serve it.

And so we tend to avoid frameworks in a similar way most of us avoid developing for Word.

cheers

Comment on What Really Makes Rails Work
by paul

Comments:

I think your comment illustrates quite nicely the suggestion that Zope was the original Web success story for Python, but it evolved into a parallel community and left a vacant spot for another compelling solution. And if you're making the point that I think you're making, you might be onto something about how people shy away from sophisticated frameworks with lots of opportunity to embed and extend inside the frameworks themselves.

Although badly designed libraries can be limiting, libraries are almost indisputably the most successful units of reuse around. Moreover, conventional libraries (where you call in and get results straight back) are very easily understood by most people; in contrast, many developers become uneasy when confronted with things like callbacks, even though such things are fairly straightforward in Python.

Like GUI programming, Web programming already employs an event-style model which people find disconcerting. Adding more magic on top, and thereby not giving straight answers to people about how their framework objects come into being and how they get called, just makes it more of a burden to use a "conceptually heavy" framework. If people are serious about offering an easy way into Web development in Python, they will need to throw out as many of the caveats and the magical framework incantations as possible.

# Paul Boddie

If people are serious about offering an easy way into Web development in Python, they will need to throw out as many of the caveats and the magical framework incantations as possible.

From my cursory look over Rails I see a lot of Magic and from the docs I see the phrase "Magic is not inherently a bad word". Egad! These people believe in Magic, savages!

But perhaps your point is to remove framework-specific incantations and boilerplate and if so, I agree with that.

Personally I think a Python version of Rails isn't possible because the Rails developers are willing to do something alien to Pythonista's, that is, break our "Explicit is better than Implicit" creed and create a domain-specific language for Web Applications.

Admittedly, the history of this kind of magick in Python isn't encouraging. Zope and it's Aquisition turned off a whole section of the Python community.

So I think the problem is philosophical. It hardly matters that Python isn't quite as good as Ruby for creating these domain-specific languages (and it isn't, we must admit it) because doing so runs contrary to the principles we as pythonistas hold dear.

Making something with as much utility as Rails would mean standing up and saying (gulp!) :

"Implicit is better than Explicit (in specific domains)"

Can we do it?

# Ian Sparks

"But perhaps your point is to remove framework-specific incantations and boilerplate and if so, I agree with that."

That was exactly my point. I've looked at a lot of frameworks over the years, but now if I see anything which imposes arbitrary behaviour, then I just hit the back button, and I think people get put off by seemingly arbitrary restrictions encoded in special ways. I'm trying not to be too controversial here, but if you look at various object publishing mechanisms, you see two things: that the developers assume that a rigid hierarchy is how everyone wants to design their applications; the various ways of telling the framework about exposed objects. Clearly, due to Python's introspection capabilities and the potential for security breaches (ask anyone who has written an object publisher about that) you need the special notation and it needn't be too intrusive (although Quixote's notation seems a bit contrived), but I can't help feeling that many people are thinking, "Hold on! I'm not sure if this even suits me."

It's a similar story with templating. Whilst some of the PSP solutions can be quite productive, if you don't believe it suits your application then the whole thing is going to be a turn off. It's interesting that the most actively developed PSP solution of them all, CherryPy, backed away from special template languages in release 2.0.

"Personally I think a Python version of Rails isn't possible because the Rails developers are willing to do something alien to Pythonista's, that is, break our "Explicit is better than Implicit" creed and create a domain-specific language for Web Applications."

Yes, and Ruby probably supports that quite well. But as you note...

"Admittedly, the history of this kind of magick in Python isn't encouraging. Zope and it's Aquisition turned off a whole section of the Python community."

...it may be the case that Rails eventually is to Ruby what Zope is to Python: something that lives alongside the creation which spawned it.

# Paul Boddie

Why arguing about which of the two of the greatest products should come first?

To me, zope2.x seems harder to modeling/manage enterprise-sized application while 3 seems making routine-task a lot harder for a new-comer than how it can be done with 2.x's ZMI. --Just like in Linux world, some prefer GUI while others value CLI.

Can't they co-exist and collaborate?

Wouldn't it be nice if the future zope3 combines the simplicity of configuring objects with zope2(through its ZMI) and having better capability of handling M/C/V with its current underlying framework?

P.S. I am by no means an expert in either zope or python, so hope you guys don't mind, just trying to make a point here :)

# Michael Lee

To me, zope2.x seems harder to modeling/manage enterprise-sized application while 3 seems making routine-task a lot harder for a new-comer than how it can be done with 2.x's ZMI. --Just like in Linux world, some prefer GUI while others value CLI.


That was exactly my point. I've looked at a lot of frameworks over the years, but now if I see anything which imposes arbitrary behaviour, then I just hit the back button, and I think people get put off by seemingly arbitrary restrictions encoded in special ways. I'm trying not to be too controversial here, but if you look at various object publishing mechanisms, you see two things: that the developers assume that a rigid hierarchy is how everyone wants to design their applications; the various ways of telling the framework about exposed objects. Clearly, due to Python's introspection capabilities and the potential for security breaches (ask anyone who has written an object publisher about that) you need the special notation and it needn't be too intrusive (although Quixote's notation seems a bit contrived), but I can't help feeling that many people are thinking, "Hold on! I'm not sure if this even suits me."

# fha forclosure homes

Personally I think a Python version of Rails isn't possible because the Rails developers are willing to do something alien to Pythonista's, that is, break our "Explicit is better than Implicit" creed and create a domain-specific language for Web Applications.

# rhodes furniture stores

A framework expects you to embed and extend inside the framework, its metaphors and its design decisions. A library expects you to access it externally, and if you do not like its design decisions, it does not matter that much because you are insulated from the library by a fairly well defined interface.

# louis vuitton replica luggage