Zope (web application server)

from Wikipedia, the free encyclopedia

Dev ( Z O bject P ublishing E nvironment ) is an object-oriented , in the programming language Python written, free web application server with open source code . Zope represents a platform for the realization of web applications and is very well suited for creating dynamic web presences, as it is principally designed to separate the content from the design of the website. The Zope source code became partially open source in 1996, the entire application in 1998 .

history

In 1995 Digital Creations was founded in Fredericksburg (Virginia) as a joint venture between a merger of several daily newspapers. The first employees were Paul Everitt and Bob Page. Other employees like Jim Fulton were added quickly. In May 1997, the daily newspaper consortium Digital Creations sold, the partners Paul Everitt and Bob Page got the name, the software and the employees.

At that time, some companies outside of Digital Creations were already working with their free product Bobo. One of them was Hadar Pedhazur , who also approached Digital Creations at the time with the desire to become an investor. The talks were not crowned with success, however, as Hadar saw the future of Digital Creations as a service provider, while Paul Everitt and Bob Page wanted to sell their products, including the Principia Application Server, as proprietary applications. A year later, however, after the success had not been as successful as hoped, Hadar approached Digital Creations again, and it was agreed to become a service company, to bundle the products into a product called Zope and as a free one Publish software.

In November 2004, Zope 3 was released. It is almost completely rewritten and only contains the original ZODB object database and the "ZPT Template Engine". On January 17, 2010, Zope 3 was renamed "BlueBream" in order to clarify the differentiation to Zope 2.

A cut was made with BlueBream. Instead of remaining backwards compatible with Zope 2, the decision was made to fundamentally revise the internal structure. One of the innovations is a component architecture. A side effect is that many components can now also be used outside of Zope. Currently, both Zope 2 and BlueBream are being actively developed in parallel.

The direct further development of Zope 2 was named Zope 4 after version 2.13. Zope 4 is compatible with Python 3 and was released on May 10, 2019.

features

Expandability

The functionality of Zope, by a large number of freely available extensions, the so-called products (English: Products ), needs to be adjusted for. B .:

These extensions are each stored in their own directory in the file system and can be removed without residue by deleting the directory and restarting Zope. The full scope of the Python programming language is available to you, including the integration of libraries written in Python or C.

The products are developed and maintained by the now very large user community.

Object database

The basis of many of Zope's properties is the ZODB object database , in which the dynamically changing content is stored (provided that it does not come from additionally linked relational databases). The ZODB contains all existing objects in a hierarchical tree and forms the basis of the acquisition .

It is very efficient and can also be used independently of Zope.

Acquisition

A characteristic concept is that of acquisition, that is, inheritance from the containing object . In this way, properties and methods can be ' inherited ' into a whole subtree ; this is the most important basis of dynamic internet presences realized with “Zope standard tools”.

Development languages

Zope offers the Document Template Markup Language (DTML), the Python programming language and the Zope Page Templates (ZPT) as development languages. DTML is still used very often, but is now considered obsolete in the Zope environment. The use of Python and ZPT allows a better separation of representation and program logic and is therefore preferable to DTML.

For example, a Python program can be stored as an internal Python script (Script (Python)) or integrated as an external method (External Method). An internal Python script is stored in the object database ZODB and its functionality is limited for security reasons. For example, access to the file system is blocked and the object database is permitted. An external method, on the other hand, is located in the file system and is integrated via a Zope object. There are no access restrictions for these methods.

safety

Zope has a security framework that is based on so-called roles and allows precise definitions of who is allowed to do what where . For each individual object it can be determined which role is required for which type of access; these roles can also be assigned locally to the individual users in order to give them e.g. B. to grant access only in a certain subtree.

In addition, the web user does not work in the file system of the server, as is the case with classic script languages ​​(such as PHP, Perl, etc.), but in a separate virtual environment. Breaking out of this is only possible if the developer so wishes. This system prevents access to other information stored on the server and thus undermines common attack patterns.

HTTP server

Zope includes the Zserver web server , an enhanced version of the Medusa server written in Python . Another web server is not required, but can be used to run Zope together with an Apache web server, for example .

From version 2.13 Zope can also be operated with WSGI .

Scalability

Zope is capable of software-side multithreading . The load distribution of a Zope instance over several processors is prevented by a global lock of the Python interpreter. With the help of "Zope Enterprise Objects" (ZEO) it is possible for several servers to access the same database. Systems distributed in this way are able to use several processors.

portability

Zope is almost entirely written in Python . Only some speed critical system components are in C written. The entire system can in principle be executed on all platforms with a Python interpreter and a C compiler .

Pre-translated packages are available for Linux, Windows, BSD, Mac OS X and Solaris. The packages contain Zope and Python.

BlueBream

In 2004 a new Zope was released, initially under the name Zope 3. Since January 17, 2010, development has been continued under the name BlueBream, after the developers found the name Zope 3 to be an obstacle to further development and differentiation from Zope 2 .

Zope 2 has proven to be a useful framework for web applications, but one or the other idea showed its weaknesses over time. For the time, Zope was extremely expandable, it was one of Zope's strengths. However, newer technologies such as the Java framework Spring have shown other possibilities for expansion. Extensions were closely linked to Zope because they could only be integrated into Zope by extending Zope base classes and they require a relatively large amount of code for the Zope integration. Zope 3 introduced the component model as a replacement for which this is no longer necessary.

Another idea was to develop applications using the web interface. Your advantage is that changes can be tested immediately in the web browser and take effect immediately. However, it is disadvantageous that it is much more difficult to integrate version control systems and powerful editors for the source text. Furthermore, the security mechanisms of the development via the web interface ensure that many Python modules cannot simply be used. In BlueBream you can no longer write program logic directly via the web interface. However, program logic can still easily be tested as it is no longer linked to Zope and can also run outside of Zope as a stand-alone program.

All in all, the changes also ensure that developers don't have to follow Zope as much. This had deterred many developers in the past.

The first stable release (back then under the name Zope 3) was released on November 6, 2004. The current version is BlueBream 1.0a0, it corresponds to Zope 3.4.1.

Grok

BlueBream (formerly Zope 3) is criticized by many Zope developers for requiring too much configuration in the form of XML files. In BlueBream, a lot can be configured and changed via XML files. To do this, it must be specified explicitly in the configuration files. In response to this, some developers have developed Grok , which is based on BlueBream.

Grok introduces the DRY principle as a top priority. DRY stands for “ Don't repeat yourself ” (English for “ Don't repeat yourself ). This means that everything should only be defined once. If the configuration is the same 90 percent of the time, then this should not need to be configured explicitly. With Grok, you can write a complex web application that requires one line of XML configuration.

Applications

A well-known application of Zope is the Plone content management system . The program would also SchoolTool of The Shuttleworth Foundation developed with Zope 3 and the Software Development Platform Launchpad is based on Zope.

A somewhat less well-known open source CMS based on ZOPE is ZMS , which - although it was originally developed by the developers primarily for research purposes and for use in medicine - is now widely used. Its special features lie in particular in the user-friendly user interface and the capabilities for multimedia publishing.

Less well known is the union.cms content management system , which is under the GNU General Public License . It was developed on behalf of the United Service Union Ver.di and replaced the proprietary CMS Hyperwave in 2003 . Since March 16, 2010 the DGB website has also been based on a further development of union.cms and thus on Zope.

Web links

Individual evidence

  1. ^ Zope Release History. Retrieved May 14, 2019 .
  2. Email to the Zope-Dev Mailing-List , from Baiju M (accessed January 17, 2010)
  3. Email discussion on the Zope Dev mailing list (accessed January 17, 2010)