Slashdot Log In
Professional Plone Development
Posted by
samzenpus
on Wednesday November 07, @12:50PM
from the read-all-about-it dept.
from the read-all-about-it dept.
Michael J. Ross writes "Among the hundreds of content management systems (CMSs) available for building Web sites, Plone may not be the most popular; but for the majority of experienced Python developers, it is without equal. This is partly due to Plone being one of the few major CMSs written in Python, and partly due to its powerful extensibility. Customizing and extending Plone, however, are not for the faint of heart. Fortunately, help is at hand, in Professional Plone Development, a book written by seasoned Plone developer Martin Aspeli." Read below for the rest Of Michael's review.
| Professional Plone Development | |
| author | Martin Aspeli |
| pages | 420 |
| publisher | Packt Publishing |
| rating | 7/10 |
| reviewer | Michael J. Ross |
| ISBN | 1847191983 |
| summary | A practical exploration of how to extend the CMS Plone. |
Professional Plone Development was put out by Packt Publishing, on 26 September 2007, under the ISBNs 1847191983 and 978-1847191984. On the book's Web page, visitors can order a copy of the book (more on this later), download the sample source code found in the book, submit feedback, ask questions of the publisher, and download a sample chapter — specifically, Chapter 2, which presents the case study used by the author. For anyone who wants to get the most out of this book, downloading and working through the sample code would be extremely valuable.
The book's material is organized into 19 chapters, spanning 420 pages — despite what is reported on the publisher's Web page, which as of this writing indicates that the book comprises 300 pages. The book's chapters are grouped into four parts. The first one, the briefest, sets the stage for what follows, by presenting a context for Plone development, including the CMS's history, its competition, its use as a stand-alone application versus use as a framework, and other foundational matters. It also introduces the case study — a cinema chain's Web site — used throughout the book to illustrate the concepts being taught. Lastly, the first part of the book covers the development environment needed by the reader to follow along, including discussion of Zope, which is an open source application server designed for creating CMSs and other Web-based applications.
The second part of the book covers Plone customization: basic concepts, laying out a site's strategy, security and workflow issues, add-on products, and creating a new theme. The book's third part, the longest, covers how to extend Plone with new functionality: Zope programming essentials, custom content types, standalone views and forms, working with a relational databases, user management, creating user interfaces with KSS, and more. The fourth and last part of the book addresses real world deployment of one's extensions, including Zope server management, production server setup, LDAP authentication, and possibilities for the future. Unlike most technical books, the author provides at the end a brief yet worthwhile section on where the reader can go next to learn more along the same lines as the book. The brevity of the section is certainly not from a lack of knowledge or helpfulness on the part of the author, but rather the dearth of information available to developers interested in learning about how to extend Plone.
There's a great deal to like about this book. The author clearly possesses the expertise and experience needed for providing instruction on a challenging topic such as this. His explanations are not abbreviated, as seen in so many other technical monographs. Furthermore, most programmers learn best by viewing and mentally dissecting sample code. For such people, Martin Aspeli's practical approach — focusing on a substantial sample application — will prove more engaging and instructive than the made-up and oftentimes overly simplistic examples found in many computer programming books — including the increasingly popular cookbook titles. On the other hand, by placing almost all of the discussion within the framework of a single sample application, the author diminishes the potential of the book for reference purposes. To benefit the most from this book, the reader definitely would want to work through all of the chapters, in detail, and in the order presented.
In presenting the many steps of creating the case study application, the author provides a generous amount of information on what he considers to be best practices, to make the Plone development process more reliable, and the resulting code easier to maintain and further extend in the future. The confident authority with which the author covers these principles, and the validity of the examples provided, demonstrates his knowledge of the subject matter, and reassures the reader that the author has the experience to provide reliable technical guidance.
In terms of prerequisites, readers should have a solid familiarity with Python and Plone. The book covers Plone version 3.0, but still would be of value to developers who have not yet upgraded from an earlier 2.x release.
Professional Plone Development is definitely best suited for Plone developers and administrators from the intermediate to advanced levels. However, even someone fairly new to Plone, would benefit from what it offers. In fact, carefully working through all of the material, and taking the time to really understand it, could take a developer from the beginner to the intermediate level. With further experience, subsequent rereadings of the book would likely yield further insights. It's that kind of book — meaty and in-depth, and not in any way a shallow "dummies" book.
However, there are some criticisms that should be leveled against this book, although none of them have anything to do with the writing of the author or the sample code. Rather, these are recommendations for future improvement directed to the publisher. First and foremost, the book's print on the page, is quite shiny — and not in the sense of a "Firefly" compliment. Rather, it reflects light as if the ink were extremely glossy. As a result, depending upon the placement of one's reading light, the page being viewed invariably has a large shiny spot, forcing the reader to keep rocking the book back and forth, relative to the light source, in order to shift the glare away from the section on the page that is currently being viewed. Of the hundreds if not thousands of technical books I have read, this is the only one with this type of printing, and I hope it is the last. This problem is not seen with the largest text of all, such as "Part N" at the beginning of each of the book's four major parts.
The images in the book, of which there are few, have a high degree of pixelation, which makes them look cheap, though it certainly does not make them impossible to read. As with the book's text, the pictures suffer from the same annoying shininess.
Earlier it was mentioned that the prospective reader can order a copy of the book from the publisher's Web site. However, I would not recommend this until the publisher improves the way that they package their books for shipping. Rather than enclosing the book in a plastic bag or a piece of clean wrapping paper, to protect it, the book is placed bare inside of the shipping box, in which it bounces around during transit, as it makes its way to the purchaser from the shipping/distribution facility. Consequently, the corners and edges of the book are easily curled, and the outside surfaces of the book's cover are scratched from the imperfections found in the shipping box's interior. This shows what can happen with books that are mailed with no internal protection. Publishers should not assume that what the shipping department sees when they place the book in the box, is what the customer sees days later when they receive it. Fortunately, this book is available from all major online booksellers, including the 11 firms listed on the publisher's Web page, for various countries. While this might not guarantee better protection of the book's cover, I have had far fewer similar problems with Amazon.com, for instance.
Despite these production flaws — all of which can be corrected — Professional Plone Development is a worthy addition to the library of any Plone administrator interested in making the most of their Plone installation, any Python developer who wants to create Web sites without reinventing the wheel, and any professional programmer interested in taking advantage of the growing demand for Plone developers.
Michael J. Ross is a Web developer, writer, and freelance editor.
You can purchase Professional Plone Development from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The book's material is organized into 19 chapters, spanning 420 pages — despite what is reported on the publisher's Web page, which as of this writing indicates that the book comprises 300 pages. The book's chapters are grouped into four parts. The first one, the briefest, sets the stage for what follows, by presenting a context for Plone development, including the CMS's history, its competition, its use as a stand-alone application versus use as a framework, and other foundational matters. It also introduces the case study — a cinema chain's Web site — used throughout the book to illustrate the concepts being taught. Lastly, the first part of the book covers the development environment needed by the reader to follow along, including discussion of Zope, which is an open source application server designed for creating CMSs and other Web-based applications.
The second part of the book covers Plone customization: basic concepts, laying out a site's strategy, security and workflow issues, add-on products, and creating a new theme. The book's third part, the longest, covers how to extend Plone with new functionality: Zope programming essentials, custom content types, standalone views and forms, working with a relational databases, user management, creating user interfaces with KSS, and more. The fourth and last part of the book addresses real world deployment of one's extensions, including Zope server management, production server setup, LDAP authentication, and possibilities for the future. Unlike most technical books, the author provides at the end a brief yet worthwhile section on where the reader can go next to learn more along the same lines as the book. The brevity of the section is certainly not from a lack of knowledge or helpfulness on the part of the author, but rather the dearth of information available to developers interested in learning about how to extend Plone.
There's a great deal to like about this book. The author clearly possesses the expertise and experience needed for providing instruction on a challenging topic such as this. His explanations are not abbreviated, as seen in so many other technical monographs. Furthermore, most programmers learn best by viewing and mentally dissecting sample code. For such people, Martin Aspeli's practical approach — focusing on a substantial sample application — will prove more engaging and instructive than the made-up and oftentimes overly simplistic examples found in many computer programming books — including the increasingly popular cookbook titles. On the other hand, by placing almost all of the discussion within the framework of a single sample application, the author diminishes the potential of the book for reference purposes. To benefit the most from this book, the reader definitely would want to work through all of the chapters, in detail, and in the order presented.
In presenting the many steps of creating the case study application, the author provides a generous amount of information on what he considers to be best practices, to make the Plone development process more reliable, and the resulting code easier to maintain and further extend in the future. The confident authority with which the author covers these principles, and the validity of the examples provided, demonstrates his knowledge of the subject matter, and reassures the reader that the author has the experience to provide reliable technical guidance.
In terms of prerequisites, readers should have a solid familiarity with Python and Plone. The book covers Plone version 3.0, but still would be of value to developers who have not yet upgraded from an earlier 2.x release.
Professional Plone Development is definitely best suited for Plone developers and administrators from the intermediate to advanced levels. However, even someone fairly new to Plone, would benefit from what it offers. In fact, carefully working through all of the material, and taking the time to really understand it, could take a developer from the beginner to the intermediate level. With further experience, subsequent rereadings of the book would likely yield further insights. It's that kind of book — meaty and in-depth, and not in any way a shallow "dummies" book.
However, there are some criticisms that should be leveled against this book, although none of them have anything to do with the writing of the author or the sample code. Rather, these are recommendations for future improvement directed to the publisher. First and foremost, the book's print on the page, is quite shiny — and not in the sense of a "Firefly" compliment. Rather, it reflects light as if the ink were extremely glossy. As a result, depending upon the placement of one's reading light, the page being viewed invariably has a large shiny spot, forcing the reader to keep rocking the book back and forth, relative to the light source, in order to shift the glare away from the section on the page that is currently being viewed. Of the hundreds if not thousands of technical books I have read, this is the only one with this type of printing, and I hope it is the last. This problem is not seen with the largest text of all, such as "Part N" at the beginning of each of the book's four major parts.
The images in the book, of which there are few, have a high degree of pixelation, which makes them look cheap, though it certainly does not make them impossible to read. As with the book's text, the pictures suffer from the same annoying shininess.
Earlier it was mentioned that the prospective reader can order a copy of the book from the publisher's Web site. However, I would not recommend this until the publisher improves the way that they package their books for shipping. Rather than enclosing the book in a plastic bag or a piece of clean wrapping paper, to protect it, the book is placed bare inside of the shipping box, in which it bounces around during transit, as it makes its way to the purchaser from the shipping/distribution facility. Consequently, the corners and edges of the book are easily curled, and the outside surfaces of the book's cover are scratched from the imperfections found in the shipping box's interior. This shows what can happen with books that are mailed with no internal protection. Publishers should not assume that what the shipping department sees when they place the book in the box, is what the customer sees days later when they receive it. Fortunately, this book is available from all major online booksellers, including the 11 firms listed on the publisher's Web page, for various countries. While this might not guarantee better protection of the book's cover, I have had far fewer similar problems with Amazon.com, for instance.
Despite these production flaws — all of which can be corrected — Professional Plone Development is a worthy addition to the library of any Plone administrator interested in making the most of their Plone installation, any Python developer who wants to create Web sites without reinventing the wheel, and any professional programmer interested in taking advantage of the growing demand for Plone developers.
Michael J. Ross is a Web developer, writer, and freelance editor.
You can purchase Professional Plone Development from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
ZOPE (Score:5, Informative)
(http://www.quityourjobday.com/)
In any event, when we looked at Plone we ditched it immediately. It was too much. We lost all the abilities to control the minutia of any given piece that we wanted and the bubble up ability of Zope was more or less lost.
I'm NOT saying don't use Plone. It has a lot going for it... but don't forget to look under the hood and see if straight Zope will do what you need first.
Use the right tool for the job (Score:5, Informative)
(http://limi.net/)
Writing a gambling application in Plone is absolutely not what it's built for, in those cases you should use something that fits the use case better -- Zope 3, Django, TurboGears or Pylons come to mind if Python is your language of choice. They are all excellent frameworks, Plone is much closer to an application than a framework.
-- Alexander Limi, Plone co-founder
Plone vs. everything else (Score:5, Informative)
(http://honeypot.net/ | Last Journal: Friday April 07 2006, @09:33AM)
I love Python. In fact, I wrote a short magazine article [freesoftwaremagazine.com] about how much I like it (although I admit that the promised sequel never materialized; sorry Tony). Having said that, working with Plone was like pulling teeth. It's obviously a nice system with huge potential and excellent customization options, but the learning curve is enormously steep.
We ended up abandoning our Plone intentions and moving toward Drupal for pre-made CMS stuff; even if I don't like hacking in PHP, hundreds of other people have already done most of the work [drupal.org] for just about anything we might conceivably want to do. For true web application development beyond content management, we switched to Django and haven't looked back. If you already know Python, Django's learning curve is exceedingly shallow.
I don't hate Plone. It's just that it didn't seem to offer anything more than its competition, and that's from someone who already built a large web application in Zope (which is the platform Plone is built upon). Having said that, this book and others like it can hopefully make it a lot easier to get started with Plone development. It has great possibilities if you can get past the startup cost.
Whats yer poison with python then (Score:2)
(http://www.webgeekworld.com/ | Last Journal: Thursday April 27 2006, @07:47AM)
Plone is pretty neat, but... (Score:1)
(http://www.joealba.com/)
http://www.heise-security.co.uk/news/98576 [heise-security.co.uk]
Plone is awesome (Score:2)
(http://www.ultraviolet.org/)
http://plone.org/about/movies [plone.org]
Wub and Flizmo are interoperable (Score:1, Troll)
Besides which, I heard somewhere that PL/ONE has a syntax worse than JOSS...
Plone! (Score:1)
Plone handles large-traffic websites (Score:1)
switched from plone to ruby on rails (Score:1)
Thank you! (Score:1)
(http://martinaspeli.net/)
No go on Plone (Score:2)
My 2 cents.
Plone is fantastic (Score:2)
There is an incredibly steep learning curve and sub-par documentation, but once you get your head around it the speed and ease of development amazes everyone I develop for (And myself).
Having started using Java/Tomcat again for a project, It feels like taking several steps backwards. Apart from the the (imho) superiority of Python over Java*, The entire development process in Java feels antiquated, slow, error-prone, and difficult to scale (Not to mention Javas #1 Philosophy- if it aint broke, try adding XML).
I ended up writing my own framework to replicate my favorite parts of Zope/Plone (mainly Skins, ZPT, and Zope3 Views) and am feeling much more productive.
*I will admit, there are a lot of things- most notably typing and Interfaces- that I would love in Python, but overall Python wins over Java
Are ther any good cms? (Score:1)
Then again, I've only ever used DotNetNuke, which is a complete joke of an application.
A name like plone... (Score:1)
Re:eeh whaaa? (Score:2)
(http://del.icio.us/Abcd1234/)
Wha? The description says:
"Plone is a content management framework"
What else do you need to know. Unless, of course, you don't know what a CMS is, in which case you shouldn't be bothering with this article in the first place.
Re:eeh whaaa? (Score:2)
(http://honeypot.net/ | Last Journal: Friday April 07 2006, @09:33AM)
I bet "America's Funniest Home Videos" has you in stitches, doesn't it?
Re:eeh whaaa? (Score:2)
Plone is a content management framework
A simpler way to describe it is as a content management system. But that's actually kind of a limited definition of it. Think of it as features on top of Zope.
What's Zope? Zope in this simple example is the guts of the content management system. The big advantage the entire system has is the design is more robust and scalable (ex. clustering) and has far better developer interface than your average PHP cms. (Drupal I'm looking at you)
Change management in general is not pretty and while they claim postgresql support, it's actually quite limited. It's great for more rapid development and small sites. But if your infrastructure already has clusters, then you would want to look very closely at Plone and perhaps even Zope.
Sites running Plone (Score:5, Informative)
(http://limi.net/)
http://plone.net/sites [plone.net]
Novell, Trolltech, CIA, Akamai, Discovery Magazine, Oxfam -- these are hardly small sites.
If you're going to troll, please at least troll on something that is close to the truth.
Re:eeh whaaa? (Score:1, Insightful)
That should give you more than a clue as to what Plone is.
Right below it, under "What is Plone?" is a link: "What is A CMS?"
I think you should click that and read it.
It's your ignorance, not someone else's design/usability flaw.
I can't believe this got a 5 rating - sheesh.
Re:eeh whaaa? (Score:2)
You mean, other than the obtusely-titled "What is Plone?" section on the home page?
I think you should get your Braille reader checked out.
Re:eeh whaaa? (Score:1)
What? Right on the start page on plone.net, directly beneath the headline, I can read the following description:
"Plone is a leading open source Content Management System, and people use it to run their web sites, intranets and extranets."
It's a CMS.
If you want to know what it can be used for, I suggest you read the case studies. They shouldn't be difficult to find either, because they are introduced right below the text I quoted above:
"Curious about what sort of things Plone is used for? Read case studies [...]"
Maybe you were looking at some other site??
Re:Probably a requirement for Plone developers (Score:1)
(http://martinaspeli.net/)
Thanks for recommending my book. Although I am being paid royalties, the main motivation was precisely what you identified: we need more, and better documentation. I think this is a problem that affects quite a few open source projects, though.
I won't claim that Plone (or Zope) is small and lightweight (I do quite like Pylons, though). I do, however, find it to be one of the most productive tools I've ever used for delivering a certain type of solution - what I call "content-centric" systems. The book is very much about that. I think this type of problem fits many business use cases, perhaps better than enthusiast/single-person use cases. I run my blog in Plone, and it was a two-minute job to set up, but if all you want is a simple web site, then Plone may be overkill. Similarly, if you want to build an intranet or a complex multi-author publishing platform or a bespoke portal where semi-structured content will be key, Plone may be a good fit.
The single most important reason to love Plone, though, is the community. I have some incredibly good friends in the Plone community (and outside... I do occasionally leave IRC), individuals whom I respect and admire greatly. People are friendly, constructive and helpful, and we all actively welcome new contributors and interested parties. If you found Plone frustrating, and you're able to put that into the language of constructive criticism, we'd love to hear from you (http://plone.org/support) so that we can improve the system. We're not perfect, but we are also proud of what Plone does.
By the way, if you want to read a pretty in-depth and interesting case study of a Plone implementation, take a look at http://plone.net/case-studies/discover-magazine [plone.net]. Obviously it's favourable (and I'm biased), but it may give you a good flavour.
Cheers,
Re:Very clear and informative review (Score:1)
(http://www.davidbarber.org/)
Re:eeh whaaa? (Score:4, Informative)
(http://honeypot.net/ | Last Journal: Friday April 07 2006, @09:33AM)
Let me make this short and sweet:
Zope is kind of like Cold Fusion. It defines a lot of components that you can link together to build a website. For example, you have page template objects that contain all of the HTML you will be sending to visitors. Those templates have fill-in-the-blanks parts that you can populate with the output of a Python (or Perl) script or with the results of a database query. It also includes all the authentication software pre-written so that you don't have to cobble together your own, and a security system that gives you fine-grained control over which visitors can access which objects. With us so far? OK...
Plone is an application written in Zope, more or less. It's a "content management system", meaning that it's designed to let users upload data to it and make changes. There's an almost infinite number of ways to say which users can perform which actions. For example, say you're running a newspaper website. You can say that users in the "reporter" group can access to upload content, but not to actually make that content available to random visitors off the Internet. People in another group, "editor", don't have permission to upload new content but they can make changes to what "reporter" users have added and then mark the content as "ready for publishing". Then people in the "section editor" group can look at content that has the "ready for publishing" flag set, and if it's truly ready for the world to read, they can set it to "published". Otherwise, they can send it back to the junior editors.
Maybe in your organization, you only have "reporters" and "section editors". A good CMS would let you remove the "editor" role so that it's no longer used. Also, Bob Smith may be a "section editor" for the Sports section, but a "reporter" in the local news section. Again, a good CMS will let you set this up.
But that's only one example. Blogging software is another kind of special-purpose CMS, often giving the blogger permission to allow comments to his posts and edit or delete them. My company uses an internal CMS for blogs, a message board, and a vacation board. Only certain users can add "vacation" events to the calendar. Other users can write blog entries. Everyone can comment on the message board.
Basically, a CMS does exactly what it says: it allows you to manage (typically user-generated) content. If you find yourself writing a site that allows visitors to upload data for other people to see, you're probably better off installing a CMS and letting it handle all the details you're likely to forget.
So there, Zope and Plone explained. Does that clarify matters?