[Zope3-dev] Package is the wrong name for the things I called "Zope Packages".

Jim Fulton jim@zope.com
Mon, 20 Jan 2003 12:34:56 -0500


I picked the wrong name for the things currently called


Let me summarize the current terminology:

- Python packages

   These are the packages defined by Python.

   Python packages do two things:

   o Contain bits (modules and other files)

   o Provide a namespace

- Python modules

   Normally, we mean collections of code implemented by ".py"
   files. Like packages, they contain bits (code) and provide a
   namespace.

- Persistent modules

   These are objects, stored in the ZODB that are meant to be as much
   like normal Python modules as possible. Thet contain a bit string of
   text that represents Python source code. They also provide a namespace.

   They do have slighly different semantics to support run-time update.

- Persistent packages

   These are objects, corresponding to Python packages, that are stored
   in the object database. Unlike normal Python packages, they *only* provide
   a namespace. They do not include bits.

   For example, when you define a persistent module with the name "x.y.z",
   you are also defining a persistent package "x.y".  If you define another
   module named "z.y.q", then you are defining "q" as another name in the "x.y"
   package.

- Zope Packages

   These are objects (currently) contained in a "Packages" container object in
   service managers. These are used to contain bits and registratiuon information.
   They do not provide much in the way of namespaces.

   Zope packages are used for three things:

   A. Provide a workspace for local configuration.

   B. Provide a mechanism for creating software distributions.

   C. Provide a mechanism for installing software distributions.

   Note that it will not be uncommon to create a zope package as a local
   configuration workspace and decide you want to give it to somebody.  As a result,
   I think that the same name and object should be used for first two uses, A and B,
   above.  Maybe the third, C, use deserves a different name and kind of object.

   I'll also note that the is a strong correspondence between these things
   and folders in content space.

So where does that leave us?

I'm pretty sure that the things currently called Zope packages should be
called something else.

I suspect that the things currently called "closed Zope packages" (use C)
should have an entirely different name from the things currently called
"open zope packages" (uses A and B). I'm inclined to think that the name
for uses A and B should involve the word "folder", although I haven't thought
of great modifiers.

Suggestions are welcome. :)

Jim

-- 
Jim Fulton           mailto:jim@zope.com       Python Powered!
CTO                  (888) 344-4332            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org