[Zope-dev] repoze.bfg

Chris McDonough chrism at plope.com
Wed Jul 16 08:13:51 EDT 2008


I've been working on a new web framework named (provisionally) repoze.bfg.

The relevant README is here: http://svn.repoze.org/repoze.bfg/trunk/README.txt

It is essentially a "Zope lite".  It is Zope-ish in that:

  - it uses a lot of Zope libraries and concepts (interfaces, some CA constructs,
    ZCML)

  - it uses graph-traversal-based URL dispatch.

  - by default it provides ZPT (actually z3c.pt) templates.

  - it provides built-in authorization facilities based on permissions
    and users/groups.

It is unlike Zope (variously 2 or 3) inasmuch as:

  - It uses a different publisher and authorization model.

  - It is heavily dependent on WSGI.

  - Its equivalent of the publisher doesn't attempt to traverse into
    *code* stored in the object graph.  All code is on the filesystem.
    The only thing in the object graph is "model" data.

  - It doesn't attempt to provide any server functionality.  This duty is
    left over to WSGI.

  - It doesn't provide *authentication* functionality (just authorization
    functionality).  Authentication is left up to upstream server/middleware
    (e.g. repoze.who).

  - It's not meant to be "plugged in to".  A repoze.bfg application is not
    a plugin to repoze.bfg (e.g. it's not a Zope2 Product).  Instead, a
    repoze.bfg application is just a Python package that happens to use
    repoze.bfg facilities.

  - The graph root is not effectively assumed to be a ZODB database.

  - It provides no built-in through-the-web management interface.

It's unlike Grok inasmuch as:

  - It doesn't try to hide ZCML for configuration.

If I were to characterize it succintly and informally, I migh say it's a bit 
like Django built around graph traversal dispatch instead of URL-based dispatch.

Speed is a priority.  A "hello world" template is currently clocking in at 
around 550 req/sec on my MacBook (including security lookups).

It's my intent to continue to develop it, along with a package named 
"repoze.lemonade", which will integrate repoze.bfg with ZODB and provide various 
persistence-related features (folders, object events, indexing and so forth).

In any case, I thought maybe some folks would be interested in 
using/contributing to it.  It can be checked out via:

svn co http://svn.repoze.org/repoze.bfg/trunk/

Thanks,

- C



More information about the Zope-Dev mailing list