Here at the Smithsonian Institution Archives, our website is built on top of a content management system (or CMS) called Drupal. For those of our readers unfamiliar with Drupal, it's an open source project that started its life as a message board system originally intended to help keep some University of Antwerp alumni in touch. The creator of the system, Dries Buytaert, wanted to call the site Dorp.org, dorp meaning "village" in Dutch. However, when seeing if dorp.org was available, he accidentally typed drop.org, and liking the sound better, saved the domain. Once he decided to release the site's code, he decided to name it Drupal, which is the English phonetic spelling of Druppel, the Dutch word for drop.
Currently, the Drupal community maintains a policy of only supporting two versions of the CMS. Currently, those two versions are Drupal 6, and Drupal 7. Our site was running on the former. However, Drupal 8 recently went into alpha testing, which means its release isn't too far off. So soon Drupal 6 will no longer be supported by the community.
To be proactive, I started on a 6-month project to upgrade our site to Drupal 7 before support disappeared. On August 28th, that project was complete and our new Drupal 7 website was rolled out.
Don't worry if you didn't notice it.
Aside from allowing the site's theme to respond to the browser's width (for those who are in modern, standards compliant browsers), the vast majority of the work was all on the back end. The functionality in Drupal is provided by modules, which are little add-ons that extend Drupal's functionality. Module developers tap into functions called "hook functions." These functions are fired off by Drupal whenever it performs a given task, and allows the developers to modify processes or data, or even piggyback off of it and provide their own tasks for the site to run. The premise is similar to one individual saying to another "Let me know when your going out for milk, 'cus I have some mail I would like you to drop off while your out." Drupal 6 contained 83 hook functions for developers to use. Drupal 7 has around 403.
Further complicating the issue, some of the hook functions had been changed, renamed, split into multiple functions, etc. All of these changed hook functions in the modules needed to be updated.
Luckily, I didn't have to upgrade all of the 170 or so modules used by our site. Some modules are in the "Core," or modules that Drupal comes with. Others are contributed modules, which are created by other Drupal developers and released to the community. These modules were updated by their maintainers. What were left were 14 completely custom modules that needed upgrading.
Another large part of the upgrade was coming up with the exact step-by-step process I needed to go through to get the site upgraded without any issues. This included duplicating the site on a localized server. Then the theme, contributed modules, and custom modules needed to be switched off. This would keep the site from crashing when the code base changed.
Then, Drupal 7 was downloaded, the database updated. After the database had been updated, the new versions of the modules had to be downloaded and re-installed. Luckily, I was able to create a command line script that ran on the server to do much of the heavy lifting. This scrip contained over 330 commands sent to the server in order to run the full update. The process took about 6 hours to complete. Once that was done, the code and database was uploaded to our new server, and the domain address was switch so the whole process was seamless.
Other Smithsonian websites using Drupal: