FAQ - Concepts

Return to FAQ index

1   What is the component architecture?

It's similar to other component architectures in that it lets you fit small pieces of functionality together. While Zope 2 has many parts welded together with inheritance, Zope 3 will let you take things apart and put them together like LEGO bricks(TM). See the Vision Statement, [Components]?, [Interfaces]?, and the Glossary.

2   Where can I find pointers to resources?

  1. This wiki
  2. http://apidoc.zope.org/++apidoc++/
  3. Zope 3 Base : http://codespeak.net/z3/
  4. IRC : #zope3-dev at irc.freenode.net , logs at : http://zope3.pov.lt/irclogs
  5. Users list (for development with Zope 3): zope3-users@zope.org, archives at : http://mail.zope.org/pipermail/zope3-users/
  6. Developers list (for development of Zope 3 itself) : zope3-dev@zope.org, archives at : http://mail.zope.org/pipermail/zope3-dev/
  7. Zope 3 book by Philipp von Weitershausen : http://worldcookery.com/
  8. Planet : http://planetzope.org/
  9. News letter : http://blog.planetzope.org/
  10. Zope Cookbook : http://zope-cookbook.org/
  11. http://del.icio.us/tag/zope3
  12. https://wiki.ubuntu.com/LearningZope3
  13. ZopeGuide

3   What's the deal with the '/@@' syntax?

@@ is a shortcut for ++view++. (Mnemonically, it kinda looks like a pair of goggle-eyes)

To specify that you want to traverse to a view named "bar" of content object "foo", you could (compactly) say .../foo/@@bar instead of .../foo/++view++bar.

Note that even the '@@' is not necessary if container "foo" has no element named "bar" - it only serves to disambiguate between views of an object and things contained within the object.

4   How do dotted package names (like "dotted.name") work?

Ref: http://mail.zope.org/pipermail/zope3-users/2006-September/004538.html

  1. In /zopeinstance/lib/python, is the package actually in /zopeinstance/lib/python/dotted.name, or is it in /zopeinstance/lib/python/dotted/name?
The latter.
  1. What is the purpose of using the dotted name?

Short answer: package namespaces.

Long answer: Say you're creating a widget library. You could call your package simply "widget". But then if I create a widget library and called it "widget", too, we'd have a conflict and couldn't use them at the same time. That's why you call your package "george.widget" and I'll call my package "philikon.widget".

5   Are ContainerTypesConstraint & ItemTypePrecondition deprecated?

These two are not deprecated, but contains and containers functions are recommended.

6   What's the difference between service and utility?

Mainly, Services have been deprecated and no longer exist ;-) Existing services have been rewritten as Utilities.

For historical information, see DifferencesBetweenServicesAndUtilities. Originally, a utility was thought of a one-off thing, while a service was something that's carefully designed into the infrastructure. As an analogy, "mapping", "sequence" and "file-like object" are generic interfaces in Python, and could be considered somewhat like Zope services, while other things (e.g. frame objects, mmap objects, curses screen objects etc.) are one-off types/classes, similar to Zope utilities.



( 97 subscribers )