As I migrated my old site off Joomla and into Drupal, I noticed it was about a year ago that I first dove into Drupal. It all began with some Lullabot training. We had hired Lullabot to provide 3 days of in-house training to about 20 staff. I find CMS's and development frameworks interesting and had been working on learning CakePHP well enough to migrate some of my custom apps from Fusebox v3 to Cake; sweet.
So, I spent three days with Matt Westgate and Jeff Eaton while they took our group through an overview of the framework and the underlying approaches and logic at work within Drupal. I got saturated. Soon hooks, modules, overrides, blocks, regions and nodes became a blur. The answer, "there's a module for that", became a mantra. I kept taking notes and asking questions. I had some small projects in mind and that helped me map techniques like MVC I'd used on other Rails and PHP apps to Drupal.
I came back from training enthusiastic about setting up some demo sites and trying to prototype my project ideas. I bought a book; Pro Drupal Development. I poured through this trying to make sense of the api's and other components that make up this system. I started collecting bookmarks; lots of bookmarks. I watched lots of screen casts and recipe tutorials. I bought a couple more books Drupal 6 Themes, Drupal Multimedia. Things we're starting to make more sense; I felt like I was beginning to grok the Drupal space.
Events Manager
By December 2008, I had converted our campus standard template and css files into Drupal. During the holiday break, I got inspired. I'd found the signup module and a tutorial on how to create an Events system using CCK, Date, Views and Signup modules. I'd been managing my own custom events system for nearly ten years (something over 10k registrations for 400+ events). My job was changing and I needed to find ways to stabilize the service that the Events Manager provided with the least amount of effort.
I migrated about 80% of the functionality that my home grown code provided to the Signup module. I created a dev and production environment using two different hosts, then ported the event data into the instance.
We went live January 1, 2009 with the new Events Manager. I did some communication out to the event owners notifying them of the changes and since I'd made changes without any change management (that's bad), I offered to help them get oriented to the new system, created some additional help materials and generally made myself available for the first few days. Basically, we had a successful launch. Feature requests occasionally come in, but largely my time in coding and application administration activities has dropped to a few minutes per month doing regular server maintenance and module upgrades.
emergency.ucsc.edu
Another project I had been working to migrate into production last winter was a campus emergency management site. We had developed requirements that included:
- secured contact management for EOC members
- RSS feeds from authoritative sources
- blog-like incident updating
- consolidating emergency planning and systems information
- easy content management
- high availability
For this project, I ended up creating a variety of content types and corresponding template files for presentation of content. We modified the drupal-ized template and css files to get as close to the standard as we could and still achieve our objectives.
We're currently assessing how the site worked over its first year. There are some issues with our RSS feeds that need to be addressed and the notion of high availability has not been resolved. Ideally, this type of site would live at a sister campus in the event that UCSC falls off the grid.
Unit Site Migration
One of my objectives in getting a CMS standard in place was to find a landing spot for small sites that required cyclical maintenance. By mid-January we knew we had some staffing changes coming; our web person took a new job. So, I took the opportunity to re-use the standard template we developed and ported some small sites into our multi-site dev and production environment. These sites include bas.ucsc.edu and ada.ucsc.edu. Once I migrated them and gave some basic training on the differences in the new system, my workload dropped. These sites became part of the regular backup and patching routine.
Pro-card Quiz
By February, I was starting to look at how we could replace the aging Fusebox PHP code base I had developed for the pro-card quiz. This is a requirement for issuing these credit cards to staff and faculty. This too, was a program that I'd developed originally in ColdFusion and Oracle, then migrated to PHP/MySQL. While it continues to work, I'm pushing to move this business function off my custom, home brewed code and into a standard I feel I can support. So, I found a module for that.
As of August, we have not implemented a plan to cut over but we continue to test the module. I'm anticipating this will migrate by the end of the year. I'd provided an end of life notice last year, that's what is motivating us.
Spring
By March, my colleague Terry was hot to work on a Vanpool application in Drupal that would help drivers with organizing information they need to track including contact information, mileage, fuel usage, etc. We started working on some requirements and got TAPS involved with the idea. We haven't moved forward on it, but that's only because many other priorities have overtaken us. I'm sure we'll circle back on this issue at some other date.
Summer
Over this summer, I tackled a much more complicated project that provided me an opportunity to dive into the lowest levels of Drupal including writing custom modules, embedding views, overriding exposed forms and other fun tasks. The project is tentatively titled UCSC Title and Pay Plan. I'll be writing another article to provide more detail on another day.
In addition to the TPP project, I also brought a couple of our small unit sites into our multi-site dev environment to get units started on training with a CMS and preparing their static content for insertion into Drupal. I also configured an instance of Open Atrium to determine its viability as a collaboration tool for my team. In the very few hours we worked with it, it received high praise.
Observations and Conclusions
I've learned a lot. It came with some significant investment in time and out of pocket expenses; books, videos, going to regional meet ups. I had to balance my work efforts with many other priorities of my role that don't include web app development, so lots of my personal time has gone into reading, researching and prototyping. Along this path I found an incredible community of individuals dedicated to making the tools and documentation better. The community is a root cause of my interest in this tool; it has the same buzz I used to feel at Moscone Center during the first MacWorld Expos. If you want to be cool, there's nothing like telling one of our 20-something student programmers that merlinofchaos was at last night's meeting... :)
Here's a few tips that I hope save you some time and effort.
The number of books about Drupal has increased dramatically. After reading and re-reading the books I've bought, I'd recommend starting with Front End Drupal. It is well thoght out and provided me a nice breadth of information.For deep information, get the Pro Drupal Development book, it's the bible and you'll go back to it time and again. The themes and multimedia books have good recipes that were useful for me.
Buy the Lullabot series if you're going to get good at this. I keep these on my laptop and made a copy for my iPhone. I use them as reference to get quickly refereshed on a topic. For views and relationships (TPP makes a use of a lot of relationships) this is a great find.
So, what's next? I've got a running list of projects, that may make Drupal candidates. For the several hundred FileMaker Pro databases we run, I consider some of those targets for re-write in Drupal. Pushing and pulling RSS feeds to broadcast messages across the business web sites has been another project objective. I'll update my idea list and post it here soon. Bye for now.