When accessed from the web, objects are found using traversal.
Zopache traversal is a bit different from the other packages, but not hugely different.
During zopache traversal, templates are acquired from the ZClass or parents.
When accessed from python, objects find each other by acquisition.
There are various types of acquisition. Parental acquisition,
child acquisition, and cousin acquisition. For historical reasons cousin acquisition is called a ZClass.
Unlike Grok/ZTK, the namespace for Zopache is the url tree.
Values are acquired from the ZClass, parent objects, or child objects.
Of course, being written in Python, Zopache depends and benefits from
the python file system namespace. Being written in Grok and ZTK it depends
on the Zope COmponent Architecture.
In Grok, templates are stored in the file system, in each
individual package. There is no good
way to share them across packages. Indeed the only
unfixed Grok bug report that I ever encountered was that templates cannot
be shared across packages. In contrast, in Zopache, Templates are
stored on the ZODB tree, either near the root in a ZClass, and can be
accessed from anywhere.