Zope 3 Developer's Handbook
|
| List Price: | $54.99 |
| Price: | $37.52 & eligible for FREE Super Saver Shipping on orders over $25. Details |
Availability: Usually ships in 24 hours
Ships from and sold by Amazon.com
35 new or used available from $4.65
Average customer review:Product Description
Zope is an important open-source application server that is increasingly being used by large organizations such as Viacom, NATO, AARP, Bell Atlantic Mobile (Verizon Wireless), Red Hat, NASA, and the US Navy.
The forthcoming new version, Zope 3, is expected to two to three years ahead of its time, thanks to a sophisticated component architecture similar to the ones found in COM and CORBA. In addition to its renowned security and remote updating abilities, it also comes with several new features that developers have been waiting for, including the ZODB transaction mechanism, I18n/L10n support, a powerful workflow engine, an advanced security model, several templating capabilities, and much more.
Zope Developer's Cookbook concentrates on covering the tasks that an application developer would want to learn how to accomplish in order to implement Zope 3, and it also includes an advanced introduction to what's new in Zope 3. New developers will use this first-to-market, solutions-oriented, task-based reference on a daily basis as they build powerful Web applications with Zope.
Product Details
- Amazon Sales Rank: #870048 in Books
- Published on: 2005-01-30
- Original language: English
- Number of items: 1
- Binding: Paperback
- 456 pages
Editorial Reviews
About the Author
Stephan Richter is Ph.D. student in Physics at Tufts University in Somerville, MA. He has been part of the Zope community since the summer of 1999, where he has been involved in many community activities such documentation and organizing the first EuroZope conference. Stephan also consulted with many Zope solution providers, developed many add-on products and published two community-written books on Zope. After attending the first public Zope 3 sprint early in 2002, Stephan has been actively involved in developing Zope 3, where he took command of several sub-projects such as internationalization and documentation.
Excerpt. © Reprinted by permission. All rights reserved.
Introduction
What is Zope? Although this sounds like a simple question that could be answered in a line or two, it is inadequate to say that it is an open-source application server or that it is a content management system. Both of these descriptions are true, but they really put a limit on Zope that simply does not exist. So, before we look at a more complete definition of Zope, let's discuss some of the solutions Zope has been used for.
As mentioned previously, many people use Zope as a content management system (CMS). CMSs are usually Web-based (browser-managed) systems. Basically, a user can manage the content of a page through a set of web forms, workflows, and editing tools. However, people have also used Zope for an entirely different CMS genre. Some companies, such as struktur AG, have successfully used Zope to interface with the XML database Tamino (from software AG).
Zope is also commonly used as a Web application server, in which case it is used to build web-based applications, such as online shops or project management tools. Of course, Zope is also suitable for regular websites.
Zope can also be employed as a reliable back-end server, to help manage the logistics of a company's operations. In fact, bluedynamics.com in Austria built a logistic software program based on Zope 2 ZClasses and a relational database that was able to handle hundreds of thousands of transactions each day, from taking credit card information and billing the customer to ordering products from the warehouse, using XML-RPC. This is the true strength of Zope because it allows Zope to work with not only web-familiar protocols but also any other network protocol you can imagine. Zope 3, with its component architecture, excels even more in this area, because third-party add-on packages can be easily plugged in or even replace some of the existing defaults. For example, the Twisted framework can replace all of ZServer (the Zope server components).
Now that you know about some of the uses of Zope, we can use the following more formal definition of Zope: Zope is an application and back-end server framework that allows developers to quickly implement protocols, build applications (usually web-based), and function as glue among other Internet-enabled services.
Before it developed Zope, Zope Corporation reviewed many possible programming languages for developing the framework, such as Java, C/C++, Perl, and Python. After extensive research, the developers of Zope found that only Python would give them a competitive advantage compared to the other large framework providers, such as IBM and BEA.
Powerful Python
Python is a high-level, object-oriented scripting language that produces—by design—clean code through mandatory indentation. Although Perl is also an interpreted scripting language, it lacks the cleanness and object-orientation of Python. Java, on the other hand, provides a nice object-oriented approach, but it fails to provide powerful tools to build applications quickly. So it is not surprising that Python is used in a wide variety of real-world situations, such as by NASA, which uses Python to interpret simulation data and connect various small C/C++ programs. Also, Mailman, the well-known mailing list manager, was developed using Python. Academics use this easy-to-learn language for their introductory programming courses.
Because Python is such an integral part of the understanding of Zope, you should know it well. If you are looking for some introductory documentation, you should start with the tutorial that is available at the Python home page, http://www.python.org/doc/ current/tut/tut.html. Also, there are a wide variety of books on Python, including Python Web Programming by Steve Holden, Python Programming Patterns by Thomas Christopher, and Python How to Program by Harvey Deitel, et al.
In the Beginning There Was...
Zope's is a classic open-source story, and knowing this story gives some background on why the software behaves the way it does.
Before Zope was born, Zope Corporation (which was originally named Digital Creations) developed and distributed three separate products, called Bobo, Principia, and Aqueduct. Bobo was an object publisher written in Python, which allowed a developer to publish objects as pages on the Web. It also served as an object database and an object request broker (ORB), converting URLs into object paths. Most of this base was implemented by Jim Fulton in 1996, after he gave a frustrating Python CGI tutorial at the International Python Conference. Even though Bobo was licensed under a "free" license, it was not totally open-source, and Principia was its commercial big brother.
In 1998, Hadar Pedhazur, a well-known venture capitalist, convinced Digital Creations to open up its commercial products and publish them as open source under the name Zope. Zope stands for "Z Object Publishing Environment." The first Zope release was 1.7, and it came out in December 1998. Paul Everitt, former CEO, and all the other people at Zope Corporation, converted their product company into a successful consultant firm.
In the summer of 1999, Zope Corporation published version 2.0, which is currently the stable release, expected to be replaced by Zope 3.0 in the next year. Zope gained a lot of popularity with the 2.x series; it is now included in all major Linux distributions, and many books have been written about it. Originally this was going to be a book on the Zope 2.x API, but with the beginning of the Zope 3.x development in late 2001, it seemed much more useful to do the documentation right and write an API book parallel to the development itself. In fact, when these words were originally written (in 2001), there was no Zope Management Interface (ZMI), and the initial security had just been recently implemented. Currently, the first stable version of Zope 3, X3.0.0, has just been released, and by the time you read this book, Zope X3.1 might already exist.
Zope 3 Components
Zope 3 makes use of many of the latest and hottest development patterns and technologies, with "a twist," as Jim Fulton likes to say. But Zope 3 also reuses some of the parts that were developed for previous versions. Users will be glad to find that Acquisition (but in a very different form) is available again, as are Zope page templates (ZPT) and Document Template Markup Language (DTML), although with less emphasis. Also, Zope 3 contains a ZMI, but this ZMI has been completely developed from scratch in a modular fashion so that components can be reused and the entire GUI can also be altered as desired.
But DTML, ZPT, and Acquisition are not the only components to receive a new face in Zope 3; external data handling has also been totally reworked to make external data play better together with the internal persistence framework, so that the system can take advantage of transactions and event channels. Furthermore, the various external data sources are now handled much more generically and are therefore more transparent to the developer. But which external data sources are supported? By default, Zope 3 comes with a database adapter for Gadfly; additional adapters for PostGreSQL and other databases already exist, and many others will follow. Data sources that support XML-RPC, such as the very scalable XML database Tamino, could also be seamlessly integrated. However, any other imaginable data source can be connected to Zope 3 by developing a couple Python modules, as described in various chapters throughout this book.
During the past five years (during the age of Zope 2), not only was Zope developed and improved, but many third-party products were written by members of the very active Zope community for their everyday need. These products range from hot fixes, database adapters, and Zope objects to a wide range of end-user software, such as e-commerce, content management, and e-learning systems. Some of these products have turned out to be very useful to a wide variety of people—so much so that their concepts have been incorporated into t...
Customer Reviews
Useful, but limited in scope and effectiveness
I bought this book hoping it would be a good introduction to Zope 3. I browsed it in the bookstore and it seemed to include all necessary ingredients introduced in a sensible sequence.
The book is targeted at reasonably experienced developers, who know well the basic concepts of content publishing, and who've written Python code far beyond the "hello, world!" stage.
My main gripe with it, is that it assumes too much that the reader is familiar with the Zope 2 platform. As such, many terms were left unexplained, while others were presented only by comparison with their Zope 2 counterparts.
Subsequently, although this isn't exactly the fault of the author, the book was primarily written using a development version of Zope 3. In all fairness, the book was published shortly after the first final release of Zope 3, so it would have been impossible to meet the deadline of the publisher and have written it all using the final release. So, some things work, others don't without some tweaking.
The general structure of the book is sound. Some things could have been introduced at different places in the development stage. For instance, internationalisation is described extensively before the reader is presented anything about component development, which seems backwards to me. In general, however, the progression is fairly natural.
A typical chapter presents the scenario of the lesson, followed by an example, followed by the functional tests. The main problem is that there is little analysis, if any, about the principles of the system just introduced. Generalising from the examples in the book is very difficult for two reasons: they include the idiosyncrasies of the author, and other sources of documentation of Zope itself are too scarce and miserable to allow one to achieve a deeper understanding of the point of view of the author.
To put it shortly, the book presents the personal views of the author on Zope 3 development, with very few explanations of the logic behind them. Perhaps these reasons are obvious for a reader experienced with Zope 2. However, given the radical design differences between Zope 2 and Zope 3 (claimed on their site), I fail to see why I should first learn Zope 2, in order to easily understand this book.
The focus on functional tests is admirable, and many developers will, hopefully, learn from it. However, I believe it is misplaced in a book that suffers from the lack of explanations of the reasoning behind the author's opinion.
Ultimately, it is just some structured information about a product that doesn't have virtually any documentation aside of IRC logs and some functional tests, which are considered to be documentation by its developers. No matter how self-documenting their code might be (and it is!), the structure of such a complex system cannot be learnt only from reading the source code.
I asked myself if I would buy this book after, say, having borrowed it for a while from a library. I tend to say no.
If you needed to learn Zope 3 immediately, then buy it. It's probably the best book available on this topic at the time I'm writing this review. However, it is nowhere near good.
If you use Zope 3, have this book on your desk
Having Stephan Richter's Zope 3 Developer's Handbook next to you while you work signals to everyone that a) you're using the world's most advanced web application platform and b) you're into serious productivity!
Zope 3 Developer's Handbook started its life as a series of "recipes" -- short, pithy how-tos that don't waste time with theory and get you straight into the code. Stephan has preserved this pattern to create an essential tutorial and reference that, well, reads like a book! (I.e. something you can hold in one hand, leaving your other hand free to sip your favorite beverage, slumped on the couch...you know, a book :-)
I'm a contributor to the Zope 3 project and have a fairly good idea of what I'm doing when it comes to using the platform. After getting Stephan's book, I was surprised at how much I didn't know! And this is coming from a book that is eminently approachable and easy to use. It's density of information sneaks up on you -- like, "wait a minute...I just coved a ton of ground...that was really easy."
Okay, some credit goes to the Zope 3 team, which assembled a remarkably straight forward platform for web application development. Nonetheless, Stephan shows a mastery for putting the pieces together to in way that's educational and easy to use.
One of the strengths of the book is that it's code-centric. If you're a Python developer you'll appreciate that code speaks louder than words. Stephan understands this and wrings as much instructive power from the code as any Python aficionado could expect.
If you're not a Python developer, don't dismay! You have a lot to look forward to in this book -- you not only get to learn about Zope 3, you get to see first hand why Python is the "Best Darned Programming Language on Earth" [tm]. (Disclaimer: not really trademarked ;-)
If you're not familiar with Zope but are interested in web application platforms (including the enterprise heavy weights J2EE and .NET), take a serious look at Zope 3 through Stephan's book. While Zope 3 is not a complex layer of heavy handed architectural frameworks (a lot of people think this is a mark of a good platform), it is extraordinarily capable at building world class apps. (I use the term "word class" in the rich tradition of PR prose...hackers, please disregard.)
I guess I'm endorsing the book. Darn...I wanted to write one of those hard hitting New York Times reviews that caused Stephan to reconsider his career as an author. Sadly for my career as a critic, I picked the wrong book to write about ;-)
So, anyone still on the fence by now should click "Add to Shopping Cart" anyway. At the very least, having Stephan's book on your desk will make you look extremely savvy and have your colleagues scratching their heads wondering if it's the new shirt or maybe if you've lost some weight.
Excellent info, awkward editing
While the information is great, there could have been a lot more done in the editing process to clean up sentence and paragraph structure. In several instances the author will present multiple potential approaches to an issue but only cover one of the approaches.




