Why do I use Zope 3?
Wed, Mar 19, 2008,
400 Words
I'm in the process of beginning a new project and I'm debating on what framework to use. Of course it will be Zope 3, but why do I use it. Well, it's sure something that has to do with these facts:
- it's open source, with a strong, mature community around it
- while it's still actively development, it has a stable API
- it's written in Python, one of the easiest and most powerful languages
- it's built around a component architecture, which means writing pluggable applications comes naturally
- solves the problem of publishing objects through the web
- everything is transaction based. You won't lose data with it, you won't get garbage data inside your database
- it has fast, configurable storages (ZODB, Relstorage)
- internationalization and localization is easy
- it's a library as much as it is an application server. When it's a library, it's very slim and as a full application server has a lot going on, including XMLRPC, ftp, webdav, sql connectivity, its own http server, etc.
- has a cool, extensible templating language (the Zope Page Templates)
- makes it extremely easy to create and store objects through ZODB
- has facilities to query for objects using indexed data, through zope.catalog and extensions
- writing a new catalog index is not an extremely complex task
- it has an event framework; no complex application should run without an event framework
- has advanced, flexible form libraries that can generate forms introspected from the models (zope.formlib, z3c.form)
- has advanced templating concepts and content placement, such as the pagelets and viewlets
- it's "enterprise ready": it's possible to load balance zope clients using ZEO or relstorage
- comes with extensible authentication and user sources
- promotes an extensible build system for applications (zc.buildout)
- follows python standards, for the most part: library packaged as independent eggs and while it's not built around WSGI, it has full support for it
- it can do document workflows (hurry.workflow)
- it has some very cool packages from the community:
- zc.table
- z3c.form
- Storm and sqlalchemy wrappers
- zc.resourcelibrary, z3c.resourceinclude
- z3c.pagelet
- lovely.remotetask
- grok
- gocept.registration
- z3c.traverser
- is very well documented
- it fits comfortably in my brain
Previous: A few ATReferenceBrowserWidget tips