SAN MATEO (03/27/2000) - I've been looking into Web application development tools lately. I finally got a chance to spend some time learning an extensible object-oriented Web application server called Zope. Not much time, mind you.
I've got a long way to go before I can create even a simple application in Digital Creations Inc.'s Zope.
But I can already see that Zope is interesting enough to recommend that you take a look at it yourself. You can find everything you need to start at www.zope.org. If you want to see a working site based on Zope, visit appwatch.com/Linux.
It took a minimum of effort to install Zope, along with an extra plug-in or two to allow my Web applications to access a MySQL database. Once I had everything set up, I started the built-in Zope Web server, called Zserver. Zope can run in conjunction with an existing Web server such as Apache, but the easiest way to get started is to use the Python-based Zserver.
As you can see, Zope isn't really a single program; it is a conglomeration of modules written in a language called Python. Likewise, you can build much of your Zope Web application in Python. Python is a powerful object-oriented scripting language that some fans consider to be a superior alternative to Java. I haven't programmed in either Python or Java long enough to make such a bold statement, but I can say that it is a lot easier to get started in Python than it is in Java.
If you're unfamiliar with Python, I should warn you that there are certain aspects of Python that can be rather obtuse. For example, it uses text indenting to understand the flow of code. This means that if you neglect to press the tab key just the right number of times while writing a program, your program will not execute properly -- if it executes at all. This may sound bizarre if you're a C programmer. But once you get used to it, it turns out to be quite a nice feature of the language. It forces you to create visually explicit code that remains quite readable long after you forget what it was you were doing.
Although you can use Python in Zope, much of what you will do with Zope uses something called DTML (Document Template Markup Language). DTML seamlessly blends HTML with Web application code. It is similar in some ways to PHP(Personal Home Page), a popular Web programming language I plan to talk more about in the near future.
As one might expect from an object-oriented development tool, a Zope Web application is actually a database comprised of various objects. One of the strengths of Zope is that you can assign user security settings to each object.
This makes it possible to manage a large project with several people assigned to different pieces, without worrying about anyone stomping on a part of the project they're not supposed to touch. Another plus for this approach is that you can sometimes find a Zope object on the Web that does something useful for your site. Rather than write your own, you just plug it in and customize it.
You manage the Zope objects through a Web interface. It is a cinch to get to that interface. It's an attractive interface. And it makes you think Zope development is going to be an intuitive experience. But it isn't even close. It took me an awfully long time just to figure out how to start a new application.
And I got stuck immediately after that.
I could create various other Zope objects. For example, one opens a connection to a database, and another queries that database. But I still haven't figured out how Zope expects me to tie these objects together into a useful whole.
Which brings me to the biggest problem I have with Zope. It has very little documentation on the mundane details of how to get started. There's plenty written about the innards of Zope and how to use DTML. But I'd give real money to have a handbook that just tells me step-by-step how to build the skeleton of an application using the Web interface.
If you're an old hand at Zope and know of such a document available in hard copy or on the Web, by all means share the wealth and let me know. In the meantime I'll hack away at this new marvel and keep you posted on my progress.
Nicholas Petreley is a contributing editor for LinuxWorld (www.linuxworld.com) and InfoWorld, and also works with the Linux Standard Base. Send e-mail to him at firstname.lastname@example.org.