Skip to content

Plone in Higher Ed – Matching Capabilities to Requirements

February 9, 2010

During our recent project for Harvard’s School of Engineering and Applied Sciences (SEAS), we needed to carefully review Plone’s core feature set and community-provided extensions and determine which capabilities would match SEAS’ requirements, which would require customization, and which would need to be built from the ground up.

These requirements could be grouped in the following areas:

  • Architecture
  • Functionality
  • Aesthetics


SEAS wanted to leverage prior investment in hardware and VMWare’s ESX virtualization products. Jazkarta recommended a high-performance, high-availability system architecture with Plone at its core. The stack included the following highlights:

  • Apache for serving web pages. SEAS was comfortable with this proven web server platform, and a hardware load balancer takes care of routing user requests to group of Apache web servers.
  • Varnish for caching frequently accessed content. Plone is a robust content management system, but it is not particularly optimized for serving content in high-traffic scenarios. Jazkarta recommended Varnish to cache static assets such as images, stylesheets and other scripts to reduce load on other parts of the stack.
  • Deliverance for applying visual themes to content. Though Plone is capable of supporting multiple themes, there are advantages to managing themes outside of Plone. Deliverance provided a way for our design team (and SEAS going forward) to develop themes without requiring technical knowledge of Plone theming.
  • Pound for load balancing business logic functions across multiple ZEO Servers. A group of ZEO servers handle increased workloads and provide fault tolerance in the event of a unresponsive ZEO process through the Pound software load balancer.
  • Supervisor for monitoring and automatically recycling unresponsive services. In the rare occasion that any of the stack components becomes completely unresponsive, Supervisor can restart the affected process and alert an administrator.
  • Database failover with Heartbeat. Heartbeat is leveraged for maintaining database connections to an active/passive Zope database server (ZODB) cluster.



SEAS initial and primary motivation for the project was to provide an Intranet for the school’s community of faculty, staff, and students. Plone’s core feature set applies nicely to Intranets, as it supports fine-grained access control, file-and-folder organizational metaphors and customizable workflow for supporting the content authoring process.

Some additional solution details:

  • Repository for all. SEAS wanted to empower its users with content authoring tools and thus created a department-centric information architecture with well defined content management roles for group of users.
  • Directory. SEAS, like most higher education institutions, maintains an extensive amount of information about its faculty, staff and students in a central directory used by a number of other electronic systems at the university. FacultyStaffDirectory, a Plone add-on developed initially by WebLion, provided a set of pre-built content types and templates for providing directory listings, search results and user profiles. Jazkarta customized FacultyStaffDirectory for SEAS by “extending” the base schema for these content types, adding new SEAS-specific fields and writing synchronization scripts that created new profile pages for new users in the central directory.
  • Site search. Plone’s built-in search engine provides contextual results for keyword queries, and users have the option of constraining their search to the directory. Jazkarta customized directory-based search result listings to show fields internal SEAS users are permitted to view. This directory is also searchable through the public site without requiring duplication of content.
  • Get the word out. SEAS needed to provide access to important announcements – and in particular emergency information – to its user community. Plone provided a nice starting point for disseminating news and events. Built-in news and event content types, which were lightly customized for SEAS, plus its ability to display “portlets” of condensed information. The Collage add-on product was used to create a custom portal-style user interface for the home page that aggregated the most important information.
  • Public and protected information. Although the Intranet is a public resource for the entire community, Plone’s fine-grained access controls allowed the SEAS administration team to restrict access to protected content to logged in users.
  • A voice for each department. Each of SEAS administrative departments needed to communicate information to the community about its role within the school and how interested users can access its resources and services. Plone’s general folder and page content types were used by each department to build a landing page and organize information logically within.
  • FAQs, How-tos, policies and procedures. SEAS maintains hundreds of informative documents in PDF format that can be shared with the community that was traditionally difficult to access and keep fresh. Plone provides a simple file upload-and-share experience that matched this need nicely.

Public Site

SEAS wanted to redesign their existing public facing site, with a focus on delivering a pleasant user experience for prospective undergraduate and graduate students and highlighting research happening at the school.

SEAS authored new content using Plone’s built-in WYSIWYG editing tools while Jazkarta handled customizations and theming. Some other key elements of the Plone redesign include:

  • Dynamic home page. After SEAS revised their site information architecture, Jazkarta designed a new home page with user-centered navigation and exposed second-level navigation, highlighting events, news and research-focused announcements. A slideshow-style banner image content type was created to allow the content team to upload, cycle in new images at scheduled times and expire them when they are no longer relevant.
  • Migration of news archive. Jazkarta wrote a script that imported news information from the existing web site news database, creating matching Plone news content type instances.
  • Learn more in context. With research being such an important activity at the school, a set of pages for each of the seven primary research areas highlight the latest news and announcements.  Plone portlets allow content authors to provide contextual “Learn More” style lists of affiliated researchers, links to internal and externally hosted news items and connections to relevant academic programs offered at the school.
  • Flexible page layouts. The current version of Plone provides rudimentary support for page layouts.  Multi-column page layouts for the home page and user-centered landing pages were implemented using Collage, a community-provided addon that allows developers to create customized pages that pull in content from built-in Plone content types.
  • Directory and Site Search. Although many public site users arrive at the SEAS website via a search engine, users still need a powerful search tool to augment the navigation system and to access the faculty and staff directory. Plone’s built in search engine and user interface provides matched keywords in-context and keyword highlighting on pages accessed from search results.

In the end, the Public site was a natural extension of the work we put in place to build the Intranet, largely differentiated by visual design and home page customizations.


Research labs and individual faculty (“members”) within SEAS often host their own website to promote research activity. Although the SEAS Communications department would provide planning and design services for these independent web sites, it was up to each member to define an information architecture, come up with a visual design, and to code the site in HTML. Moving forward, SEAS wanted to make it easier for members to acquire a new subsite, author and publish content to their site without having to learn HTML, and to unify the look and feel of all subsites to align with SEAS’ visual aesthetic.

Jazkarta authored a custom product called JazMiniSite that allows Plone to contain independently controllable and themeable “subsites” within the common server architecture, achieving the following general objectives:

  • Accessible for the technically challenged. Interest in lab or personal web sites came in from community members who were not familiar with building and maintaining a web site. Members can now author content using Plone’s easy-to-use editing tools without needing to know HTML.
  • Online procurement. Requests for new subsites are initiated by members via an Intranet-based web form and moved through an automated approval and procurement process. Outside of creating a new DNS entry, no programming is required to procure a new subsite.  A Jazkarta-authored product called SEAS.SiteRequest provides a customized site request workflow and configurable set of content templates with common information architecture elements such as sections for news, publications, and personnel listings.
  • Separate visual theme with adherence to university standards. Jazkarta created an initial visual theme for use with JazMiniSite that aligns the look and feel of all subsites with SEAS’ visual aesthetic. Additional themes can be added by the SEAS administration team.
  • Separate access control specifications. Plone’s built-in sharing feature allows members to define subsite-specific content authoring permissions.
  • Shared infrastructure. JazMiniSite locates subsites within the same Plone database with no additional maintenance requirements.

Like subsites, JazMiniSite is also a key component in allowing the Public and Intranet sites to cohabitate within the same Plone instance, making cross-site directory access and search feasible with limited complexity.


SEAS wanted to redesign the look and feel of the site, maintaining Harvard’s general color palette but taking it in a new direction.

Jazkarta recommended separating the design production activity and using Deliverance to apply external themes to the Plone site.  Deliverance is a software package that, given a set of rules, loads content from a web service (in our case HTML), reorganizes the HTML as required, and applies a visual theme.  This provided the following benefits:

  • Theming for all. A specialized design production team was able to code the HTML, JavaScript and CSS without needing to understand the intricacies of Plone theming. The initial themes were developed by Jazkarta but new themes can be developed by SEAS own internal design team going forward.
  • One Plone, many themes. Multiple themes could be applied to the same Plone instance.  Since the Public, Intranet and all subsites are part of the same Plone database, a way to assign a theme to a particular area of the Plone database was necessary.
  • Content reuse. Content authored in Plone can be repurposed.  For example, one of the requirements of subsites was to allow the subsite administrator to define a site-wide banner image with option to override on selected landing pages.  Since the banner image is part of the external visual theme, Deliverance rules were set up to “move” the banner image from the location it is used for editing in Plone to the banner.

Deliverance also offers an opportunity to apply new visual themes to existing subsites that have not been migrated to the new infrastructure.

Up Next…

In our next article in the series, we’ll dig a bit deeper into the customizations Jazkarta created for SEAS to support subsites, including SEAS.SiteRequest and JazMiniSite.

2 Comments leave one →
  1. March 18, 2010 9:54 am

    It would be great to know about SEAS.SiteRequest and JazMiniSite. Are they open source products?


  1. Jazkarta wins award for best education website at CMSExpo « Jazkarta Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: