[Zope] Zope 3 newsletter 8th edition
Thu, 12 Jun 2003 11:12:28 -0400
WELCOME TO THE ZOPE 3 NEWSLETTER: ISSUE 8 (12 JUNE 2003)
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.
GLOSSARY FOR THE UNINITIATED
Encounter a term in this newsletter you don't know? Try this
- 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
SATHYA RANGASWAMY (ZEOMEGA): i18n conversion
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).
STEPHAN RICHTER (IUVENO):
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
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.
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!
ALBERTAS AGEJEVAS, MARIUS GEDMINAS (CODEWORKS):
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
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.
STEVE ALEXANDER (CODEWORKS):
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.
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
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
GARY POSTER (ZOPE CORPORATION): Zope 3 plus Zope 2
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
email@example.com, with "Zope 3 newsletter" somewhere in the subject line.
As you can see above, casual and quick news items are acceptable and
MORE INFORMATION ON ZOPE 3
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