[Zope] Zope 3 Newsletter: Issue 10

Gary Poster gary at zope.com
Fri Sep 5 10:46:52 EDT 2003


WELCOME TO THE ZOPE 3 NEWSLETTER: ISSUE 10 (5 SEPTEMBER 2003)

   Welcome to the tenth 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

NEWS SNIPPETS:

  - Be sure to read Stephan's release management news item, below.

  - Next "geddon" (big change to Zope 3, a la Armageddon) appears
    likely to be container-geddon, which in part is a parent- or
    context-wrapper-geddon.  In a big move from Zope 2 approaches,
    Zope 3 will not rely on context wrappers in the default
    configuration.  Objects stored in the Zope 3 ZODB will either
    implement an interface that allows their immediate parent to be
    stored as a reference, or be adaptable to a persistent wrapper
    that implements this behavior.

    The advantage is expected to be that references to other objects
    in the system can be much more Pythonic--foregoing storing paths
    in favor of actually storing the Python object references.  This
    should greatly simplify writing local services and other
    context- and Zope-aware machinery.  The disadvantage for some
    applications is that objects can then only have one traversal
    parent, and thus only one traversal path.  This limitation is
    expected to be mitigated, as necessary, with alternate
    configurations using context wrappers (which will still be
    available) or with other mechanisms such as proxies.

    Questions or concerns?  See
    http://dev.zope.org/Zope3/ParentGeddon or the other resources
    listed at the bottom of the newsletter!

PHILIPP VON WEITERSHAUSEN:

   ZCMLGeddon

     Jim's ZCMLGeddon had finally landed, so Stephan and I went
     through the complete source tree and converted all directives
     using schemas. The biggest benefit was that user strings in
     configuration (like titles or descriptions) are translated now.
     Other benefits are better extensibility, override support and
     cleaner meta-configuration code.

     I also made an attempt to get XML schema interfaces working
     again (support for it had to be dropped temporarily in order
     to advance with ZCML geddon). While I succeeded in doing that,
     my changes are slowly rotting in zcml-interface-field-branch. I
     had to do it in a branch since the change involved a few
     hard-wirings in zope.app which I wanted Jim to look at.
     Unfortunately, he was very busy with ParentGeddon at the time.

   i18n

     Now that we had quite a few MessageIDs coming from ZCML, it
     only made sense to go through the python code and
     internationalize it. Fortunately, Stephan took on that part.
     However, I was happy to help him translate all of Zope3 to
     German, once his work was done. I have also started translating
     it to Spanish, but as I am not a native speaker, help from
     someone who is would be greatly appreciated.

     Sidnei da Silva and Godefroid Chappelle started translations
     for Brazilian Portuguese and French, respectively.

   i18n and ZCML

     While translating, I found that a few English words like "View"
     or "Change" are ambiguous when used without a context. For
     example, "View" could both mean a view component or the "View"
     permission. While (sadly)  one word applies to them in English,
     the contrary is the case in most other languages.

     While Stephan first argued for different i18n domains, like
     zope_components, zope_permissions etc. (we currently have
     everything under one domain, zope), him, Fred and I came to the
     conclusion that using explicit MessageIDs was the better
     solution. While both python and TAL support setting explicitly
     MessageIDs, ZCML's i18n machinery didn't so far. For a
     directive such as::

       <permission id="zope.View" title="View" />

     I proposed the following syntax::

       <permission id="zope.View" title="[view-permission] View" />

     Martijn Faassen and Godefroid Chapelle rejected this idea,
     mainly because it created a new syntax and was incoherent to
     TAL's i18n support. Their suggestion was to be coherent with
     TAL and use i18n:attributes. Stephan and I however argued that

       a) ZCML isn't TAL

       b) namespaces have a different connotation in ZCML

       c) i18n is currently not part of the core ZCML machinery
          -- should it be?

       d) it would thus require major changes to the ZCML machinery
          -- again!

     The discussion drifted slowly away from the main issue (i18n)
     into a general ZCML discussion which is still going on. Shane
     Hathaway expressed his general doubts on ZCML usability and
     Martijn announced he will put some effort in studying ZCML's
     current usage and try to come up with improvements.

     While we appreciated this rich input concerning ZCML (even
     though it came *after* ZCML geddon), Stephan and I needed a fix
     for our original i18n problem, so we went ahead and implemented
     my proposal.  It seems the issue remains open. We are glad to
     have a fix for the problem now, but we surely appreciate
     suggestions on how to solve it in a more elegant way.

   Unused imports

     Having found many unused imports during ZCMLGeddon and the
     following i18n work, I took an hour to mock up Martijn's
     importchecker tool to produce grep-style output. The benefit is
     not only better readability of the output (above all: line
     numbers) but it means that Emacs now understands its output,
     making it a lot easier actually removing all of those unused
     imports.

     After I had successfully removed all unused imports from Zope3,
     I contributed my patch to Martijn. He promised to revise the
     code and make a release asap.

FRED DRAKE: Improved security for zsync checkouts

    The "zsync" client for Zope's filesystem synchronization support
    now makes it easier to separate authentication data from a
    checked-out copy of objects in Zope's database.

    New "login" and "logout" commands, modeled on those of CVS,
    allow authentication tokens to be stored in a persistent cache
    separate from a checkout.  This can be used to avoid storing the
    password as part of the URL used to check out an object tree.
    For example, to check out a portion of a Zope site without
    storing the password in the tree, "log in" to the site and then
    perform the checkout::

       % zsync login -u username http://example.com/
       Password for username at example.com:
       % zsync checkout http://username@example.com/some/directory/
       ...

    If *user* or *url* are omitted, the values are selected from an
    existing checkout in the current directory, if any.  If there is
    no checkout in the current directory but *url* is given, the
    user will be prompted for *user* interactively.  The only
    information used from the URL are the protocol scheme (HTTP or
    HTTPS), the host and port, and the username.

    The "logout" command removes an authentication token from the
    persistent cache.

ANTHONY BAXTER: A Zope 3 Catalog!

     As part of the Melbourne sprint, the catalog was implemented
     and hooked up to the existing indexes. There's both
     content-space and utility space catalogs. There's a simple
     query interface  provided, and the catalogs participate in the
     ObjectHub. There was also some refactoring of indexes to start
     pulling out common code - there's a bunch more to do on this,
     though.

STEPHAN RICHTER:

   I18n and TAL

     When internationalizing Zope 3 , we ran into some bugs with
     TAL's I18n  support. Thanks to Godefroid and Fred these are
     fixed now and backported into  Zope 2.7.0. After having
     actually worked with the Zope 3 I18n support by  translating
     Zope 3 itself, I am proud to say that Zope 3's I18n is
     superior  to many other systems I have seen. We also fixed up
     the extraction tool to be  much more flexible and to support
     explicit message ids better. Phillips section has more on that.

   Python <script> support in TAL

     I finally got around implementing a TAL "script" attribute to
     work. The  support was mainly written for scripters to give
     them a better entry point to  Zope 3. Here an example of what
     you can do:

       <script type="text/server-python">
         print "Hello World!"
       </script>

     and

      <p tal:script="text/server-python">
        print "Hello World!"
      </p>

     A more elaborate example would be:

     <html><body>
       <script type="text/server-python">
         global x
         x = "Hello World!"
       </script>
       <b tal:content="x" />
     </body></html>

     This support is currently only available in "Templated Pages"
     after you activate the hook using the "Inline Code" screen.

   TTW Development

     After Sidnei implemented "Mutable Schemas", I started work on
     (and finished) a  schema-based Content Component type for TTW
     development. Coming from the  user's point of view we also
     implemented a local Browser Menu Service, which  allows you to
     create new menus and menu items.

     Here is what you can do now in a package:

     1. Create a Utility Service.

     2. Create a Menu Service

     4. Create a Persistent Schema Utility (this begs to be
        renamed). Call it 'IDocument'. Add some fields.

     5. Create a Content Component Definition. Call it 'Document'.
        Find the IDocument schema and set it to the definitions
        schema. Make security assertions as desired. If you like,
        you can also adjust the menu  entry.

     6. Go to your Content space. There you should see a 'Document'
        object in the list of available Content Objects. As usual,
        click on it to create the object.

     7. Creating custom views is easy too. Go back to the default
        package. Create a  Page Folder. Tell it to provide views for
        'IDocument'. Create a view and  register it with the local
        Browser Menu Service.

   Documentation

     After a long break, I started working on the Developer's
     Cookbook again by  committing the 'SmileyService' into
     'zopeproducts/demo'. The first chapter on  how to write the
     global version of the service is already online; the local
     implementation recipe will follow soon.

   zope3.org

     While I made much less progress than anticipated, we made some
     great progress  this week. I finally got the access I need to
     the box (thanks to Matt  Kromer), so that I will be able to get
     the Web Server ready. I also plan to  install the z3-checkins
     product.  Other than that, I got a lot of valuable  usability
     feedback from Fred and Jim about the bug tracker, which I all
     incorporated in the latest checkins. Finally, Jim and I worked
     on a change  password screen for Zope 3, which ended up being a
     major refactoring and will  be checked by Jim soon. It will
     also provide a basis for general user  preferences.

   Zope 3 Release Management

     As you may know, I visited Jim in Fredericksburg last week.
     Instead of having a  mini-sprint with lots of coding going on,
     we purely concentrated on the Zope  3 Project Management side
     and writing up Proposals about some of the new  ideas. Overall,
     we created 5 or 6 proposals, several bug tracker entries and  I
     got a good overview of the outstanding tasks.

     Furthermore we discussed the Roadmap in great detail. Here I
     will only state  the summary. For more details in the future,
     you should see

 
http://www.zope3.org:8080/++skin++tracker/tracker/1/%40%40dependencies.html

     Summary: There will be a MS4 release that contains all the
     "geddons" in  progress right now. I hope that we will not need
     any more geddons after MS4,  since we will work towards the
     beta. Even though the release date really  depends on the
     community involvement, I think it is unrealistic to expect
     that release before mid-October 2003. From then on everything
     should be  downhill and Zope 3 can become more open to other
     developers as the core API  stabilizes and rough corners are
     smoothened out. The first beta will be  released once the
     fundamental application components are settled. I also hope
     that some major UI work will become visible before the first
     beta. A wild  guess for a release date would be mid-December
     2003. Beta 2 will represents  further work on the UI and
     concentrating on making Zope 3 a good development  environment
     by removing last quirks. Based on the UI work being done, this
     might be the last beta. If, however, UI work does not start
     before Beta 1, we  will have a Beta 3 that concentrates on UI
     polishing. After that we will gear  towards a 1.0 release.

   Call for Information Architects and Graphic Designers

     As stated in the section above, a lot of the upcoming progress
     of Zope 3 will  depend on the improvements to the Web user
     interface. Currently no-one feels  responsible about the GUI
     and you certainly do not want the developers doing this work!
     Do you? So please step forward and help us build a great UI.
     You  do not even need to know Zope 3 or Zope in general. If you
     are interested,  send a mail to zope3-dev at zope.org and we will
     get you started.

CONTRIBUTING

   Please send Zope 3 news, and newsletter suggestions and requests, to
   gary at 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.

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 occasionally archived at
   http://dev.zope.org/Zope3/Zope3Newsletter





More information about the Zope mailing list