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 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 information.
- 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.
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 http://dev.zope.org/Zope3/PyConSprint.
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 License.
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 http://mail.zope.org/pipermail/zope3-dev/2003-June/007246.html
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"> <body> <ul> <li tal:repeat="contact sql: SELECT * FROM contact"> <b tal:content="contact/name" /> </li> </ul> </body> </html>
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 http://dev.zope.org/Zope3/ZwikiForZope3
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.
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 src/zope/app/context.txt.
__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 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
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 PROTECTED], with "Zope 3 newsletter" somewhere in the subject line. As you can see above, casual and quick news items are acceptable and even desirable.
MORE INFORMATION ON ZOPE 3
The central place to find Zope 3 information is currently http://dev.zope.org/Zope3
The Zope 3 mailing list is archived and managed at http://lists.zope.org/mailman/listinfo/zope3-dev
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
Zope-Dev maillist - [EMAIL PROTECTED]
** No cross posts or HTML encoding! **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce