Introducing Zope

Zope is a framework that allows developers of varying skill levels to build web applications. This chapter explains Zope's purpose and audience in greater detail. It also describes what makes Zope different from similar applications.

What Is A Web Application?

It is often important that visitors to a website see content that is timely and up-to-date. A time-dependent site's content needs to change continually. For example, if a commercial website helps its visitors sell and buy used automobiles, it is usually required that the site run advertisements only for cars that have not yet been sold. It is also important that new ads be posted at most a day or two after they've been placed by a seller. If either of these requirements is not met, the website will likely not be very successful.

The layout of text and images that show up in a user's web browser when the user visits a website are often composed using a simple language known as Hyper Text Markup Language (HTML). When a user visits a typical website, a chunk of text that is "marked-up" with HTML is transferred between the website and the user's browser. The browser interprets the chunk of text, showing text and images to the user. The chunk of text which is transferred is typically referred to as a page. Many website visitors think about navigation in terms of moving "from page-to-page" within a website. When they click on a hyperlink, their browser transports them to a new page. When they hit their browser's Back button, it takes them to the last page they've visited.

Some websites are static. Static websites require a person with a privileged level of access (sometimes termed the webmaster) to manually "freshen" the site's content. Freshening the content requires the person to manually visit and update the HTML that makes up each page that needs to change. Typically, this is done by editing a set of files on the web server (the machine that runs the website), where each file represents a single page.

Site-wide changes to the "look-and-feel" of a static website require that the webmaster visit and update each and every file that comprises the website. Websites can typically grow to encompass thousands of files, so this can become a non-trivial task. The webmaster responsible for our automobile advertising website has the additional responsibility of keeping the ads themselves fresh. If each page in the website represents an ad for a particular automobile, he needs to delete the pages representing ads which have expired and create new pages for ads which have been recently sold. He then needs to make sure that no hyperlinks on other pages point to missing pages.

This becomes a lot of work very quickly. As you can imagine, with any more than a few pages to update every day, this can become pretty dull. The webmaster also understandably makes mistakes (he's human, after all), and forgets to update or remove critical pages.

Somewhere down the line smart webmasters begin to think to themselves, "Wow, this is a lot of work. It's tedious and complicated, and I seem to be making a lot of mistakes. Computers are really good at doing tedious and complicated tasks, and they don't make very many mistakes. I bet my webserver computer can automatically do a lot of the work I now do manually." At this point, the webmaster is ready to be introduced to web applications.

A web application is a computer program that users invoke by using a web browser to contact a web server via the Internet. Users and browsers are typically unaware of the difference between contacting a web server which fronts for a statically-built website and a web server which fronts for a web application. But unlike a static website, a web application creates its "pages" dynamically. A website that is dynamically-constructed uses an a computer program to provide the dynamism. These kinds of dynamic applications can be written in any number of computer languages.

In a dynamically-constructed website, the webmaster is not required to visit the site "page-by-page" in order to update content or style. Instead, he is able to create a "common look and feel" for the set of pages that make up his website. He is also able to instruct the webserver to generate an HTML page on the fly that includes certain unique bits of content. If our auto-classified-ad webmaster chose to construct a web application to maintain his classifieds system, he could maintain a list of "current" ads separate from the HTML layout (perhaps stored in a database of some kind). He could then instruct his web application to query this database and generate a particular chunk of HTML that represented an ad or an index of ads when a user visited a page in his website.

Web applications are everywhere. Common examples of web applications are those that let you search the web, like Google; collaborate on projects, like SourceForge; buy items at an auction like eBay; communicate with other people over e-mail, like Hotmail; or view the latest news ala CNN.com.

A framework which allows people to construct a web application is often called a web application server, or sometimes just an application server. Zope is a web application server, as are competing products like Macromedia ColdFusion. A web application server typically allows a developer to create a web application using some common computer programming language. But it also provides services beyond the basic capabilities of the language such as templating, a common security model, data persistence, sessions, and other features that people find useful when constructing a typical web application.

How You Can Benefit From Using An Application Server

If you are considering writing even a moderately-sized web application, it is typically a good idea to start your project using an application server framework unless your application requirements are extremely specialized. By starting a web application project using an application server framework (as opposed to a "raw" computer language such as Perl, Python, TCL, or C), you are able to utilize the services of the framework that have already been written, and you avoid needing to write the functionality yourself "from scratch" in a "raw" language.

Many application servers allow you perform some of the below-mentioned tasks.

Present Dynamic Content
You may tailor your web site's presentation to its users and provide users with search features. Application servers allow you to serve dynamic content. Application servers typically come with facilities for personalization, database integration and content indexing and search.
Manage Your Web Site
A small web site is easy to manage, but a web site that serves thousands of documents, images and files requires heavy-duty management tools. It is useful to be able to manage your site's data, business logic and presentation from a single place. An application server can typically help manage your content and presentation in this way.
Build a Content Management System
A fairly new breed of application, a content management system allows nontechnical editors to create and manage content for your website. Application servers provide the tools with which you can build a content management system.
Build an E-Commerce Application
Application servers provide a framework in which sophisticated e-commerce applications can be created.
Securely Manage Contributor Responsibility
When you deal with more than a handful of web users, security becomes very important. It is important to be able to safely delegate tasks to different classes of system users. For example, folks in your engineering department may need to be able to manage their web pages and business logic, designers may need to update site templates, and database administrators need to manage database queries. Application servers typically provide a mechanism for access control and delegation.
Provide Network Services
You may want to produce or consume network services. A network service-enabled web site will need to be able to accept requests from other computer programs. For example, if your website is a news site, you may wish to share your news stories with another website; you can do this by making the news feed a network service. Or perhaps you want to make products for sale on your site automatically searchable from a product comparison site. Application servers are beginning to offer methods of enabling these kinds of network services.
Integrate Diverse Systems
Your existing content may be contained in many places: relational databases, files, separate web sites, and so on. Application servers typically allow you to present a unified view of your existing data by integrating diverse third-party systems.
Provide Scalability
Application servers allow your web applications to scale across as many systems as necessary to handle the load demands of your websites.

The Zope application server allows you to perform all of these tasks.

Zope History

In 1996 Jim Fulton (the current CTO of Zope Corporation, the distributors of Zope) was drafted to teach a class on CGI programming, despite not knowing very much about the subject. CGI or common gateway interface programming is a commonly-used web development model that allows developers to construct dynamic websites. Jim studied all of the existing documentation on CGI on his way to the class. On the way back from the class, Jim considered what he didn't like about traditional CGI based programming environments. From these initial musings, the core of Zope was written on the plane flight back from the class.

Zope Corporation (then known as Digital Creations) went on to release three open source software packages to support web publishing, Bobo, Document Template, and BoboPOS. These package were written in a language called Python, and respectively provided a web publishing facility, text templating, and an object database. Digital Creations had developed a commercial application server based on their three open source components. This product was called Principia. In November of 1998, investor Hadar Pedhazur convinced Digital Creations to open source Principia. These components have evolved into core components of Zope.

The moniker "Zope" stands for the Z Object Publishing Environment (the "Z" doesn't really mean anything in particular). Most of Zope is written in the Python scripting language, with performance-critical pieces written in C.

Why Use Zope Instead of Another Application Server

If you're in the business of creating web applications, Zope can potentially help you create them at less cost and at a faster rate than you could by using another competing web application server. This claim is backed up by a number of Zope features:

  • Zope is free of cost and is distributed under an open-source license. There are many non-free commercial application servers that are relatively expensive.
  • Zope itself is an inclusive platform. It ships with all the necessary components to begin developing an application. You don't need to license extra software to support Zope (e.g. a relational database) in order to develop your application. This also makes Zope very easy to install. Many other application servers have "hidden" costs by requiring that you license expensive software or to configure complex third-party infrastructure software before you can begin to develop your application.
  • Zope allows and encourages third-party developers to package and distribute ready-made applications. Due to this, Zope has a wide variety of integrated services and add-on products available for immediate use. Most of these components, like Zope itself, are free and open source. Zope's popularity has bred a large community of application developers. Many other application servers do not have a large base of third-party support or a means for so neatly packaging plug-ins.
  • Applications created in Zope can scale almost linearly using Zope's Zope Enterprise Objects (ZEO) clustering solution. Using ZEO, you can deploy a Zope application across many physical computers without needing to change much (if any) of your application code. Many application servers don't scale quite as transparently or as predictably.
  • Zope allows developers to create web applications using only a web browser. The Internet Explorer, Mozilla, Netscape, OmniWeb, Konqueror, and Opera browsers are all known to be able to be used to display and manipulate Zope's development environment (the Zope Management Interface also known as the ZMI). Zope also allows developers to safely delegate application development duties to other developers "through the web" using the same interface. Very few other application servers, if any, deliver the same level of functionality.
  • Zope provides a granular and extensible security framework. You can easily integrate Zope with diverse authentication and authorization systems such as LDAP, Windows NT, and RADIUS simultaneously, using prebuilt modules. Many other application servers lack support for some important authentication and authorization systems.
  • Zope allows teams of developers to collaborate effectively. Collaborative environments require tools to allow users to work without interfering with each other, so Zope has Undo, Versions, History and other tools to help people work safely together and recover from mistakes. Many other application servers do not provide these kinds of features.
  • Zope runs on most popular microcomputer operating system platforms: Linux, Windows NT/2000/XP, Solaris, FreeBSD, NetBSD, OpenBSD, and Mac OS X. Zope even runs on Windows 98/ME (recommended only for development purposes, however). Many other application server platforms require that you run an operating system of their licensor's choosing.
  • Zope can be extended using the interpreted Python scripting language. Python is popular and easy to learn, and it promotes rapid development. Many libraries are available for Python which can be used when creating your own application. Many other application servers must be extended using compiled languages such as Java, which cuts down on development speed. Many other application servers use less popular languages for which there are not as many ready-to-use library features.

Zope Audiences and What Zope Isn't

Managing the development process of a large-scale site can be a difficult task. It often takes many people working together to create, deploy, and manage a web application.

  • Information Architects make platform decisions and keep track of the "big picture".
  • Component Developers create software intended for reuse and distribution.
  • Site Developers integrate the software written by component developers and native application server services, building an application in the process.
  • Site Designers create the site's look and feel.
  • Content Managers create and manage the site's content.
  • Administrators keep the software and environment running.
  • Consumers use the site to locate and work with useful content.

 

Of the parties listed above, Zope is most useful for component developers, site developers, and site designers. These three groups of people can collaborate to produce an application using Zope's native services and third-party Zope Products. They will typically produce applications useful to content managers and consumers under the guide of the information architect. Administrators will deploy the application and tend to the application after it is has been created.

Note that Zope is a web application construction framework that programmers of varying skill levels may use to create web-based applications. It is not itself an application that is ready to use "out of the box" for any given application. For example, Zope itself is not a weblog, a content management system, or a "e-shop-in-a-box" application.

However, freely available Products built on top of Zope offer these kinds of services. At the time of this writing, the Zope.org website catalogs roughly 500 Products that you can browse and hopefully reuse in your own application. There are Products for weblogging, content management, and ecommerce among these.

Zope is not a visual design tool. Tools like Macromedia Dreamweaver or Adobe GoLive allow designers to create "look and feel". You may use these tools to manage Zope-based web sites, but Zope itself does not replace them. You can edit content "through the web" using Zope but the limitations of current cross-platform browser technology prevents Zope from doing as good of a job as these kinds of tools to design web presentation.

Zope's Terms of Use and License and an Introduction to The Zope Community

Zope is free of cost. You are permitted to use Zope to create and run your web applications without paying licensing or usage fees. You may also include Zope in your own products and applications without paying royalty fees to Zope's licensor, Zope Corporation.

Zope is distributed under an open source license, the Zope Public License or ZPL . The terms of the ZPL license stipulate that you will be able to obtain and modify the source code for Zope.

The ZPL is different than another popular open source license, the GNU Public License . The licensing terms of the GPL require that if you intend to redistribute a GPL-licensed application, and you modify or extend the application in a meaningful way, that you contribute your modifications back to the licensor. This is not required for ZPL-licensed applications, however. You may modify and redistribute Zope without contributing your modifications back to Zope Corporation as long as you follow the other terms of the license faithfully.

Note that the ZPL has been certified as OSD compliant by the Open Source Initiative and is listed as GPL compliant by the Free Software Foundation .

A community of developers is responsible for maintaining and extending the Zope application server. Many community members are professional consultants, developers and web masters who develop applications using Zope for their own gain. Others are students and curious amateur site developers. Zope Corporation is a member of this community. Zope Corporation controls the distribution of the defacto "canonical" Zope version and permits its developers as well as other selected developers to modify this distribution's source code.

The Zope community gets together occasionally at conferences but spends most of its time discussing Zope on the many Zope mailing lists and web sites. You can find out more about Zope-related mailing lists at Zope.org's mailing list page.

Zope Corporation makes revenues by using Zope to create web applications for its paying customers, by training prospective Zope developers, by selling support contracts to companies who use Zope, and by hosting Zope-powered websites; it does not make any direct revenues from the distribution of the Zope application server itself.