September 7th, 2010

Apostrophe Scales: Part I

Tom Boutell
Chief Software Architect
Apostrophe is a beautiful CMS, if we do say so ourselves. In-context editing and thoughtful design make it a joy to use. And this is a problem.

It is a problem because people look at it and say "if it's that pretty, it can't possibly be intended for big organizations, or big websites." And they persist in this opinion until someone drags them by the ear to an institution where Apostrophe is actually being used to deploy a large website with many users.

The Franklin & Marshall College website has hundreds of actively editing users, with widely varying permissions throughout the site. Some users are permitted to edit only the pages in the Chemistry department, others in Judaic Studies. Some have the privilege of creating and deleting pages, others can only revise content. Privileges are inherited, so if you can edit the biology home page, you can edit all of biology. Simple and effective.

Everyone can contribute to the media repository, but only administrators can remove media that others have uploaded. Reusable content can be created via the blog plugin, and blog post categories can be restricted to particular editors as needed.

We've had rich support for granting specific permissions on specific pages to individuals in specific parts of the site since even before Apostrophe 1.0. For F&M we added group permissions, and that is now in the svn trunk of Apostrophe, soon to be released in version 1.5.

All of this is under the control of the website administrators (i.e. our clients)... via a thoughtfully designed interface that is accessible from every page if you have the appropriate privileges. Which fits with our philosophy: there are no back-end applications. Every part of the interface should be good, thoughtful and usable. If an interface is used to manage big sites with hundreds of editors, then it is more important that it be friendly, not less.

It's easy for developers to hook Apostrophe up to an existing directory service like LDAP. And that can mean thousands of users, some of which belong to people who shouldn't have the privilege of viewing locked pages. No problem: don't add them to the guest group. A large number of users could make the controls for managing who can edit what unwieldy. There's a simple solution to that too: use group permissions, or add people to the editor group, which makes them candidates to receive permissions as individuals. We've thought through this stuff.

Of course scalability isn't just about creating interfaces that work for managing large sites. It's also about building code that won't fall over with thousands of pages and simultaneous edits taking place. We faced some new challenges in this area on the F&M project and worked through them.

We pushed the Zend Lucene search engine to new levels, deferring search engine updates to a scheduled task to avoid slowing down edits and making sure the search index gets reoptimized regularly. We broke potentially memory-busting tasks into manageable subtasks that are scheduled to ensure PHP can get the job done. And we addressed those subtle problems that come up when two people do things simultaneously— issues that are often overlooked in software.

Since implementing F&M we've added even more scalability-oriented features which are in the trunk today and will appear in version 1.5, most notably a built-in minifier that drastically improves page load times and reduces server load without forcing designers and developers to think differently. And because there sometimes are right and wrong ways to code things, we've also added a_js_call, a robust solution to the problem of enhancing sites with JavaScript without killing performance or creating unmanageable code. And yes, we've added shiny new features that enhance content in more obvious ways. But we're talking about scalability today.

Of course, Apostrophe has to be deployed correctly to achieve great performance. System administrators need to know how to get the best results from PHP. And so we've written a heavily retweeted article on best practices for PHP web hosting, as well as a sequel for the Windows folks.

F&M isn't the first large institution to use Apostrophe. But the F&M site is the largest single Apostrophe site we've built, with the largest community of editors. It's also an example of Apostrophe being chosen for its large-scale usability rather than on the merits of a new website design. In fact, the site was migrated from another CMS without changing the basic design.

Much as we love to redesign sites from scratch, it's important to note that Apostrophe has been chosen on its technical merits, scalability and ease of maintenance. Spread the word: you can be smart and pretty at the same time.
Tom Boutell
Chief Software Architect