[Zope3-dev] Third Zope 3 (mini-)Newsletter

Gary Poster gary@zope.com
13 Nov 2002 12:00:12 -0500


WELCOME TO THE ZOPE 3 MINI-NEWSLETTER: ISSUE 3 (13 NOV 2002)

  Find out what's going on in Zope 3 development, then contribute your 
  opinions, your experience, and your code to one of the most exciting 
  Open Source projects going.

  Most news is submitted.  Tell us what you're doing!  Send anything 
  from a sentence to a few paragraphs about your latest efforts, be 
  they code, documentation, research, or design, to gary@zope.com.  

  I'll send one of these out whenever we have enough to warrant it--
  just two or three submissions are enough--and I'll also specifically 
  request news from the zope3-dev@zope.org group once a month.  I send 
  them to zope@zope.org and zope3-dev@zope.org (subscribe at 
  http://www.zope.org/Resources/MailingLists), announce it on the front 
  page of zope.org, and archive it at
 
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Newsletter

LITE 'N' EASY GLOSSARY: 

  Each newsletter begins with a high-level glossary that might help you 
  understand a bit about what's going on with some of the announcements.
  Want to help others get a grasp on your favorite Zope 3 (or pertinent
  Zope 2) concept?  Send in a definition, or request one, or fix these.

  Starred (or italicized) items have definitions also in the glossary.  
  Only terms discussed in this newsletter or newly submitted or 
  corrected terms are included here.  For full glossary, see
 
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/NewsletterGlossary
  
  This glossary contains a number of corrected definitions from the last
  newsletter that are otherwise not pertinent to the news--blame the 
  editor! :-)
  
  [PRELIMINARY, from Steve Alexander]
  CachingService: Right now, the caching service is for caching data so 
  that the cache is common to all the threads in Zope. An example of 
  data cached like this would be the results of calling an SQL method.
  Different cache implementations can be plugged into the Caching 
  service. Currently, there is one implementation that works like the 
  Zope2 Ram Cache Manager.  The scope and functionality of this service
  is under development.
  
  [CORRECTED]
  Placeful: An adjective describing an object that has a *traversal
  context* in Zope.  For example, an object is placeful if it can be
  reached by traversing a URI path, be it "/myObject",
  "/myFolder/myObject", "/myFolder/myNonZODBConnection/myObject", or
  "/++etc++Services/Packages/default/myErrorService" (the last example 
  is a hypothetical *placeful service*).  More technically, these 
  objects are wrapped, mostly invisibly, with one or more
  "Zope.ContextWrapper"s, which provide the ability to get contextual
  information similar to aq_parent etc. in Zope 2; moreover, following
  these nested wrappers to their ultimate (top or root) context must
  reach the top (root) Zope object (i.e., the object found by traversing
  the path "/").  Note that the correct usage of context wrappers should
  actually use the methods in Zope.Proxy.ContextWrapper, which also
  provide and handle security proxies.  Opposite of *placeless*.
  
  [PART OF PLACEFUL CORRECTION]
  Placeful Service: a *service* that is *placeful* and is pertinent only
  to the Zope traversal branch (or "folder" and all children) in which
  it resides.  This usually means that the service resides in the *ZODB*
  (and so is *persistent*). Similar to standard programming "local"
  concept of variables in that a placeful service's scope is restricted,
  where the scope in this case is the scope of a traversal branch. A
  placeful service is usually obtained by using a traversal context: in
  Python, after importing Zope.ComponentArchitecture.getService,
  one would use 'getService(myTraversalContext, "Events")' to get a
  placeful event service, where myTraversalContext is another placeful
  object.  Note that if a placeless event service is not installed
  within the traversal context, a *placeless service*, if such exists
  with the requested name (such as "Events"), will be returned.  
  Opposite of *placeless service*.
  
  [CORRECTED]
  Placeless: An adjective describing an object that does not have a
  traversal context, and usually is not intended to have one.  This
  usually means that one cannot traverse to such an object via any URL
  path, for instance.  Technically, it also means that these objects do
  not have nested "Zope.ContextWrapper"s that resolve eventually and
  finally to the root Zope object (i.e., URI path "/") and, in fact, in
  all to almost all cases, means that they do not have any 
  ContextWrappers at all.  Opposite of *placeful*.
  
  [PART OF PLACEFUL CORRECTION]
  Placeless Service: a *service* that is *placeless* and is available to
  any object.  This usually means that it does not reside in the *ZODB*
  and is not *persistent*--connections to placeless services, therefore,
  usually must be made on every Zope startup, and are often controlled
  through *ZCML*.  Somewhat similar to standard programming "global"
  concept of variables, in that they are not restricted by any scope,
  where scope in this case is the scope of traversal context (that is, 
  the context of where an object is found in Zope via URI path). A
  placeless service can be obtained (if one by the requested name is
  installed) in Python by importing
  Zope.ComponentArchitecture.getService and then calling
  "getService(None, 'Events')"--that is, the traversal context
  (first argument) is None.  Opposite of Placeful.
  
  [REPEAT]
  ZCML: Zope Configuration Meta Language.  The XML language that is the 
  file-system configuration tool for site administrators.  One uses it 
  to declare new Zope 3 products, new services, new views, and so on.
  
NEWS SNIPPETS:

  * Jim Fulton wrote a preliminary Zope 3 roadmap: see 
   
http://cvs.zope.org/Zope3/doc/ROADMAP.txt?rev=HEAD&content-type=text/vnd.viewcvs-markup
    This is maintained by Godefroid Chapelle and Tom Deprez.  If you 
    head a project on Zope 3 and have not yet contacted Godefroid or Tom
    with information about where your Zope3 job is situated, what the 
    status is (level of completeness) and, briefly, what the project's
    definition is, please do so when you can.
  
  * Many of the news snippets are covered in Martijn's discussion 
    below.  Workflow and UI got particular attention in the mailing
    list lately.

MARTIJN FAASSEN: Infrae Content Management Sprintathon Update

  The Infrae Sprintathon in Rotterdam, the Netherlands, will have about
  30 developers present (if everybody makes it). This is great! It's
  also a rather dauntingly large number. We've stopped taking
  applications; you can still try (mail faassen@infrae.com) but you'd
  better have a very convincing reason on why you should be joining us
  (for instance, you work for Zope Corporation).
  
  Having such a large amount of developers present means the preparation
  needs to be very good, so that we won't waste precious time at the
  event itself and avoid utter chaos. We're going to be strict about
  this, so do read the wiki page about this here:
  
   
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CMSprintPreparation
  
  We have several project teams and not everybody has joined a project
  yet. So hurry and join one -- here's the hype!
  
    * Workflow. The very active workflow team seems to be full of
      workflow gurus; they seem to be writing their fourth workflow
      system or so. If you're not a guru then this may be a great
      opportunity to learn more about workflow!
  
     
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CMSprintWorkflow
  
    * Documentation. The documentation project will be working on
      providing stand-alone narrative documentation for Zope 3
      developers. Writing documentation is a great opportunity to learn
      more about the way Zope 3 works. It is also a good opportunity to
      influence the design of Zope 3 by writing what Jim calls "science
      fiction" documentation -- documentation of code that does not yet
      exist.
      
      The documentation project also has an interest in generating
      documentation from the current codebase.
  
     
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CMSprintDocumentation
  
    * Searching. Struggling with the ZCatalog in Zope 2? Think there
      should be a better way? Here's your opportunity to make your life
      better in Zope 3. EventService! ObjectHub! Learn more about them
      and improve life for future generations.
  
     
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CMSprintSearching
  
    * User Interface. Everybody likes to talk about it. Everybody has
      ideas. The User Interface project will be laying the groundwork
      and will actually do something about it. Join user interface
      experts in our user interface team!
      
     
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CMSprintUserInterface
  
    * User Management. Zope 2's user management system is, out of the
      box, rather simple. In order to really do something you need to
      install one of the many extension products. Now the challenge is
      to take the lessons learned from these and build a solid
      foundation for user management in Zope 3. A concrete
      get-your-hands-dirty project.
  
     
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CMSprintUserManagement
  
  For regular updates see the main page about the sprintathon:
  
   
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/InfraeSprintathon
  
  The CodeWorksSprint in Vilnius, Lithuania will be held in the week
  after the InfraeSprintathon.  Several people present at the
  sprintathon will be at this sprint as well, including Jim Fulton. See
  this page for more information:
  
   
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/CodeWorksSprint

STEVE ALEXANDER: Logger, cache manager, and bug fixing

  I fixed up the components that log http and ftp requests: the 
  interface and implementations were out of synch.
  
  I've been helping CodeWorks out with their CacheManager work.
  
  Brad at CodeWorks found a curious security bug, which we tracked down 
  to some problems in ZopeSecurityPolicy, and successfully fixed.

R. DAVID MURRAY: ZCML documentation, doc tools, and polish

  I checked in my changes to Zope.Configuration (the zcml parser) to
  allow directives and attributes to have description strings attached
  in the meta.zcml files, and a utility to extract those descriptions
  into structured text files following the format laid down by Steve
  Alexander in the doc/zcml/namespaces.zope.org documentation.
  
  Now all we have to do is get all the meta.zcml files updated to
  include descriptions.  The doc tool (makezcmldocs) prints error
  messages to stdout if a directive or attribute doesn't have a doc
  string (it tries to guess the directory the directive is defined in;
  most of the time it gets it right).  I'll work on adding proper
  description strings as I learn various modules, but it's a non-trivial
  job and help would be welcome.  Take a look at
  Zope.App.ContentDirective/meta.zcml for an example (or the first part
  of doc/zcml/meta.stx).
  
  Note: if you change a meta.zcml file over to the "new style", you
  will probably have to update the module's tests by inserting
  
    XMLConfig('metameta.zcml',Zope.Configuration)()
  
  before the corresponding line in the unit test setUp that loads
  the module's own meta.zcml file.
  
  After a mailing list discussion, I also simplified the
  Zope.Configuration by eliminating the top level 'directive'
  directive.  Directive definitions now *must* be enclosed in a
  'directives' markup.  This is how all the existing zcml was written
  anyway.

NEWS CONTRIBUTION GUIDELINES:

  We want to know what you're doing, be it code or design, so just 
  write something quick and easy.  First person and casual is fine, as 
  you can see.  Send to gary@zope.com whenever the spirit moves you.

LEARN MORE ABOUT ZOPE 3:

  See http://lists.zope.org/mailman/listinfo/zope3-dev
  See
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/FrontPage 
  but be aware the design docs often lag as we develop prototypes.
  Again, these newsletters and the compiled glossary are archived at 
 
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Newsletter