This chapter explains what Zope is and who it's for. It describes in broad strokes what you can do with Zope. You also learn about the differences between Zope and other web application servers.
Zope is a framework for building web applications. A web application is a computer program that users access with a web browser over the Internet. You can also think of a web application as a dynamic web site that provides not only static information to users but lets them use dynamic tools to work with an application.
Web applications are everywhere, and web users work with them all the time. Common examples of web applications are sites that let you search the web, like Yahoo, collaborate on projects, like SourceForge, or communicate with other people over e-mail, like HotMail. All of these kinds of applications can be developed with Zope.
So what do you get when you download Zope? You actually get a lot of things. Zope consists of several different components that work together to help you build web applications. Zope comes with:
These are just some of the compelling features that have made Zope so popular for developing web applications. Perhaps Zope's best feature of all is its friendly, open source license. This means that not only is Zope free of cost for you to download, but you are also free to use Zope in your own products and applications without paying royalties or usage fees. Zope's open source license also means that all of the "source code" for Zope is available for you to look at, understand, and extend. Zope does not lock you into a proprietary solution that could hold you and your web users hostage.
From a business perspective, there are three key ideas to understanding what Zope can do for you: powerful collaboration, simple content management, and web components. The following sections are mostly oriented towards business people making decisions about Zope, so if you are interested in jumping right in, skip to the next chapter, Using Zope.
Years ago, Zope's core technologies were designed by Zope Corporation for an Internet Service Provider that provided web pages for newspapers. These newspapers in turn wanted to provide web pages for their customers. To scale in this environment, Zope was designed to safely delegate control to different groups of users at any level in the web site. Safely delegating control means considering these things:
These features make Zope an ideal environment for programming and authoring web content by groups and sub-groups of users.
Many web applications are traditionally built in three layers. Data and other information is stored in databases, the programs that drive the behavior of the application are stored in files in one location, and the HTML and other layout and presentation information is stored somewhere else.
While this has advantages, it also has disadvantages. Different kinds of tools and expertise must be used to work with the different components. All the different components may need to have their own kind of security and maintenance concerns. Many of these kinds of tools are not manageable from a web browser or from simple command line or GUI tools like FTP.
In Zope, all of these components are brought together into one coherent system. All require a common set of services: security, web-based management, searching, clustering, syndication and others. By bringing together all of these concepts into one manageable system, Zope enables you to use one set of skills and one set of tools to develop complex web applications. In addition, centralizing our model means Zope can more easily work with other external tools, like relational databases, GUI web editors, and other systems that can inter-operate with Zope.
The Web is a growing, dynamic platform. The web has evolved enough standards and APIs that creators of services, products, and technology can think in terms of the web as an architectural model to develop their applications around, instead of just a means of distributing static HTML documents to users.
Evidence of this is sprouting up in many locations. Microsoft's .NET architecture envisions a world of web components running on remote systems, providing specific services to applications around the world. Frontier, by UserLand Software, pioneered a simple web services protocol called XML-RPC to allow web components to communicate with each other (Zope also works with XML-RPC, which is discussed in Chapter 10, "Advanced Zope Scripting"). With web components, the model of a person sitting in front of the browser is no longer the only model of the web.
In 1996 Jim Fulton, the CTO of Zope Corporation and Python guru, was drafted to teach a class on CGI programming, despite not knowing much about the subject. 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: its fragility, lack of object-orientation, and how it exposes web server details. From these initial musings, the core of Zope was written on the plane flight back from the class.
Zope Corporation went on to release three open source software packages to support web publishing, Bobo, Document Template, and BoboPOS. These package were written in Python. They have evolved into core components of Zope providing the web ORB (Object Request Broker), DTML scripting language, and object database. Zope is still mostly written in Python with a few performance-critical sections in C.
Back then, Zope Corporation had developed a commercial application server based on their three open source components. This product was called Principia. In Novermber of 1998, investor Hadar Pedhazur convinced Zope Corporation to open source Principia. This became Zope, which was given its own home at Zope.org.
It takes a lot of people working together to create web services. To manage and coordinate these people on large-scale sites can be a difficult task. We've identified some common roles in this scenario to be aware of:
Zope is a platform upon which Site Developers create services to be turned over to Site Designers and Business Users, and Component Developers distribute new products and services for Zope users world wide.
Zope can install Zope products that are focused on different audiences. For instance, Squishdot is a popular weblog, written in Zope, that is useful right out of the box. Squishdot users won't necessarily see that Zope is underneath. Other Zope products, such as Zope Corporation's Content Management Framework, take the same approach, targeting audiences that need not know of Zope's existence underneath.
We've looked at the Zope philosophy and architecture, now let's survey some of of the applications of Zope. All sites solve different problems, but many sites tackle a set of common issues daily. Here are some of the main uses of Zope:
Let's take a closer look at the Zope features that allow you to build and manage dynamic web sites.
There are many tools available to help you build web applications. Early in the history of the web, simple web applications were built almost exclusively with CGI programs written in Perl or other languages. Now there are a host of options ranging from open source frameworks like PHP, to commercial options such as Allaire's Cold Fusion, Java application servers, and Vignette's Story Server.
Zope offers a unique mix of features, some similar to, and some very different from, features offered by other web application tools. Zope is easy to use, open source, powerful, and provides support for many different kinds of applications. Here is a short list of common web tool drawbacks and Zope's advantages:
Zope was one of the first tools of its kind to become open source. Since opening up the code to Zope, the user base has grown tremendously.
The Zope community consists of Zope users and developers. Many of the community members are professionals such as consultants, developers and web masters, investing their time and money into supporting Zope. Others are students and curious hackers, learning how to use a cool new tool. The 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 the many Zope-related mailing lists at http://www.zope.org/Resources/MailingLists.
Now that you've learned about Zope's features and history, it's time to start using it. In the next chapter you'll learn how to get up and running with Zope. Since Zope is free, you can download the latest version, and begin working immediately.