[Zope-dev] the Zope Framework project

Martijn Faassen faassen at startifact.com
Tue Mar 3 16:11:07 EST 2009


Hi there,

I thought I should highlight this characterization of the Zope project 
because I agree with much of it but also disagree with much of it.

Chris McDonough wrote:
> I have no faith whatsoever that staying on the course we've been on for the last
> 9 years (

9 years is a long time, and while I agree that some cultural 
deficiencies (bad presentation) have lasted a very long time without 
much awareness of them, other deficiencies we're aware of and we're 
making progress on.

> large interconnected codebase,

You might've noticed a certain effort back in 2007 to split up our large 
interconnected codebase into small components, and efforts over time to 
try to break the connections in this code base. I think we could've been 
further along the breaking connections if we'd have some people with an 
overview of what's going on and an active interesting in driving that 
effort forward.

Anyway, this is a characterization of where Zope technology is now, but 
it's a mischaracterization if you think that's where it wants to be or 
that no effort was spent on improving the situation.

> backwards compatibility at all costs,

I agree that have erred on the side of too much backwards compatibility. 
That increased the overhead of changes tremendously and blocked innovation.

That said, I also see a lot of value of having a lot of components that 
can work together, and we do have quite a collection of those in the 
Zope ecosystem. This is why Grok is so careful to stay compatible with 
Zope 3, so we can share that pool of components.

I'm in favor of an evolutionary approach where backwards compatibility 
on occasion is broken and it's clearly documented what developers should 
do to fix things. I'm also in favor of an approach where due to proper 
dependency factoring we can dump whole chunks of code (in particular ZMI 
chunks) in a large step.

> lack of any consumable documentation at a package level,

I agree that most package-level documentation could be improved 
tremendously by focusing on writing real documentation instead of 
half-test stuff.

That said, we also have a tremendous level of package-level 
documentation and interface documentation, and it's a 
mischaracterization of the values of the Zope project to say we haven't 
cared about documentation at all. We innovated with interface-level 
documentation and doctests and making those available on PyPI. You've 
said in the past that this is a sort of "false optimum" that stops 
people from really fixing documentation issues, and I agree.

We should make an effort to change our culture and redirect our 
documentation efforts to go beyond doctests.

I'll also note that documentation for the whole *system* has 
traditionally been lacking (how to get started, install it?). I know you 
don't like the whole Zope 3 system anyway, but it's also something I 
think we could improve (and we've been doing so for Grok).

> not much curiosity about how other Python web frameworks work,

I'm not sure whether this characterization is accurate or not. Because 
Zope was there sooner than many other Python web frameworks, it's 
probably partially true we've ignored the competition.

I've personally been quite interested in seeing how the cultures 
surrounding other web frameworks work and trying to adopt lessons from 
this. I've also played with some other web frameworks and used 
TurboGears 1 for real work, but not as much as I should, perhaps.

I've been able to apply the things I've learned from other web 
frameworks far better in the context of Grok than I have been in the 
context of the wider Zope community, and I wish that would change.

> not much real cooperation with folks that maintain other Python web frameworks, 

What is "real cooperation"? It's hard to judge this one, though we can 
definitely do better. I'd note that the culture of cooperation between 
other Python web frameworks has started really taking off surrounding 
WSGI, and we've been trying to make use of this technology but haven't 
had the full benefits yet.

Anyway, it's hard to say how much of a goal "real cooperation" should be 
for our community. I think we should do our best to integrate other 
technology in our own stuff, and we've had some progress with things 
like WSGI, Twisted and SQLAlchemy. Maybe Repoze is next, but I hear they 
think very badly of us indeed. :)

> a constitutional inability to attract new users

I share that concern very much. It's good that the Zope technology is so 
central to other projects which do attract new users so we still have at 
least some influx here. Part of the reason is our lack of attention to 
documentation, proper web presentation, and our "here's a giant toolbox, 
you figure it out" approach.

I'm not sure how the collection of libraries I dubbed the Zope Framework 
would operate in this regard. Individual libraries should present 
themselves to attract new users. At the same time the larger collection 
(the ball of 70something of them) tends to get new users through Zope 2, 
the Zope 3 app server and Grok. We should make sure that we are aware of 
these users and listen to them. We can also provide common 
infrastructure so that individual libraries can present themselves more 
easily, as well as point out their picture in relation to other related 
libraries.

Regards,

Martijn



More information about the Zope-Dev mailing list