Second Life, Web Hacking Edition

To keep busy, I’ve been doing web sites for two non-profits, my church and the local Road Scholar Lifetime Learning Institute Network affiliate sponsored by Old Dominion University.  Both web sites were in need of updates for the brave new world of iPhone and iPad. Neither site was responsive and both had become disorganized as the sponsor’s activities grew in scale and complexity.

Word Press or Drupal?

The first thing we wanted to do was to move from static pages to dynamic content that could be rendered responsively (formatted to fit the capabilities of the requesting browser). I had started this blog some years ago so I looked a WordPress first. I used WordPress 2014 theme to make a prototype UCN site that looked nice.

But the site was constrained by assumptions made in the 2014 theme about how the site would be used. In keeping with the WordPress blogging mission, the 2014 theme is designed for blogs like this one that have a small number of static pages and the blog/news. It would have been good for announcements but UCN has a robust member activities program that produces worship services, governs the church, makes everything happen around the church, and supports several community service initiatives organic to UCN or in cooperation with social-justice minded congregations in the area. I felt it would be difficult to use WordPress to support these activities.

Drupal.  But which distribution?

After some time Googling, I found the OpenChurch distribution of Drupal 7. It had much of what we needed and the perpetrators would even do managed hosting for us. I was able to put together a site but I didn’t like it.

OpenChurch was full of Christian language and the site was organized around a typical evangelical Christian church ministries model. That didn’t work for a Unitarian Universalist behavioral covenant based church. I ended up ripping out most of the menu items and ignoring most of the prebuilt block types and view types. Clearly, it was time to take a step back and look for a distribution that made less assumptions about what the web site would look like.

The second distribution I looked at was OpenOutreach. This did everything we needed reasonably well. And I could add in for those things it didn’t do. So I built using OpenOutreach. It had a good model for writing about the church’s activities, a good calendar model that could be extended, calendar views could be filtered by event attributes, and it liked to do news and announcements and highlight content. Problem solved.

Open Outreach includes RedHen CRM but we have not looked at using it for UCN. It would take some minor customization of entities and entity relationships but it looks like it could do much of what we are now doing with Power Church as a service.

How ODU ILR and UCN Differ

ODU ILR has a completely secular mission to produce and deliver short programs of interest to our 770 members. Last year ODUILR produced over 90 discrete programs with 5500 attending. The curriculum calendar, registration for class, and payment processing is the heart of the ODUILR work flow. The old we site was a static brochure web site that was useful in expanding the member base but once a person was a member, it was of little use.

ODU ILR had grown in size and work flow had expanded to the capacity of our part time staff and volunteers. We really needed to simplify some of our work flows surrounding program promotion and subscriber communications about an individual program. This took me to look at two more Drupal 7 distributions: Open Scholar and Open Academy.

A big part of our administrator’s work is in tracking memberships, registering folks for class, notifying those that couldn’t be accommodated, and notifying registrants when a class had to be canceled because a speaker became ill or the weather mugged us. It became apparent that ILR needed constituent relationship management and event registration.

Open Scholar

Harvard University developed Open Scholar to make department and research group web sites. It was designed to support research group collaboration. I took a look at this distribution and appeared to have two problems.

  • The skeleton site was too complex and would need pared down.
  • There was no CRM support

Open Academy

This let me to try Open Academy. It proved to be very compact with good support for short program promotion using the calendar. So I started here. To it, I added the following key Drupal modules.

  • RedHen CRM to keep our membership records
  • Entity Registration to track our class signups
  • Scheduler to automatically publish and unpublish content by time

These capabilities led to a nice web site having promotional functionality but it could also let our part time Administrator track membership and registrations. The site has automated support for sending reminders and closure notices should we have to take a day off for a hurricane or snow closing. Cancellation notification is largely manual now.

ODUILR also produces day trips (kayaking) and over night trips that are space constrained but popular. The registration package supports wait lists which the Administrator was keeping by hand.


In the process of doing all of this, I’ve had experience with 3 mass market hosts and Pantheon. The mass market hosts are not suitable for Drupal site hosting. The business model is 20 years old and has not grown to support content management systems. The traditional “Fries with that?” hosting company comes short in the following ways.

  • Too little PHP memory. Most robust Drupal 7 sites need php memory_limit to be 200 mb
  • May be hard to run cron. If they do support cron, the procedures  and examples are clunky.
  • Drupal 7 issues security updates from time to time. There’s no good way to apply and test updates and migrate them to production.
  • No support for DRUSH or GIT. Work flows are clumsy.
  • Are they really doing backups? Both the site tree and the database?
  • No capability to save checkpoint backups in an organized way, particularly for the database.

Depending on which legacy host you deal with, the idea is to bait and switch from the bargain -priced service to the upscale service. Unfortunately, these hosts do not do service level agreements and I found that the typical up-sell was by adding things that should have been. Typically, they would not increase the process memory or php memory limit.

At the best of the 3 legacy hosts, php memory was barely adequate but the module addition post processing would fail to complete. At the worst, the cron job would fail, initial page loading would fail on php memory limit, etc.

If the shared hosting environment is not adequate, all the mass market hosts have to offer is virtual servers or physical servers. Raw virtual metal or raw metal are just not appropriate for an organization that is too small to have a professional information services staff. The server is exposed to all of the wolves out there including our very own National Security Agency and Cyber Command.

How Pantheon Differs

Pantheon is designed to run Drupal 7 and to support Drupal 7 recommended best practices for small sites up to national scale sites. The environment is a shared one based on Linux containers. Containers provide a sandbox for each site’s database, files, and web server. Nothing in the sandbox is shared. The physical host runs numerous sandboxes and sandboxes can migrate but your URL resolves to your sandbox where ever it is running in Pantheon.

Pantheon offers a free environment to developers, and 3 standard paid environments: Personal, Business, and big business. The Personal environment is $25/month, Business is $100/month and is SSL/TLS capable (certificate extra). The largest standard environment gets you more page views and storage for $400. For large scale sites like, custom service level agreement contracts are available. Pantheon may also offer intermediate options on a custom basis.

Every free and paid Pantheon environment includes the following essentials.

  • Robustly managed clustered Linux hosts from Rack Space
  • GIT
  • Development, test, and live environments are standard
  • GIT pulls between environments
  • The database and media may be migrated between environments
  • PHP memory limit is 256 MB which is adequate for most small business sites
  • 1 click Drupal core updates!

The work flow is GIT based. When you spin up the site, GIT pulls from the Pantheon distribution repositories happen behind the curtain. Pantheon provides the following popular distributions and more.

  • CiviCRM Starter
  • OpenAcademy
  • OpenOutreach
  • OpenScholar

This builds a site in the dev environment. To add modules, you use the appropriate DRUSH commands. You do you initial code development locally and GIT push to Pantheon dev. Once things are together for content development, you migrate twice

  • From dev to test
  • from test to live

Each environment can be made public or private. While private, the environment is Internet accessible but not by your production URL. The URL is something like so you have access to work but it is out of public view.

Once you begin content creation, the content creators work in live-your-site-gotpantheon. Code development sprints continue in dev-your-site. When a sprint completes, you merge the code from dev to test and the content from live to test. The content merge lets you selectively merge the media files and the database. The Pantheon dashboard provides dialogs that control these evolutions. Behind the scenes, DRUSH and GIT are making things happen with the support of some Pantheon-specific Drupal 7 modules that support the environment.

The test team works in test. When things are ready for the content team, you migrate code from test to live.

When the site goes live, you change your DNS to make the live environment available at your public URL, update robots.txt to let the site be crawled, configure Google Analytics, etc and you are in production. The content team continues to work in live using publishing to control what is visible to the user folk.