Two Books On Plone 107
(See each) | |
author | (See each) |
pages | (See each) |
publisher | (See each) |
rating | (See each) |
reviewer | Robert Nagle |
ISBN | (See each) |
summary | McKay's book is indeed definitive; Meloni's book is a good introduction |
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 | 1590593294 |
That 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 | 0672326876 |
Julie 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.
Here is what it means... (Score:2)
Plone is great (Score:2, Insightful)
Re:Plone is great (Score:1, Interesting)
Re:Plone is great (Score:3, Interesting)
Plone is based off the Zope CMF, documentation for the CMF/Plone (from a developer standpoint) is virtually non-existent.
I'm only persisting because I know once I figure it out one time, I'll have a good scaffolding for any future content types. I've spent over 2 we
Re:Plone is great (Score:4, Informative)
Developing with CMF was pretty crappy, developing for Plone with Archetypes [sourceforge.net] is a huge improvement. Python and TAL, may not be perfect, but they provide a very simple platform for rapid web based application development.
Your right about docs, they've been questionable in the past. The new plone.org docs section is a big step in the right direction.
Re:Plone is great (Score:2)
Archetypes docs are also kinda crappy, I have references out the yang. However what I do not have, are good working examples of simple to complex products; with detailed explanations of what's happening. I
Re:Plone is great (Score:1)
Re:plone == evil (Score:1)
Aside from the fact that 666 is the number you mean, its because you have your threshold set to 10000 bytes.
I know its a joke. But its not funny.
Re:plone == evil (Score:2)
Re:plone == evil (Score:1)
Soap on Zope. (Score:3, Interesting)
Re:Soap on Zope. (Score:2)
Did you mean the state or the company? I don't work for either one but I am curious why you asked.
Re:Soap on Zope. (Score:2)
may be what you're looking for. Not ideal, but it will let you serve SOAP from Zope
Re:Soap on Zope. (Score:2)
In other words it lets you call soap servers from inside of Zope. I need to go the other way.
Re:Soap on Zope. (Score:2)
Re:Soap on Zope. (Score:2)
Re:Soap on Zope. (Score:2)
Re:Soap on Zope. (Score:2)
1) Soap and provide an RPC mechanism for complex objects not just simple values like strings and numbers. For example if you had a method that returned an object the SOAP client would provide a stub for that object for you automatically.
2) The proper propagation of exceptions back to the client.
There is also the fact that SOAP is theoretically transport independent. In other words you ought to be able to call soap objects via SMTP for example.
Most soap implementation fall far short
Re:Soap on Zope. (Score:2)
I'm sorry, I thought you meant meant the bloat of SOAP over other RPC mechanisms (ONC-RPC, DCE, Java RMI, or even COM and CORBA) and were complaining about constant XML parsing and conversion from UTF-8 to internal data type representation. The complexity of SOAP over XML-RPC is obvious from specs. For an equivalent RPC call I'm not entirely sure that I'd believe that there is much of a difference in the payload size or in the time spent marshalling/unmarshelling the data. Of course with all the extra featu
Re:Soap on Zope. (Score:3, Informative)
Zope doesn't come with SOAP support as standard. There is some work (like the SOAPByCIGNEX [zope.org] module) being done to allow it to be available as an add-on.
There was a recent discussion [zope.org] about it on the Zope-dev mailing list.
Plone among eWeek top enterprise products of 2004 (Score:5, Informative)
Proxy other than apache (Score:3, Interesting)
Please comment!
Re:Proxy other than apache (Score:2)
I have a few apache reverse proxies going here for various purposes and it seems like they are plenty fast and have quite a tiny footprint (and took all of about 5 minutes to set up).
Of course it could be because all my actual apps are in mod_perl and it's only by comparison that "vanilla" apache seems small?
Re:Proxy other than apache (Score:2)
The reverse proxy for my zope is running on a old AMD K6/200 with 64 MB RAM- almost everything is bloat for that machine. Anyway in the next weeks the old machine will be gone and I plan to put the proxy on the machine where zope is running on. Still I dont want too much additional load on that machine. So much for the footprint.
Apart from that: apache is huge and administration and configuration is not trivial and a small and simp
Re:Proxy other than apache (Score:4, Informative)
pound (http://www.apsis.ch/pound [apsis.ch]) is a good and very secure choice. It was developed with Zope in mind, but can be used with any other http server.
pound sanitizes http requests, does load balancing and logging, and can SSL-enable your Zope site.
Re:Proxy other than apache (Score:1)
The second layer is pythondirector(.sf.net) which passes the HTTP (or FTP or WEBDAV) requests through to one of several ZEO servers.
ZEO rocks. It's painless to install, and allows you to just keep chucking new CPUs at a Zope application (I'm sure there's a limit, but I know of very a popular Zope-based site that runswith just a few ZEO servers
Re:Proxy other than apache (Score:2)
thanks
Re:Proxy other than apache (Score:1)
I'm currently in online conference management.
Re:Proxy other than apache (Score:2)
Oh, great!
[I didnt get it working] but im not gonna tell you cuz youre obviously a fucktard who doesnt know how to use google. try looking for yourself, asshole.
Im not looking for a proxy that doesnt work - Im looking for a working one - thanks for nothing.
P.S.:So you have lots of experience and cant tell me you got it working - only that you failed on two tries (probably because you didnt google?).
Python versus Plone/Zope (Score:2)
Re:Python versus Plone/Zope (Score:4, Informative)
There are multiple backends available, and you can get really good performance and security by using the file system backend of the ZODB on top of reiser4.
Most of the performance problems of the plone/zope combo come from plone. So my advice as someone who had the misfortune to optimize a plone/zope based commercial website: take a good look at zope, but stay the hell away from plone.
Re:Python versus Plone/Zope (Score:2)
"What are the advantages of using Apache+MySQL+PHP+More versus straight up C?"
Basically, Zope plus Plone is an application stack that offers presentation, persistence, content mangement, security, and so forth. That it is written in python is a natural benefit, yes, but only an implementation decision.
Re:Python versus Plone/Zope (Score:3, Informative)
This question is like asking why use a library instead of writing everything in c from scratch.
Example of a REALLY SIMPLE Plone site? (Score:1)
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 a
Re:Example of a REALLY SIMPLE Plone site? (Score:1)
Re:Example of a REALLY SIMPLE Plone site? (Score:1)
I used PmWiki [pmwiki.org] because it was really easy to initialize. There were some automated wikispam attacks, so I configured it to require a password (which humans can easily figure out) for editing. (The site doesn't have lots of people watching for vandalism and repairing it. I'm not worried about manual vandalism. Nor do I want to futz around with con
One word: Mambo (Score:2)
It's also reputedly faster than Plone, and written using PHP, so it's simpler to mate it with other
A blog tool for you? (Score:2)
Also, writing small plugins for WP 1.3 is really easy!
Re:Example of a REALLY SIMPLE Plone site? (Score:2)
Try (in order of least to most favorite): Typo3, WebGUI, or preferrably (in my opinion) eZ Publish.
eZ Publish requires more setup, but is considerably more flexible than the others in my list.
Plone is an overdesigned piece of crap (Score:5, Insightful)
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.
Re:Plone is an overdesigned piece of crap (Score:1)
It would be far more accurate to complain about CMF than plone itself.
Re:Plone is an overdesigned piece of crap (Score:1)
BUT: more abstraction layers makes usually cleaner
another right! on squid. if you do serious deployment of plone - you need squid. so what's the problem? there are days where plone.org get's > 1.000.000 hits per day. on a single box. with dynamic content and lots of logged in users.
you're right with the documentation too. another but
Re:Plone is an overdesigned piece of crap (Score:2)
Not true at all. Yes zope is slower than many other application servers. It's also vastly more powerful.
If you want better performance, the turn off debug mode, clean up your skins so you aren't 12 layers deep and enjoy. If you really need to, with ZEO you can easily deal with the need for more processing horsepower by throwing servers at it.
How did parent get modded "Insightful"? (Score:2)
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 [zope.org] (server clustering). Boston.com runs a huge Zope cluster
Missing link (Score:2)
Zope Hosting (Score:1)
Re:Zope Hosting (Score:1)
Re:Zope Hosting (Score:1)
Re:Zope Hosting (Score:1)
I imagine that you can set up Zope/Plone on any VPS or dedicated hosting plan (since you would have root).
Why does nobody ever mention Typo3? (Score:2, Insightful)
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-le
Re:Why does nobody ever mention Typo3? (Score:1)
Re:Why does nobody ever mention Typo3? (Score:1)
Re:Why does nobody ever mention Typo3? (Score:1)
Yahoo switches to PHP. [com.com]
Re:Why does nobody ever mention Typo3? (Score:1)
(note also - Zope isn't just a CMS, it's an application server)
It's cool, my book IS shallow (Score:5, Informative)
Re:It's cool, my book IS shallow (Score:1)
Ruby on Rails (Score:4, Informative)
Re:Ruby on Rails (Score:2, Funny)
I'm drowning in acronym soup already. (Score:2)
DGP chapter 12 gotcha (Score:2, Informative)
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
Three books on plone (Score:1)
http://www.packtpub.com/book/plone [packtpub.com]
Is Zope/Plone Too Complicated? (Score:1)
Well reviewed (Score:2)
Meloni's book is largely targeted at content managers and site administrators, developers won't find it to be as useful.
My brief Zope experience (Score:2)