February 23rd, 2004, 10:39 AM
A simple explanation of Zope and Plone, please
I'm getting myself involved in building, or working on, a rather large up and coming site being done by some international campaigning organisations. It's apparently based on Plone...
Now I had a look around the Plone web site, and the Zope web site, and they have me confused, because they both say that they are much more than your average CMS (like PHPNuke), but aside from buzzwords, I can't find a good simple description.
"Zope is an open source application server for building content managements, intranets, portals, and custom applications."
Wonderful! Can somebody tell me what it is exactly?
February 23rd, 2004, 11:20 AM
Ok lets give this a go , not really very into either Zope of Plone right now but as i understand it...
Hope that ones a little clearer than the ones you've been looking at
You might also like to read a little though the Zope Book, should explain everything you need to know about Zope.
Last edited by netytan; February 23rd, 2004 at 11:25 AM.
February 23rd, 2004, 12:53 PM
I can't say much about Zope because I didn't dig very far into it, but;
It doesn't publish web pages from files on a filesystem like Apache, IIS, etc. (where /images/a.jpg refers to a picture in a folder).
It does publish Zope-Python objects from its filestore - the Zope Object Database (ZODB), and it just happens that these can be HTML pages and pictures among other things. (where /images/a.jpg is more comparable to a method call like self.images.a_jpg() or similar). I don't know the details regarding Zope Products and so on though.
Once you get used to that idea, it makes a bit more sense.
ZPT are the Zope Page Templates, and are the rough equivalent of other server-side page processing.
METAL/TALES expressions are how you include Python code in your HTML pages - somewhat akin to PHP.
DTML was an earlier version of this, but I believe it is now mostly depracated.
ZPT basics -> http://www.devshed.com/c/a/Zope/ZPT-Basics-part-1/
Get zope and try it out. It doesn't take much installing.
February 23rd, 2004, 04:06 PM
just a quick question - zope does require root access, right?
February 23rd, 2004, 04:49 PM
Installing Zope like any other software will probably require root access yes, although playing with Zope itself shouldn't
February 23rd, 2004, 05:10 PM
Zope is difficult to describe, since it works in a way quite different from other application servers (at least the ones that I have encountered - I don't know anything about PHPNuke). Firstly, as sfb says, it stores everything in an object database (called ZODB) instead of on the filesystem. Every URL you access on a Zope system is resolved to an object. I will use as an example pages on the Zope.org website, since that is the most obvious public site that is Zope powered.
OK, lets take as our example this URL:
which is the starting page for The Zope Book. This is a reference to an object with the ID of 2_6Edition, which is in a folder called ZopeBook, which is in a folder called Books, etc. The folders are not directories, but are objects in the database so they can have arbitrary data associated with them in addition to the objects they contain.
The object 2_6Edition could be one of any number of types of object - it could be an HTML page, a Python script, a Perl script, a DTML page (a page using Zope's tag markup language), a ZPT page (a newer markup language), a structured text page (plain text that is converted to HTML using simple syntax rules), and so on. My guess is that it is another folder object containing an index_html file, which is displayed by default when you browse to a folder, in the same way that an index.html page is displayed in non-Zope systems. If you look at the page you will see that it contains a table of contents for the book. I suspect that these pages are all objects within the folder, and that the index_html object is generating the table dynamically from the folder contents. If a new chapter was added to the book then the contents page would not need to be updated manually.
If you had management rights to the folder you could open up a management screen in the browser and add & remove objects, rename objects, etc.
One of the unique features of Zope is its process of object inheritance, call acquisition in Zope-speak. If you look at the page I mentioned, you will see that there is a navigation bar down the left hand page. This will have been defined at the top level folder, and inherited (acquired) by all the folders below it. At any level you can override this inheritance so that you can change the look or behaviour of part of the object tree. In Object Oriented Programming terms acquisition is fully polymorphic. If you don't know what that means don't worry about it - just take my word for it, it is powerful stuff.
Another example of acquisition is the page navigation for the book that appears on this page, and on all the book chapter pages. This will have been defined once (probably in this folder) and acquired down through the tree.
Virtually everything in Zope can be subject to acquisition. For example most objects can have a 'Title' property, which is the string to be displayed in the title bar of your browser if you point it to that object. If an object does not have a Title property set, then Zope uses the Title of the parent object, and so on up to the root folder.
This has barely scratched the surface of Zope. There is ZEO, which can distribute Zope over a server farm to handle huge amounts of traffic. There are hundreds of open source products available - plug in components that create new types of Zope objects. There are ZClasses, which let you create new types of objects without leaving the comfort of your browser. There is the Zope security model, which lets a user be given editing right to a subtree. There is the ability to undo changes or create the equivalent of branches in a source control system. Zope is Big. Zope is Complex. Zope is Powerful.
CMF and Plone are built on top of Zope and hide much of the complexity, while adding things like workflows - e.g. a user can submit a change to their part of the site, which will be queued to be approved by an editor before being made public.
The best way to find out more about Zope is to install it and play around. It comes with its own web server, so you do not need to mess around with installing Apache and editing config files to get it working. You do not even need to install Python - it is all included, and works straight out of the box.
Hope this helps.
Dave - The Developers' Coach