"One of the most notable differences between the original Zope2 approach and todays best-practices is in the way you develop applications with Zope2. The original Zope2 approach has focussed on a Through-The-Web (TTW) development model. You would create your entire application and manage your data through the same browser interface and store everything transparently in the same database. This model has worked very well in the beginning of “the web” as many dynamic websites have been rather simple and specialized projects.
Over the years websites have grown their requirements and often turned into development projects of a considerable size. Today websites are understood as applications in themselves and need an approach which is no longer compatible with the TTW approach of the early Zope2."
Conceito de aquisição do Zope 2 (Concept of Acquisition)
"One more prominent aspect of Zope is acquisition, whose core concepts are simply that:
Zope objects are contained inside other objects (such as Folders).
Objects can "acquire" attributes and behavior from their containers."
Diferença entre herança e aquisição:"Inheritance stipulates that an object can learn about its behavior from its superclasses via an inheritance hierarchy. Acquisition, on the other hand, stipulates that an object can additionally learn about its behavior through its containment hierarchy. In Zope, an object’s inheritance hierarchy is always searched for behavior before its acquisition hierarchy. If the method or attribute is not found in the object’s inheritance hierarchy, then the acquisition hierarchy is searched."
"Acquisition is not limited to searching a containment hierarchy: it can also search a context hierarchy. Acquisition by context is terribly difficult to explain, and you should avoid it if at all possible."
"Acquisition allows behavior to be distributed hierarchically throughout the system."
"Acquisition is a mechanism in Zope for sharing information among objects contained in a folder and its subfolders."
Separar camada de apresentação e de lógica (Keep presentation and logic separate)
"Zope encourages you to keep your presentation and logic separate by providing different objects that are intended to be used expressly for “presentation”. “Presentation” is defined as the task of dynamically defining layout of web pages and other user-visible data. Presentation objects typically render HTML (and sometimes XML)." (fonte)
Prefira ZPT à DTML (ZPT is better than DTML)
Motivo 1: DTML é velho. "an older version of a presentation facility included, which is called Document Template Markup Language or short DTML."
Motivo 2: DTML não faz boa separação entre camada de apresentação e camada responsável pela lógica: "There is a major problem with many languages designed for the purpose of creating dynamic HTML content: they don’t allow for “separation of presentation and logic” very well. For example, “tag-based” scripting languages, like DTML, SSI, PHP, and JSP, encourage programmers to embed special tags into HTML that are, at best, mysterious to graphics designers who “just want to make the page look good” and don’t know (or want to know!) a lot about creating an application around the HTML that they generate. Worse, these tags can sometimes cause the HTML on which the designer has been working to become “invalid” HTML, unrecognizable by any of his or her tools."
Contribuições do CMF ao Zope 2 original (Contribs of CMF inside Zope2)
"Zope ships with several content components: ZSQL Methods, Files, and Images. You can use Files for textual content since you can edit the contents of Files if the file is less than 64K and contains text. However, the File object is fairly basic and may not provide all of the features or metadata that you need.
Zope’s Content Management Framework (CMF) solves this problem by providing an assortment of rich content components. The CMF is Zope’s content management add on. It introduces all kinds of enhancements including workflow, skins and content objects. The CMF makes a lot of use of Page Templates."