Two Books On Plone
The Zope/plone combination offers a variety of advantages to the open source developer: robust workflow capabilities, conformity to Web standards, cross-platform support and a sophisticated security model. On the other hand, it has a steep learning curve and deals with objects in an object database (instead of the usual RDBMS/LAMP data model).
First, here's 30 seconds of what Plone is all about (the Slashdot editors can provide the bunnies). Zope is a Python-backed web application server which includes a Zope Management Interface (or ZMI), a web-based interface to modify templates and interact with/administer the Zope Object Database (ZODB). Although Zope can be a standalone webserver, in fact people usually put it behind Apache for reasons of security, performance and caching. Years ago, Zope used a custom scripting language (DTML) to do its business logic, but later switched to an XML-based templating language called ZPT and let users use Python-based scripts to perform actions. Zope is the application server; CMF is the content management framework, and Plone is the standards-compliant front end that lets you manage skins, slots, styles, portlets, forms, actions, content types and installation of products. Then there's archetypes, which make it easier to create new content types and web forms. Oh, have I mentioned that we're dealing with objects here? In other words, we're not just throwing data and text into SQL); we're creating different types of content (documents, events, multimedia objects), storing them as objects (with actions, metadata, etc) and then summoning them (or parts of them) from the object database with ZPT using macros and indices.
From a design perspective, Plone is elegant although so multi-layered that it's often hard to figure out where to make changes. Also, while the Plone front end is snazzy, most users end up having to go to the ZMI to modify the template and edit actions (which, depending on how you look at it, can be an advantage or disadvantage). Finally, although the list of open source products for Plone and Zope is impressive, they don't necessarily play well together, and many products for Zope don't work in Plone and vice versa.
Definitive Guide to Plone author Andy McKay pages 584 publisher Apress rating 5 ISBN 1590593294That is where Andy McKay's book and Julie Meloni's book come in. Of the two books, Andy's is more comprehensive and geared toward the experienced developer (and typical Slashdot reader); Julie's book does more hand-holding and provides more thorough explanations of introductory concepts.
As a lead plone developer, McKay has intimate knowledge of the good, the bad and the ugly for plone. Although his chapters fly by certain introductory tasks at record speed, he explains things well and offers lots of tips and hints throughout the book. (I can't tell you how many times I've put the book down and exclaimed, 'Aha, so that's how you ...'). The sequence of presentation is generally logical with one exception: in chapter 14 (page 459), the book mentions that you can use Zope Enterprise Objects to debug a live server without having to shut down Plone. That is valuable -- even vital-- information, and belonged in the earlier chapter on installing Zope. Although the chapters don't go into great depth, his code examples and commentary are sufficient to explain what is going on.
It's not the main focus of the book, but the sections on system administration (caching, tuning, scaling) are well done although some things are missing (like Virtual Host Monster). It's assumed that readers will be able to find this information elsewhere.
The best parts about McKay's book are how it relates Python programming to Plone. The deeper you get into Plone, the more important it is to write Python scripts and do basic Python debugging. Even basic sysadmin tasks like product management seems to require an understanding of object-oriented concepts. One initial difficulty comes with the idea of URL paths corresponding not to actual directories but objects being contained within other objects. (So that login_form in http://foobar/login_form doesn't necessarily reside within the foobar directory, but is in any directory or object acquired by the foobar object). This type of URL (called a traversal) is explained well enough in the book, but often makes it difficult to figure out where to find things within the ZMI and the file system. Who would have ever thought that the place to edit the login_form object for http://foobar/login_form is /foobar/portal_skins/plone_forms/login_form within the ZMI (which is actually /zopeinstance/products/CMFPlone/skins/plone_forms/ login_form.pt on the file system)? That's why McKay's skin example (in Chapter 7) accomplishes so many things; it provides a "guided tour" through the layers (i.e., scripts, templates, etc) contained within portal_skins; it also runs through the process of creating custom templates and forms based on existing ones. This, by the way, is one of the niftiest features of Zope/Plone; you push a Customize button in the ZMI, and voila! you've cloned an object for customizing. This is dense stuff, but after reading this chapter, I have a better sense of the beast I'm dealing with.
I particularly liked the book's chapters on archetypes and manipulating content types. If Zope/Plone is about manipulating objects, then it helps to have a variety of objects to manipulate. Archetypes lets you create new content types and new views for content types. By providing Python libraries for fields and widgets, archetypes makes it relatively easy to create web forms for data input. McKay's book covers this topic thoroughly and clearly. I also appreciated the chapter on searches and indexing (and the helpful table of indices and index types); this filled in a lot of gaps in my knowledge. The sections on security and workflow contained good examples, and the book also contained a section on internationalization. The programming chapters are the best parts about the book.
On the negative side, I wish there were more charts and tables in the book (perhaps as appendices). A lot of this is already found within Zope help or the Plone site, but it would have been handy to have these things as reference. Although McKay's book contains a good (though brief) introduction to Zope Page Templates, the explanation of the syntax is scattered throughout the ZPT chapter; it would have been much better to summarize all the tal tags in a single table.
Also, at many points during the ZPT chapter and other chapters, McKay refers to Plone and archetype API classes that are described nowhere else in the book. It took me a while to figure out where these things were coming from (and I would refer you to here for API descriptions). The book would have benefited from a better description of APIs, even a high level view of it (You can find some quick references here).
Because of its focus on development, McKay's book spends almost no time on third-party products or "sanctioned" products available in the plone collective. This is somewhat understandable (given the mercurial nature of product development), but the casual reader might finish the book without realizing that additional additional products even exist. (Here's a fairly comprehensive list of Plone and Zope products).
Also, I would have liked better explanation about change management. Plone has its own product installer, but I always have difficulties upgrading products. How do you test products before actually deploying them? How do you manage upgrades (and how do you upgrade Zope itself?) For such an extensible project as Plone, managing the installation, testing and upgrade of third-party products can be a disaster waiting to happen.
Plone Content Management Essentials author Julie C. Meloni pages 258 publisher SAMS rating 3 ISBN 0672326876Julie Meloni's book takes a different approach to the subject, one geared less to Python development and more to deploying third-party products and customizing site appearances. I'm tempted to say that the typical Slashdot reader would find this book "shallow," but really that is not fair. Although Meloni's book contains a short appendix on Python, it focuses more on how Plone works out of the box and how to take advantage of core functionality. In fact, Meloni's slender book contains many useful sections probably deemed too elementary for McKay's book: how structured text works, for example.
Rather than trying to cover everything Plone-related, Meloni identifies a small number of typical tasks and explains them in detail. For example, the book documents the Plone style sheets and how to modify them in the ZMI. Too basic, you say? Well, yes, but it's still useful reference material. Rather than trying to teach you how to write your own Plone product or content type from scratch, she walks us through using that nifty Customize button to clone existing templates for customization (although to tell the truth, you still need would need to know a good bit about Python and ZPT syntax to complete the task). Although the book's section on skins focused mainly on how they relate to style sheets, I found the section on customizing slots to be particularly useful.
In contrast to McKay's book, Meloni spends a separate chapter on deploying and using several popular plone products: a discussion board, a weblog and a photo album. Given that several competing products exist for each category, and that better products are likely to come out later, this chapter will probably be the first to go out of date.
Perhaps the book could have spent less time on the products themselves and more on managing products and testing/troubleshooting them.
Of the two books, McKay's book is the more indispensable, even though I still wound up consulting external sources fairly often for clarification. On the other hand, after reading first McKay's book and then Meloni's, I wish I had read Meloni's book first. Meloni's book provides a great introduction to basic plone concepts; McKay's book is great for the power user/developer. (Still another book, recently released, Cameron Cooper's Building Websites with Plone probably goes into more detail on the Python side; read a sample PDF chapter).
Perhaps I sound like a shill for the publishing industry when I say this, but it sometimes make sense to possess two or more books on a topic. The decision-making process for geeks buying books can sometimes differ radically from the general public. Geeks, for example, don't have qualms about paying full price for a new book if the content is up-to-late and relevant to the task at hand. The ordinary reader might make a purchasing decision on the basis of which book constitutes the highest information density (the $20 book with 200 pages vs. the $30 books with 500 pages). Geeks are also more inclined to view the purchasing decision in terms of time saved (i.e., how much time will reading this book save me in the long run?) From the standpoint of saving time, there's a lot to be said for reading an introductory book first and then moving to a book on more advanced topics.
Of course, Andy McKay's book is available already for free on the web (and kudos to Apress Publishing for allowing this).
** Actually, mysql/postgresql DB adaptors make it possible for Zope to fetch/send sql data; and Archetypes has a function, SQLStorage, to allow data from content objects to persist in a sql database (news to me). Other Web Resources:- Zopezen, Andy McKay's development weblog
- Plone How-to's
- List of Plone Products and Zope Products, Sorted by Category
- Zope & Plone API's. (More here).
- Great Visual Guide to the Zope/Plone Interface
- Handouts from the Plone Conference for 2003 and 2004
- ZopeMag Weekly, an intermittent series of Zope and Plone tips and tricks.
- For general Python introductions, see the Python Tutorial, How To Think Like A Computer Scientist (Python) and Dive Into Python (also published by Apress and free online)
Robert Nagle (aka idiotprogrammer) writes fiction under various pseudonyms. He lives and works in Houston, Texas. In early 2005 he will be launching a plone-backed literary community ezine. You can purchase the Definitive Guide to Plone from bn.com; bn also carries Plone Content Management Essentials . Slashdot welcomes readers' book reviews -- to see your own review here, carefully read the book review guidelines, then visit the submission page.
Its the most comprehensive CMS out there...
Sounds like something the unwashed messes visiting Slashdot need: soap and cologne.
how else would you explain "6666 more btyes"?
Over the last year, Zope and Plone have gained mindshare as open source web application servers.
"Two books on one plane."
:/
Was expecting something about speed reading
And that means what?
Has anybody figured out how you can publish your python methods as soap calls? It does XML-RPC but where is soap?
evil is as evil does
Just today eWeek published their Enterprise Apps Top Products of 2004. At #6 is Plone
Does someone have expierence using a lightweight webserver like thttpd, tux, boa, lighttpd in front of zope/plone instead of apache? Is there some equvialent of VirtualHostingMonster for one of those? I mean, apache is a but of a bloat to be just a proxy ...
Please comment!
What are the advantages of using Plone/Zope versus straight up python? It seems to be just another layer of complexity and slowdown.
It means that over the last year, Zope and Plone have gained mindshare as open source web application servers.
"Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
I've had several failed attempts at using Plone. It's great for "power users", but what I wanted for our group was a REALLY SIMPLE site.
When you visit the site you can either:
* View site as usual
* Login as an "admin"
When logged in as an "admin" ALL I want is:
* Create a page
* Edit text on a page
* Create a link on a page
* Add a picture to the page
* Maybe edit raw HTML, but label that "advanced"
The folks in our group cannot handle the "clutter" (to an untrained eye) of the normal Plone screens.
Are there any Plone template sets that are substantially simpler?
Yes, for myself I'd also like a "super" admin account, which would really just give the normal Plone admin menu. This would include me being able to add other admin users.
Thanks,
Mark
Very good troll, but Zope and Plone are both written in Python. Have a nice day...
Zope is a nice application server, but not exactly fast. It has nice abstractions like acquisition to do very complex web applications with only a few lines of code.
Plone adds more layers of abstraction and makes the whole even slower. It is almost as if the plone designers read a book about advanced OO concepts and wanted to implement every single concept they just learned about in a single application.
The only way to get decent performance out of a plone/zope setup is to put a squid proxy in front of it, but that causes a lot of problems with dynamic content.
The documentation is also horrible. If you are lucky it is just incomplete and out of date, but in most cases there is none at all.
If you want to do a small application with less than one hit per second, go ahead. But for a big site: forget it.
Private property is the central institution of a free society (David Friedman)
http://zope.org/Members/EIONET/SOAPMethod/
Can anyone recommend a good Zope host?
Don't cmf and plone have a reputation for being dog slow?
I have a simple question, why is it that when open source content management is discussed, Typo3 is rarely brought up? Is it because of the complexity?
My latest project involved changing an old static web site into one managed by a content management system. We tried Mambo, Drupal, and Zope, and then Typo3. All of the other content management systems seemed like a toy compared to Typo3.
Typo3 is advanced enough to be compared to SAP portals and Vignette in terms of scalability, stability, and enterprise-level features (eg. super fine grained access control lists and enterprise authentication and revision control..)
Sorry about the rant, but really it seems odd that nobody talks about Typo3. In my mind, it is up there with Apache and Samba with regards to the most important open source projects out there.
It's like as if everyone used some other mom and pop web server, and nobody used Apache!
Prepare for warhammer, slayer of penguins.
\
==========0
o
-WARHAMMER
I wrote Plone Content Management Essentials and it IS shallow, on purpose. In general, it's the book to hand to the PHBs if you need to explain things to them in language they understand. Or, use it to get your feet wet before jumping into the hard-core Zope site/Plone site/Andy's book, etc. Errata and TOC at thickbook.com if anyone needs it. I don't think SAMS has it online yet.
A bit off topic, but according to this post, Dave Thomas's next book (of Pragmatic Programmers fame) will talk about the Ruby on Rails framework, the latest craze in the Ruby world.
Someone throw me a life preserver! (I like the OpenACS one myself.)
Watch out for Chapter 12 in The Definitive Guide to Plone. I guess things have changed a bit with the current release of plone and as a consequence the example is broken. Luckily you can find a copy on the author's site: http://plone-book.agmweb.ca
I only mention it, as this is the chapter on "Writing a Product in Python" which is rather important if you want to get anything interesting accomplished.
Also, not to get too picky, but the code snippets don't match up and when you go to look for a full listing in the back it's the only one not listed. It's a thick book already; I don't see why they didn't add the extra pages.
what about this one?
http://www.packtpub.com/book/plone
I'd recommend the mambo content management system. It's template based (there are loads to download to get you started), it's expandable via modules, to add calendars, forums, document management, news articles, etc. Simple to get up and running for just about anyone. I set it up as our new company intranet, and after a few days it was being administered and populated by the HR dept (very much non techies ;-)
;-)
It's also reputedly faster than Plone, and written using PHP, so it's simpler to mate it with other LAMP projects (I've modified our install pretty heavily to link it to our other backend systems).
I've always written sites from scratch with Perl, PHP, DHTML and Java, but I'll almost certainly be using Mambo as the basis of my next few sites... Very impressed
Code, Hardware, stuff like that.
I've been reading about Plone, installed it on several servers, and doing some routine customization on one or two Plone sites. I have also been reading about Archetypes and custom content types. Honestly, my question: is Zope/Plone just too darn complicated? It has a lot of abstraction, but seems very heavy on complexity. I'm considering moving towards some sort of template-based PHP component framework as an alternative.
I would've rated them slightly differently, but with the same spread between them ("Definitive" getting 7, Meloni's book getting 5). McKay's book is a must have for anyone doing anything with plone, and will really be useful for anyone using Zope that plans on moving to Z3 when it arrives, as CMF is the new interface to Zope with 3.0.
Meloni's book is largely targeted at content managers and site administrators, developers won't find it to be as useful.
this is getting old and so are you
blog
It sounds like you could use a blog tool, such as PHP-based wordpress, be sure to check out the CVS-version, they have a nearly-finished 1.3 in there, much better than the current stable 1.2.2 version!
Also, writing small plugins for WP 1.3 is really easy!
Any technology distinguishable from magic, is insufficiently advanced.
Just today? It's from August of 2004. And still don't care because Bricolage is #1 and that's all I care about. mod_perl + HTML::Mason over PHP any day
I'd like to play with Julie's Meloni's! ;)
I went back to Java in a heartbeat.
www.HearMySoulSpeak.com
This is a troll if I ever saw one. I usually don't respond to trolls, but when they get modded "+4 Insightful", I have to.
Zope is a nice application server, but not exactly fast. It has nice abstractions like acquisition to do very complex web applications with only a few lines of code.
Zope is among the fastest application servers out there, and certainly scales better than any Java-based app server I've seen due to its native support for ZEO (server clustering). Boston.com runs a huge Zope cluster on the back-end, and CBS New York does the same. This is pure FUD.
Plone adds more layers of abstraction and makes the whole even slower. It is almost as if the plone designers read a book about advanced OO concepts and wanted to implement every single concept they just learned about in a single application.
Oh, come on. We haven't added any unnecessary abstractions - we have mostly added glue code to tie together other pieces of Zope and CMF code in a better way, and put a standards-compliant, user-friendly UI on it.
Abstractions are your friend. If you want to know everything about how things work, the Python code is available for you to read. Trust me, you don't want to have to think about every single detail about what's going on underneath the hood at all times.
The goal of Plone is to make things Just Work, and from the feedback we get from our users, we have succeeded in this.
The only way to get decent performance out of a plone/zope setup is to put a squid proxy in front of it, but that causes a lot of problems with dynamic content.
The only way to get decent performance on *any* web-based application server system is to put a cache in front. Apache and Squid work well, and we have giant Plone sites out there with Squid in front and dynamic cache invalidation. And what are the "problems with dynamic content" you are referring to? Both Apache and Squid handle expiry dates for web pages and cache invalidation just fine.
Plone is distributed for development, not deployment. It's common knowledge among all developers that you have to spend some time doing proper caching setups for bigger and more complex sites - but that's the case for every system out there.
The documentation is also horrible. If you are lucky it is just incomplete and out of date, but in most cases there is none at all.
There are three books on it out now, and the best one so far wasn't reviewed here. Andy McKay's book shows you most of what you want to know, is available for free (under a Creative Commons license) online. How is that "horrible"?
If you want to do a small application with less than one hit per second, go ahead. But for a big site: forget it.
It's actually the other way around. If you want to do a small site, Plone's workflow support, schema-based content type definitions, metadata engine, reference support, superior multilingual support and server scalability makes it a tad too complex for small projects, and we usually recommend other systems for people who just want a blog or a forum system.
For bigger organizations like Oxfam America, Credit Muncipal de Paris, Rice University's Connextion project, Clear Channel's racing sites and the USDA Forest Service - you *need* a proper tool to keep the content up-to-date.
Plone is that tool. Take your trolling elsewhere.
Disclaimer: I'm one of Plone's founders, so I'm biased. The claims put forth by the parent poster have nothing to do with reality, though.
Missed the link to Oxfam America - sorry. :)