The new Madison Public Library, located at 142 Plaza Blvd, will open on January 27.

Skip To Main Content

Open Source software presentation

For those of you who attended our presentation on open source software in libraries, thank you for coming out to hear us!  Some of the high points from Amy's portion of the presentation:

A content management system (CMS, for short) is the logical next step for a site that's become too big for one person or one department to manage. While they aren't right for everyone, it was the right choice for us.  A few well-respected and well-known ones are:

If you are considering getting a CMS, you will want to look at

  1. whether or not you have a programmer on staff
  2. if you do, what language(s) can this person program in?
  3. each system's tradeoff between a) ease of use and b) configurability. 

If you don't have a programmer and your needs are relatively simple, you could err toward the side of ease of use; if you have a programmer and you know your needs are complex, you may be better off seeking a system that takes longer to set up but provides more flexibility in the end.

Django and Plone are both written in Python, while Drupal and Joomla! are both written in PHP.  While both Django and Plone are excellent systems with vibrant user bases and code availability, we ruled them out, as our webmaster was most conversant in PHP. The choice between Drupal and Joomla was difficult; both make excellent CMS choices for library sites, but HMCPL chose Drupal because of its excellent module system.  As long as you carefully evaluate both your resources and your needs, and pick something that fits both, there is no wrong answer. I'd rather see you choose a solution that balances your needs and resources, and is right for you, than necessarily choosing what Huntsville Public chose. Not all libraries will make the same choice we did, and they will have equally valid reasons for their choices. Our choice was not a choice 'against' something, but 'for' a platform that meshed well with our personnel resources and design goals.

What is Drupal? (The non-technical version)

The system I refer to as 'Drupal' here actually has two parts: Drupal 'core,' which is the basic framework of a site, and 'modules,' which are freely available modules written by the community and contributed back to Drupal. They can be as big as "build me a calendar of events!" or as small as "let me put this particular form field on a certain page."

How are we using Drupal in our sites?

We have a few modules that we consider critical to both sites:

  • the combination of the Rubik theme ( and Admin toolbar ( to simplify administration tasks for our users. My goal is to have our staffers ready to post content within just a couple of clicks.
  • Organic Groups ( is a workhorse module seeing vastly different uses internally and externally.  Externally, it serves as a way for our employees to contribute to our blogs.
  • Content Construction Kit ( is the bedrock of our sites. We have many different types of content that we need to present on our sites, and CCK lets us decide what types of content we want to make available for our users, instead of needing to shoehorn our content into someone else's predetermined ideas of what we might need.
  • Views ( Views is a graphical query builder; it lets you take your content that you've created with CCK, categorized with Organic Groups, and remix it and present it in whatever formats (lists, full pages, tables) suit our site best.

How are we using Drupal in our internal site?

  • We are using Ubercart ( to provide an internal supply store for employees to reorder supplies and provide them spreadsheet-friendly expense data for budgeting and planning.
  • A highly customized front page, allowing users to only see the news that is relevant to the branch they're working at, or the committees they're a part of.
  • Custom content types. Our needs were diverse; and we needed to track things that were both good and bad.  Good: we needed a centralized place to track the grants we were applying for, or had applied for in the past. Bad: we needed a database of patrons who had been banned from the library, and we needed to provide calendars showing when employees had been furloughed.
  • Collection of statistics. We needed a simple way for branches to provide attendance statistics from their events
  • Donor management. We're investigating the CiviCRM ( module for tracking donations and pledges.

How are we using Drupal in our public site?

  • We're using a multi-site install, which lets us run an unlimited number of sites (currently three) off of a single codebase, thus lessening the number of code updates we have to do behind the scenes.
  • We are using Ubercart ( so our library foundation can accept online donations and sell tickets to events.
  • Custom content types with CCK. ( We needed to distribute the ability to post multiple types of information to the public: not just events and blog posts, but what about posting press releases, equipment bids, entries in our community organizations database, or job postings?
  • Sections for kids and teens, with a different look and feel, but access to the same information.  We're using the Sections ( module to provide summer reading sections of our site for children and teens.

What are we considering for the future?

  • MERCI (Manage Equipment Reservation Checkout & Inventory, to track reservations of equipment, like projectors or laptops
  • CCK for online submissions of book reviews from teens, which will be part of this year's Summer Reading.
  • Online Reference: using taxonomy-related modules to provide an online subject guide.
  • Genealogy Research Guide: using Drupal's Book module, included in core, to provide an infinitely extensible guide to our genealogy resources, including not just tips and tricks, but lists of our holdings.

Is there a community I can go to for help?

Yes! Absolutely! There are two excellent resources for librarians and libraries using drupal.

One is the Libraries group on, of which I am the current manager.

The other is the Drupal4Lib email list, on which I am an active contributor. You can join the list at or by sending an email to LISTSERV@LISTSERV.UIC.EDU with 'SUBSCRIBE DRUPAL4LIB' (no quotes) in the subject.

Have more questions?

I'm also findable as as @amyqmc on twitter, or at The Libraries group is currently busy planning a free pre-conference in June that will take place in Washington, DC right before ALA 2010. I intend to be in attendance, and will likely be leading sessions there.