First and foremost, Plone is open source. It is licensed under the GNU General Public License, enabling you to freely use and modify Plone however you see fit. Compare the cost of Plone (free) to other CMS software (tens of thousands of dollars), and you have an important item in the Pro column of your pros and cons list.
It's important to remember that open source does not necessarily mean "unsupported" or "looks cheap," just like commercial doesn't necessarily mean "bug free" and "beautifully designed." Often it's quite the opposite , but that's a topic left for another book. The Plone Team is made up of hundreds of developers worldwide, many of whom are usability experts, as evidenced by the fact that the Plone interface is highly usable and meets or exceeds the standards for accessibility. Standards compliance is often so difficult for web-design firms to achieve; having a compliant template set upon installation should be another item in your Pro column. After all, what good is content if your users can't find it?
Underlying Architecture of Plone
Plone itself is built on top of the Zope Application Server, an open-source product that is stable and rich in features, if not as widely publicized as the basic Apache Web Server. The Zope Application Server contains not only a web server, but also an object database and other elements such as the Content Management Framework (CMF). The CMF is a toolkit containing items that can be used individually or in a bundle, as Plone uses them. The Zope CMF contains all the logic and functionality that drives the workflow, personalization, and cataloging elements of Plone. In fact, you can think of Plone as a usable wrapper around the guts of the Zope CMF.
For a detailed look at the Zope architecture, see Chapter 3 of the Zope book, Zope Concepts and Architecture , by Amos Latteier and Michael Pellatier (Pearson Education, 2001), at http://zope.org/Documentation/Books/ZopeBook/2_6Edition/ZopeArchitecture.stx.
All things Zope are written in the Python programming language. Because Zope, the CMF, and Plone are all open source, if something about the inner workings of these parts is not to your liking, you can simply change it. But the beauty of Plone is this: Anyone with Python skills can modify the underlying elements, but knowledge of the Python language, technical architecture tricks, and even database design is absolutely not required to successfully build and maintain a Plone site. The end users of a typical Plone site ”content maintainers and readers ”tend not to have these skill sets.
You can find information on Zope at http://www.zope.org/; another outstanding resource is The Zope Book , by Amos Latteier and Michael Pellatier (Pearson Education, 2001). Python information can be found at http://www.python.org/ and in Appendix A, "Using Python for Greater Customization."
Previously, I mentioned that Zope has its own object database, and it contains its own web server. As you would imagine with a well-designed open-source product, using the built-in features is not required. Although Plone stores its content in the Zope Object Database (ZODB) by default, you can customize it to use LDAP or other relational databases, just as you can run Plone itself on any other web server, such as Apache. Some of these topics are covered in Chapter 8, "Technical Administration."
When to Use Plone
The short answer to the question "When should I use Plone?" is "Anytime you want to share a document or other content with anyone else." But more than that, Plone helps you institute security, workflow, categorization, and customization into content sharing.
For example, suppose that you are the human resources manager at a company and you need to provide everyone with employee- related forms for health insurance and stock purchase plans. Those aren't documents that you would want to put on the company's public website, for security reasons, nor would you email copies of the documents to all the employees in the company ”although those are both ways in which users could possibly receive the documents.
With a Plone-driven intranet, you could create a section that only you, the HR manager, could maintain but that all employees could access. You could post the documents with accompanying notes and then update the files and add to the notes to your heart's content. You would be the content owner, and the security settings for your little slice of the Plone world would allow only you (and those above you in the hierarchy) to add, modify, and remove these documents. Those with basic end- user permissions could only retrieve the documents.
Extrapolate this simple example to all the various departments that you might find within the enterprise: Human Resources, Operations, Sales and Marketing, and so forth. Within these groups you could even have smaller groups; for example, the Sales and Marketing department might want to have a document set made available only to inside sales representatives.
Beyond the enterprise example, think of how Plone could be used in an educational setting, perhaps by the English Department of your favorite university (or the Math Department, Computer Science Department, and so forth). The websites of individual departments within a college or university tend to be designed and maintained by students or volunteer staff members , whose primary skill set is not website usability and content management. As such, these sites tend to be haphazardly organized and utilize an unpleasant or inconsistent display style. With Plone, you not only can utilize content-grouping rules, but the standard template styles are already designed to adhere to rules of usability and display.
This is not to say that you cannot customize the display templates, but changing a skin , or the overall template style, requires more knowledge than simply selecting the bright pink color swatch in a WYSIWYG HTML editor.
You'll learn more about customizing the Plone display in Chapter 6, "Creating and Implementing a Custom Skin."
A negative comment often made about CMS-driven sites is that they all look the same, or that you can look at a site and immediately identify the CMS or template engine in use. In the next section, you'll see a few examples of completely different types of Plone-driven sites. These vastly different sites exemplify the fact that using a CMS does not lock you into a standard look and feel, nor are you stuck using flat colors and no graphics.
Examples of Plone in Use
As you've already learned, Plone can be used in any setting in which the dissemination of content is the primary goal. In this section, we take a brief look at two very different Plone-driven sites:
The NASA/Jet Propulsion Labs Mars Rover Site, at http://mars.telascience.org/home/
Southern Utah Online, at http://www.southernutah.com
First is the Mars Rover site from NASA/JPL. The Mars Rovers are a big deal right now, not only because it's incredibly cool that we're driving two golf carts on Mars, but also because information about this project has been made very accessible to the public. The Mars Rover site is quite simple and has only five main sections:
Home ” The main page of the site and a gateway for all other links, as shown in Figure 1.1
Figure 1.1. Close-up of the Mars Rover site's navigation set and supplementary items.
Download Maestro ” Instructions for obtaining Maestro, the software application necessary to view data from the Mars Rovers
Updates ” The data sets and images from the Mars Rovers, viewable via Maestro
Forums ” End-user discussion forums, as shown in Figure 1.2
Figure 1.2. The Mars Rover discussion forums.
Help ” Support documentation
The Mars Rover home page contains all the elements you would normally see on the main page of a website: introductory text, images, a standard navigation set, and supplementary items. Take a closer look at the navigation set and supplementary items, shown in Figure 1.1.
The Mars Rover site takes advantage of some core Plone components : the section tabs, breadcrumb trail, login status/links to login, and Print and Email icons. " Core " components are elements that are part of the standard Plone template but that you can modify or turn off as desired.
Use of navigation tabs reflects the custom categories of the Mars Rover site. Navigation tabs can say anything you want, but they should reflect the content that they contain. In this case, the tabs reflect the four main sections of the Mars Rover site, plus the home page itself.
A breadcrumb trail is a usability element that alerts the user to the title of the document being browsed, within the hierarchy of the site (if applicable ). Think of it like a kiosk in a shopping mall, where the big red X shows where you are and the dashed line shows you how to get out. In the case of a website, a breadcrumb trail shows you the hierarchy in which the current document is situated, relative to the home page of the site. In this instance, actually viewing the home page of the site doesn't show you much of a trail, but imagine that it is a document three levels deep: The linked hierarchical elements would provide a quick exit.
The login status is another element in Plone sites. Plone sites are essentially user communities, potentially requiring accounts to access specific items, so the omnipresent login status reminds you to log in if you haven't already. The login status is usually found next to a Join link, which enables you to create an account if you don't have one already. Not all Plone sites require accounts to access information, but accounts can enable the end user to customize elements of the Plone-based site, even if the user doesn't receive access to anything special after creating an account.
Finally, Figure 1.1 shows the Mail and Print icons. The Mail icon can be used for feedback, either for an article, for a document, or in general. The Print icon is self-explanatory: It enables you to print the article or document.
Discussion forums are often an integral part of a community-oriented website. The Mars Rover site utilizes this Plone add-on, as shown in Figure 1.2.
After a user has created an account, he can start a topic, add or reply to a post, and so forth. Often users need not have accounts or be logged in to read posts, but only account holders can make contributions. You'll learn about Plone add-ons such as forums in Chapter 4, "Additional Plone Elements."
An entirely different kind of Plone-based site is the Southern Utah Online example, shown in Figure 1.3. The examples of the Mars Rover site and the Southern Utah Online site prove that just because two sites use the same underlying architecture (Plone), it does not mean that they will look the same.
Figure 1.3. The Southern Utah Online home page.
The Southern Utah Online site is a prime example of a geography-based community site ”in this case, one that provides information for residents and visitors to southern Utah. The number of core Plone elements on the Mars Rover site pales in comparison to those used here. Instead of tabs, you can see numerous icons across the top of the page, corresponding to content sections such as Movies, Golf, Homes, and Yellow Pages. Similarly, the Navigate section on the left side of the page shows entries such as Education, Government, and Religion.
Within the body of the main page, you can see such segments as Top News, a user poll, and an entry for weather information. On the sides of the site you can see a login form, search boxes, a calendar, and a listing of upcoming events ”all of which are standard Plone elements that require no programming by the site administrator. Finally, although there's no breadcrumb trail on this main page, you do see the login status in the upper right of the page, directly under the current date.
The Southern Utah site might be a little on the busy side, but it exemplifies a lot of the possible elements that can be added to a standard Plone site without any knowledge of programming or application architecture. Figure 1.4 shows a subpage of the Southern Utah site, providing an example of content architecture.
Figure 1.4. The Southern Utah Online Shopping main page.
When navigating to the Shopping page of the Southern Utah site, you can see the beginnings of content architecture. The breadcrumb trail is now used, in the upper left. The overall look and feel of the page has not changed; icon-based navigation elements are still present, as are the login status, the search boxes, the calendar, and so forth.
However, the body of the page now contains a list of subcategories within the shopping section, such as Automobiles, Electronics, and Sporting Goods. Links are also present and seem to follow a general structure: icon, hyperlinked link title, link description on the next line.
Additionally, an Add Link to This Category link takes you to a form that enables you to add your own information to the list of links. As the links are structured, so is the form. When it is stored, the information is displayed in the proper format because the elements entered in the form would match predetermined elements marked for display in the site.
The Mars Rover and Southern Utah sites show the wide range of possibilities for using Plone to share content and create a user-based community. In the next section, we take a look at some other motivating factors for using a CMS.