[Zope3-dev] RFC: zopeproject

Philipp von Weitershausen philipp at weitershausen.de
Wed Jul 18 16:59:55 EDT 2007


On 18 Jul 2007, at 21:13 , Dieter Maurer wrote:
> Philipp von Weitershausen wrote at 2007-7-18 01:13 +0200:
>> ...
>> Imagine you're writing a GUI application. Without question you'd use
>> some sort of GUI toolkit (e.g. wxPython). Would you expect you would
>> have to hook into the the "wxPython application" as a plug-in?  
>> Isn't it
>> more natural that you simply write your application and just use the
>> wxPython *library* wherever necessary?
>
> Is this not the difference between a framework and a library?
>
>  An application uses a framework by hooking its components into
>  the framework.
>
>  A library is used directly -- only miminal hooking and callbacks
>  are used.
>
> I view GUI frameworks typically as plugging my application parts into
> the GUI (which triggers my application code) -- especially, if the
> UI is build by an UI-builder...

Good point. In a way, we're actually doing this. For example, our  
WSGI application gets called by PasteDeploy whenever the WSGI server  
receives a request. That's how we hook into the "Paste framework".  
Then, we don't really do our own URL dispatching. The Zope publisher  
does its stuff and simply ends up calling our view code. That's how  
we hook into the "Zope publisher" framework.

But then there are a bunch of things where *we* actually make the  
calls: assembling forms, calling a templating engine, etc. So, we're  
really doing both, using some frameworks and using some libraries.  
Maybe it's just a matter of where to draw the line. If some people  
(such as you) prefer to draw the line much closer to Zope-the- 
application, that's fine. I simply prefer to draw them closer to the  
loosely coupled libraries and frameworks.

There's a reason for that. Zope-the-application is a big hindrance  
for using standard Python technologies such as eggs, WSGI, etc. It's  
not that eggs are going to solve world hunger (pun intended) and WSGI/ 
Paste isn't the end of the line when it comes to deployment, but  
betting on those and actually working towards sharing even more  
technology I think is the best thing we can do to grow Zope.

I gave a lightning talk about this subject at EuroPython. I got  
several positive responses from Zope and non-Zoep folks, but the best  
was probably by Jacob Hallen who, if he ever has used Zope, probably  
wasn't a very enthusiastic Zope user. He said something along the  
lines of this: "It's good to hear that Zope is starting to be usable  
in bits and pieces, without having to buy into the whole Zope world."  
Now, I bet there are lots of Python developers out there who like  
Jacob have turned their back on Zope over the years exactly because  
of this buy-in.

>> Zope 3 has now been successfully split up into separate pieces:
>> individual libraries. I'd therefore like to propose an alternate
>> approach to developing web applications with Zope: the library one,
>> rather than the pluggable app one.
>
> I prefer the standard approach:
>
>   I see a framework -- Zope
>   and a large number of application components that plug themself
>   into the common framework.
>   The application, in fact a complete collection of mini-applications
>   is configured via objects in the ZODB and can be extended TTW.

Right. This is what Martijn Faassen aptly calls the "Zope 2000"  
development model. And it's probably about the farthest away from  
working together with other Python web frameworks and toning down  
Zope for an easier entry.

I'm not going to try to convince anyone to give it up, but I probably  
won't spend much energy in either promoting, maintaining and  
documenting it.



More information about the Zope3-dev mailing list