On Sun, Sep 7, 2014 at 4:44 AM, Milind Khadilkar <zedobj...@gmail.com> wrote:
> Thanks, Thierry.
> I think the real problem with ZCA and ZCML is "bad press". We did not face
> any ZCML problem when we worked on the Zope3 projects. It was later,
> thankfully, that we came across the negative opinion. ZCA did require a
> mindset change for some, but more often than not it has helped them in their
> future work on other platforms too.
> But that was 10 years ago... Don't know about now.

I'm proud of the ZCA in many ways, but:

- ZCA was designed for problems that most people don't or shouldn't have,
  which is making a complex application pluggable.

  If your application is complex, that's a problem


- In the Zope 3 project, we used the CA way more than we should
  have. Initially, this was to prove that we could.  Once we were
  convinced that every (damn) thing could be pluggable we should
  have stopped and simplified, using the ZCA only where needed.
  Instead, we'd established a culture of crazy levels of indirection.

- Outrageous indirection in the base system made starting new projects
  either super difficult, an exercise in cargo-cult-programming, or both.

  I've come to the conclusion that any framework that requires or
  encourages its users to use project-templates or project-setup
  wizards isn't something I want to use.

I stopped using Zope 3 several years ago when I realized that the
weight of the framework wasn't justified by it's benefits, at least for

I've decided that I'd rather use decoupled frameworks that, ideally,
are simple to learn and use individually.  That's why I use bobo now,
http://bobo.digicool.com. A more conventional choice along the same
lines would be Flask, although I think bobo is simpler. (Of course, I'm
biased. :)

I still use the ZCA, especially zope.event, but in a wildly lighter-weight
fashion than I did in Zope 3.

Part of the reason I prefer simpler server frameworks today is that
Web applications are far more client centered today than they were
when I worked on Zope 2 and even Zope 3.  Today, for applications
(as opposed to content *sites*), UI logic, including templating, mostly
happens on the client, and web servers are largely REST/RPC/Database


P.S. If you find the ZCA interesting, you should check out Scala and it's
       implicits and type-level programming. It does many of the same
       things as the ZCA at compile time. It's crazy beautiful and evil all
       at the same time. :)

Jim Fulton
Zope3-users mailing list

Reply via email to