[Zope] Zope 3 newsletter 8th edition

Gary Poster gary@zope.com
Thu, 12 Jun 2003 11:12:28 -0400


   Welcome to the eighth Zope 3 newsletter.  Information about Zope 3
   and newsletter contributions and suggestions can be found at the
   bottom of this newsletter.


   Encounter a term in this newsletter you don't know?  Try this
   glossary:  http://dev.zope.org/Zope3/NewsletterGlossary


  - Jim Fulton plans to lead a sprint in Fredericksburg, VA, in the Zope
    Corporation offices, June 21-23.  Spaces are still available. See
    http://dev.zope.org/Zope3/Fredericksburg2003Sprint2 for more

  - A number of talented Zope 3 developers are sprinting prior to
    EuroPython in Louvain-la-Neuve, Belgium, June 22-24.  See
    http://dev.zope.org/Zope3/EuroPython2003Sprint for more information.

  - Jim Fulton plans for a Zope 3 beta for end of June.

  - Jim Fulton is also scheduled to lead a sprint in Melbourne,
    Australia, July 9-13.  Spaces are still available.  See
    http://www.ozzope.org/OzSprintWiki for more information.

  - Note that some people's reports below have an "Older News" section:
    blame it on the newsletter editor.  We haven't had a newsletter since
    March 25.


   ZeOmega is converting all ZPTs and string constants in the Zope 3
   application subdirectory (zope.app) to make them i18n aware.

GUIDO VAN ROSSUM (PYTHONLABS, ZOPE CORP): Filesystem Synchronization

   This feature (abbreviated "fssync") lets you create a representation
   of a subtree of a Zope 3 server's object space on the filesystem, edit
   the files on the filesystem, and push them back to the server.  There
   is a command line utility which works somewhat like CVS that manages
   synchronization between filesystem and server.  The filesystem
   representation of common objects is natural and easy to edit: folders
   map to directories, page templates map to files containing the text of
   the page template, and so on.  Unrecognized objects are represented as
   a blob of XML.

   The command line utility is the script src/zope/fssync/main.py; invoke
   it without arguments to get help.  The README.txt file in the same
   directory has more project information, and links to Wiki pages.  It
   is possible to synchronize part of the site manager subtree
   (/++etc++site/) as well; the next stage of the project will be to
   extend the fssync machinery to allow installing and managing site
   management bundles (the envisioned primary mechanism for distributing
   Zope 3 software).



     The Pre-PyCon sprint was a great success! We got almost all tasks
     required for the Zope X3 release done. Page Templates are correctly
     hooked up to the Translation Services, the user's Locale is
     available in the request, translation of Python code is possible,
     the JobBoardI18n demo is updated and translation extraction tools
     have been written. The only tasks left to do is to implement the
     I18n support for ZCML, internationalize Zope 3 and translate it to a
     couple of languages. For a complete summary see


     I am working heavily these days on the Zope 3 Cookbook to provide
     some extensive and narrative documentation by example. All of the 10
     introduction chapters have been outlined and some recipes have been
     written. I am working currently on a section that builds a Message
     Board application from scratch. The cookbook can be found at
     http://dev.zope.org/Zope3/DevelCookbook and the example code is
     accessable via http://cvs.zope.org/Products3/demo/messageboard/. The
     book's content is currently placed under the Open Publication

     I recently had another Wiki cleanup session. The Wiki pages look
     pretty good at this point and most FrontPage linked pages are
     up-to-date. I am also pretty confident about pages having status
     badges, though there needs to be more work done in this area. For
     details see

   SQL TALES Expressions

     This is a little product that adds another TALES expression to page
     templates. SQL expressions allow you to write SQL statements in your
     page templates directly without the need for creating new SQL
     Scripts, connection services and database adapters. The used
     database can be either specified with a connection object name or by
     directly specifying the RDB DA and the DSM. Example::

         <html tal:define="rdb string:psycopgda; dsn string:dbi://test">
                 <li tal:repeat="contact sql: SELECT * FROM contact">
                    <b tal:content="contact/name" />

     Thanks goes to Alan Runyaga, who tickled the idea out of me. He was
     looking for allowing Zope to be more similar to PHP and other inline
     scripting tools, since they are more familiar to the Web scripter
     and therefore easier to learn.
     Link: http://cvs.zope.org/Products3/sqlexpr/

   ZWiki for Zope 3

     I have rently ported the core functionality of ZWiki to Zope 3.
     Thanks goes to Simon Michael for his help. ZWiki for Zope 3 supports
     Plain Text, STX and ReST as input types, can mail modification
     notification, and has parenting support. For more details see

     On this page you will also find link to three very positive reviews
     about the product!


   Mailing service

     Lately, we've been working on the transactionally-safe mailing
     service.  It's not yet there, but expect it in HEAD soon.  As an
     off-shoot of this project, Marius has written a proposal for a nice
     API for creating RFC822 messages, which would take care of things
     like MIME attachments and proper encoding of Unicode data.

   Authenticated user names in logs

     Albertas has traced and added a minor feature which was missing:
     authenticated user names in the HTTP access logs.  Need to know what
     the users are doing! <wink>

   Decorators (see also Steve's entry below)

     Marius has been pairing with Steve implementing decorators, but
     that's a separate story; besides, it was more than two weeks ago.

   Older news from Marius (April 16)

     One thing worth attention is the new functional testing framework.
     Functional tests can test large parts of the system as a whole by
     simulating the publication process in an automated way.  One of the
     immediate merits of the functional test suite is that errors in ZCML
     files will be immediately noticed.  If you're interested, you can
     find the documentation in doc/FTEST.txt in your Zope 3 source tree,
     and the FunctionalTestingFramework page of the Zope 3 wiki.

     Albertas and I have also been working on virtual hosting.  It is now
     basically working in conjunction with Apache rewrite rules.  We have
     already deployed it on some of our production systems.  There are
     still some rough edges, e.g. the Javascript tree in the ZMI is not
     yet aware of virtual hosting.  More details can be found on the
     VirtualHosting page of the Zope 3 wiki.

     BTW virtual hosting has full functional tests.  ;-)

     One of the things we use virtual hosting for is a product I've
     written called z3checkins.  It displays a list of the most recent
     changes made to the Zope 3 CVS repository, and you can add it to
     your Mozilla sidebar.  Check it out at
     http://www.codeworks.lt/zope3-checkins .  If you like it, thank
     Steve Alexander for the idea.



     With help from Marius, I implemented a prototype of Decorators.
     Later, Jim and I simplified Decorators and implemented them.
     Decorators are specific kinds of Context Wrapper that you use to
     separate the conetext-specific implementation of a some content from
     the plain ole' Python implementation.  So, a Folder class implements
     basic folder functionality, and its decorator,
     ZopeContainerDecorator handles context-wrapping, sending events,
     calling hooks such as the 'afterAddHook', and that kind of thing. In
     practical terms, you no longer have to adapt a container to
     IZopeContainer before using it. The equivalent behaviour with a
     decorator now happens automatically when the container gets
     context-wrapped. There's some preliminary documentation in

   __implements__ to implements

     With help from Philipp von Weitershausen, I converted almost all
     (about 350) of the uses of __implements__ in the Zope 3 code the new
     implements(...) syntax. In a lot of cases, the implements
     declaration was made shorter, or could be removed altogether.

   Context Wrappers

     Jim and I reworked context wrappers a bit, breaking out
     zope-specific functionality in to a separate subclass in
     zope.app.context. I also removed the ContextAware base class because
     it had unpredictable and implicit side-effects, which broke some xml
     code Martijn Faassen had just checked into CVS under Products3.
     Sorry Martijn! Shortly after, I wrote a new ContextAware base class
     that works in a more explicit and predictable way.

   Easier unit tests for local (placeful) components

     Jim refactored the PlacefulSetup code for writing unit tests. This
     made writing location-dependent tests much less painful.

   Event service bug

     I fixed a subtle persistence related bug in the event service. Kudos
     to Marcus J. Ertl for tracking the bug down.

   Older news from Steve (April 8):

     I rewrote in C the ContextWrapper code that was in Python. This
     resulted in much simpler wrapper code in Python. Now the unit tests
     run somewhere between 10% and 15% faster.

CHRISTIAN THEUNE (GOCEPT): Open source certification

   There has been a meeting with the TUEV-IT which is a German
   institution that is able to issue common criteria certificates. There
   is a sponsorship by the Mitcon GmbH who pays the fees for a EAL-1
   certification which makes Zope 3 the world's first certified open
   source product.

   The certification is in preparation and there will be a workshop in
   July where the first documents are drafted together with the TUEV and
   our people, who include Aroldo Souza-Leite, Steve Alexander, some
   other people and me. If you want to know more about the certification
   please see http://www.commoncriteria.org

   Stay zoped!


   I have been working on integrating Zope 3 with Zope 2 on a Zope
   Corporation customer project.  The project leverages ZCML to only load
   the parts of Zope 3 pertinent to the project.  Jim Fulton hopes to
   leverage this experience for a Zope 2 release in the fall of this year
   that incorporates Zope 3.


   Please send Zope 3 news, and newsletter suggestions and requests, to
   gary@zope.com, with "Zope 3 newsletter" somewhere in the subject line.
   As you can see above, casual and quick news items are acceptable and
   even desirable.


   The central place to find Zope 3 information is currently

   The Zope 3 mailing list is archived and managed at

   The Zope 3 development IRC channel, #zope3-dev at irc.openprojects.net
   is (strictly) for discussion of Zope 3 development issues.

   Newsletters are archived at http://dev.zope.org/Zope3/Zope3Newsletter