Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware... and open-source, object-oriented web application server
Application server
An application server, in an Multitier architecture, is a server that hosts an Application programming interface to expose business logic and business processes for use by third-party Business software.... written in the Python
Python (programming language)
Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive.... programming language
Programming language
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer.... . Zope stands for "Z Object Publishing Environment." It can be almost fully managed with a web-based user interface. Zope publishes on the web Python objects that are typically persisted in an object database, ZODB. Basic object types, such as documents, images, and page templates, are available for the user to create and manage through the web.
Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware... and open-source, object-oriented web application server
Application server
An application server, in an Multitier architecture, is a server that hosts an Application programming interface to expose business logic and business processes for use by third-party Business software.... written in the Python
Python (programming language)
Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive.... programming language
Programming language
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer.... . Zope stands for "Z Object Publishing Environment." It can be almost fully managed with a web-based user interface. Zope publishes on the web Python objects that are typically persisted in an object database, ZODB. Basic object types, such as documents, images, and page templates, are available for the user to create and manage through the web. Specialized object types, such as wiki
Wiki
A wiki is a page or collection of Web pages designed to enable anyone who accesses it to contribute or modify content , using a simplified markup language.... s, blog
Blog
A blog is a type of website, usually maintained by an individual with regular entries of commentary, descriptions of events, or other material such as graphics or video.... s, and photo galleries, are available as third-party add-ons (called products), and there is a thriving community of small businesses creating custom web applications as Zope products.
There are two major generations of the software in use today. As of January 2009, Zope 2.11.2 is the latest stable release of Zope 2 codebase, and Zope 3.4.0 is the latest release of Zope 3. Zope is distributed under the terms of the Zope Public License
Zope Public License
Zope Public License is a free software license, used primarily for the Zope application server software. The license is similar to the well-known BSD license, however the ZPL also adds clauses prohibiting trademark use and requiring documentation of all changes.... , a free software license.
History
The Zope Corporation was formed in 1995 in Fredericksburg
Fredericksburg, Virginia
Fredericksburg is an independent city in the Commonwealth of Virginia located 50 miles south of Washington, D.C., and 58 miles north of Richmond, Virginia.... , VA
Virginia
The Commonwealth of Virginia is an United States U.S. state on the East Coast of the United States of the Southern United States. The state is known as the "Old Dominion" and sometimes as "Mother of Presidents", because it is the birthplace of Lists of United States Presidents by place of birth#By state.... , as a joint venture with InfiNet (a joint newspaper chain venture). The company developed a classified advertisement engine for the Internet, then in 1997 became an independently owned private company. At the behest of its largest investor, Opticality Ventures, Zope Corporation released its software as free software, concentrating on providing premier customization services. The company's software engineers are led by CTO Jim Fulton. PythonLabs, creators of Python, became part of the company in the year 2000. Python founder Guido van Rossum
Guido van Rossum
Guido van Rossum is a Netherlands computer programmer who is best known as the author of the Python . In the Python community, Van Rossum is known as a ?Benevolent Dictator for Life? , meaning that he continues to oversee the Python development process, making decisions where necessary.... is no longer employed by Zope, however.
What is now known as Zope 2 started off with the merger of three separate software products – Bobo, Document Template, and BoboPOS – into the Principia application server. The authoring company, Digital Creations, re-released their flagship product as free and open-source software in 1998, influenced by their venture capitalist, Hadar Pedhazur. This product was renamed "Zope" with this release.
In November 2004, Zope 3 was released. Zope 3 is a complete rewrite
Rewrite (programming)
A rewrite in computer programming is the act or result of re-implementing a large portion of existing functionality without re-use of its source code.... that preserves only the original ZODB object database and the ZPT templating engine. The design of Zope 3 is driven by the needs of large companies, the clients of Zope Corporation, for complex business schemas. It is directly intended for enterprise web application development using the newest development paradigms. Zope 3 is, however, not compatible with Zope 2, so you cannot run Zope 2 applications on Zope 3. Therefore, an effort (called Five) to merge the new Zope 3 paradigms into Zope 2 has been ongoing since Zope 2.8. Its aim is to allow developers to write applications and libraries that run under both Zope 3 and Zope 2.
A Web site is a collection of related Web pages, images, videos or other digital assets that are hosted on one Web server, usually accessible via the Internet.... is composed of objects in an object database as opposed to files, as is usual with many other web server
Web server
The term web server can mean one of two things:# A computer program that is responsible for accepting Hypertext Transfer Protocol requests from clients , and Server them HTTP responses along with optional data contents, which usually are web pages such as Hypertext Markup Language documents and linked objects .... systems. This approach allows users to harness the advantages of object technologies, such as encapsulation
Information hiding
Information hiding in computer science is the principle of hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed.... . Zope maps URL
Uniform Resource Locator
In Information technology, a Uniform Resource Locator is a type of Uniform Resource Identifier that specifies where an identified resource is available and the mechanism for retrieving it.... s to objects using the containment hierarchy of such objects; methods are considered to be contained in their objects as well.
Zope comes with the Zope Object Database, which transparently persists (Python
Python (programming language)
Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive.... ) objects in a transactional database.
One particularly innovative feature of Zope is its widespread use of acquisition. Acquisition is a technique parallel to class inheritance, in which objects "inherit" behavior from their context in a composition hierarchy, as opposed to their class in a class hierarchy. This allows certain ways to structure source code that are otherwise harder to accomplish, and can encourage application decomposition. A common use is in structuring the way layout elements are used in a web page. Acquisition as implemented in Zope 2 is also perceived as a source of bugs, as it enables many unexpected behaviours. In Zope 3 the use of acquisition has been made explicit. You only acquire data if you explicitly say that it is the acquired data you want.
HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '... templating: Dynamic Template Markup Language (DTML), and Zope Page Templates (ZPT). DTML is a tag-based language which allows implementation of simple scripting in the templates. DTML has provisions for variable inclusion, conditions, and loops. However, DTML has major drawbacks: DTML tags interspersed with HTML form non-valid HTML documents, and careless inclusion of logic into templates results in very unreadable code. ZPT is a technology that fixes these shortcomings. ZPT templates can be either well-formed XML documents or HTML documents, in which all special markup is presented as attributes in the TAL (Template Attribute Language
Template Attribute Language
The Template Attribute Language is a templating language aimed to generate HTML and XML pages. Its main goal is to simplify the collaboration of programmers and designers by templates being proper HTML which can be worked on using common design tools.... ) namespace. ZPT offers just a very limited set of tools for conditional inclusion and repetition of XML elements, thus the templates are usually quite simple, with most logic implemented in Python code. One significant advantage of ZPT templates is that they can be edited in most graphical HTML editors. ZPT also offers direct support for internationalization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages and regional differences. Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes.... .
Plone is a free software and open source software content management system built on top of the Zope application server. It is suited for an intranet or may be used as a server on the Internet, playing such roles as a document management system and collaborative software collaboration tool.... , and Silva content management system
Content management system
A content management system is a computer application used to create, edit, manage, search and publish various kinds of Content . CMSs are frequently used for storing, controlling, versioning, and publishing industry-specific documentation such as news articles, operators' manuals, technical manuals, sales guides, and marketing brochures.... s, as well as the base behind ERP5
ERP5
ERP5 is a Open Source Enterprise resource planning system based on the Zope application server. It is mainly developed in the Python and the source code is freely available under the GNU General Public License.... open source enterprise resource planning
Enterprise resource planning
Enterprise resource planning is an enterprise-wide information system designed to coordinate all the resources, information, and activities needed to complete business processes such as order fulfillment or billing.... .
Zope 3
Zope 2 has proven itself as a useful framework for web applications development, but its use revealed some shortcomings. To name a few, creating Zope 2 products involves copying a lot of boilerplate code – "magic" code – that just has to be there, and the built-in management interface is difficult to modify or replace. Zope 3 is a rewrite of the software that attempts to address these shortcomings while retaining the advantages of Zope that led to its popularity. Zope 3 is based on a that makes it easy to mix software components of various origins written in Python
Python (programming language)
Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive.... . Zope 3 is not aiming for backwards compatibility with Zope 2. Instead the Zope 3 component architecture has been backported to Zope 2, and Zope 2 is instad for each release gaining more and more of Zope 3s architecture while retaining compatibility with earlier Zope 2 technologies. Also many Zope platforms such as Plone are going through the same type of piece by piece rewriting.
Although originally intended as a replacement for Zope 2, Zope 3 has instead been re-focused on providing multiple independent infrastructure components, while other projects like Zope 2, Grok
Grok (web framework)
Grok is a web framework based on Zope 3 technology. The project was started in 2006 by a number of Zope 3 developers. Grok has since then seen regular releases.... and lately repoze.bfg would become one project focused on providing web application server frameworks based on Zope 3 components. An ancillary goal is to reduce confusion about what exactly "Zope" is.
The first production release of the new software, Zope X3 3.0.0, was released on November 6, 2004. The current production release, Zope 3.4.0, was released on January 30, 2009.
Grok is a web framework based on Zope 3 technology. The project was started in 2006 by a number of Zope 3 developers. Grok has since then seen regular releases.... project was started by a number of Zope 3 developers who wanted to make Zope 3 technology more agile in use and more accessible to newcomers. Grok has since then seen regular releases and its core technology (Martian, grokcore.component) is also finding uptake in other Zope 3 and Zope 2 based projects.
Five and the Future of Zope
The is a Zope 2 extension that allows usage of Zope 3 technologies within Zope 2, hence the name Five, as 3 + 2 = Five.
Originally released separately, Five has become an integral part of the main line of Zope 2 development. Five 1.0 was integrated with Zope 2 starting with Zope 2.8.0. Each successive Zope 2 release has integrated more of the features of Zope 3.
Zope Page Templates
As mentioned previously, Zope Page Templates are themselves XHTML documents which means they can be viewed and edited using normal HTML editors or XHTML compliant tools (a big benefit compared to other template languages used for web applications). Templates can also be checked for XHTML compliance so you can be fairly confident that they will automatically expand into proper XHTML.
However, these page templates are not meant to be rendered as is. Instead they are marked up with additional elements and attributes in special XML namespaces (see below). This additional information is used to describe how the page template should ultimately be processed.
Here are some basic examples. To conditionally include a particular element, like a div element, simply add the tal:condition attribute to the element as follows:
To control what appears inside an element, use the tal:content attribute like this:
...
Finally, to introduce or replace values of attributes use the tal:attributes attribute as follows:
The power of python could also be utilised to dynamically alter the href at runtime.
This is a very cursory explanation of Zope Page Templates. The behavior of Zope Page Templates is almost completely described by a template language
Web template
A web template is a tool used to Separation of concerns content from presentation in web design, and for mass-production of web documents. It is a basic component of a web template system.... , fixed on :
The Template Attribute Language is a templating language aimed to generate HTML and XML pages. Its main goal is to simplify the collaboration of programmers and designers by templates being proper HTML which can be worked on using common design tools.... (TAL),
Template Attribute Language Expression Syntax (TALES
Tales
Tales can refer to:*the plural of tale*Tales , a series of role-playing games*Tales , an album by Marcus Miller*Tales of the Unexpected , an Anglia Television television series... ),
Macro Expansion Template Attribute Language (METAL
Metal
In chemistry, a metal is a chemical element whose atoms readily lose electrons to form positive ions , and form metallic bonds between other metal atoms and ionic bonds between nonmetal atoms.... ).
Zope Management Interface
The Zope application server features a web-based management interface that enables an administrative user to change many aspects about the way Zope behaves. It was this ease of customizability that gave Zope both its popularity and its infamous shortcomings described above.
ERP5 is a Open Source Enterprise resource planning system based on the Zope application server. It is mainly developed in the Python and the source code is freely available under the GNU General Public License....
Content management, or CM, is a set of processes and technologies that support the evolutionary life cycle of digital information. This digital information is often referred to as Content or, to be precise, digital content....
The Zope Content Management Framework is a series of free software tools for Zope that forms a framework providing many of the key services a content management system would need....
Zwiki is a wiki engine written in Python and based on the Zope web application server. It was developed by Joyful Systems and contributors from around the world, and is free software released under the GNU General Public License....