I've been pushing to get the new campus interactive map out while we've got families visiting campus. In order to pull a lot of different authoritative data sources together with a variety of developers and development practices, I've come to rely on Drush, git and svn.
What I have in mind is a typical dev -> stage -> prod environment. I'm working with a team to develop a Drupal version of our new campus template that can be applied to Drupal sites. The interactive map is the first application and Drupal site to work with the template. On this team, we've got Rob Knight in the lead with Tim Gustafason and Bryn Kanar working on aspects of the template now referred to as "ucscv2". Tim has setup a repository in the School of Engineering gforge (svn repos).
In addition to the template basics, we're working to design a flexible system whereby Drupalistas can have some theme overriding via local.css, page-content_type.tpl.php, views, etc. So, that leaves me with a few custom tweaks I've made to the basic page.tpl.php as well as my page-content-map_detail.tpl.php, search overrides, etc. This is pushing our team to think through our immediate needs and try to make good decisions for the long term so that we don't paint ourselves into a corner.
I've found a few great reference articles that are helping me establish a workflow that I can live with and hand off to one of my staff at some point. In terms of configuring my environment, here's what I'm working towards.
We use Aegir to manage our dev and prod environments. Our dev server serves up http://maps-dev.ucsc.eduand maps-dev-2.ucsc.edu. Those are dev and stage. I've brought up a new (well, very recycled) piece of donated hardware as an Ubuntu 10.4.2 LTS server. On this box, I've configured Pantheon. Pantheon is better known as Mercury in the Drupal community. It's a custom distribution of Drupal (PressFlow) running behind Varnish to give optimal performance.
Here's a few of the issues I now need to resolve.
- Best practices would dictate that dev, stage and prod be replicated instances to keep concurrency. I'm breaking that rule by pushing our prod on to Mercury/Pantheon. Why? Because I saw Josh give a presentation on Pantheon and it rocks. Maybe we move this to Pantheon as a Service (PaaS) if it taxes our donated, recycled hardware too much.
- How shall we integrate what I've created that is custom and what my colleagues have developed and create a manageable workflow that I can hand off to a non-Drupal expert? One option is to dump the dev environment into my git repository and then pull git into the prod space. Another is to use drush to rysnc and sql-sync between @maps-dev and @maps-prod - this is a really cool way to move database and filesystems between environments.
- How do we incorporate changes coming to ucscv2 via SoE's svn (love the acronyms!)? Maybe I should push my changes to gforge (svn) instead of my git. On the upside, that's more data on campus that may be easier to support. Don't know if there's a downside.
- My personal workflow has become increasingly dependent upon Evernote. I can't say enough nice things about this tool. I leave it running all the time and I grab PDF's of research materials as I'm working and track thoughts and notes from my various workstations and iPhone. I'm gonna go pro with this one; it's worth it.
- I've run a few dev->stage->prod runs this week. I developed a six point check list for prod to make sure the GoogleAPI key is set correctly, the file paths are correct. This is a hold over from Aegir using the CNAME as part of its internal paths and Pressflow using a typical default path setup.
Ok. I'll keep thinking about how to make this easy to sustain. I'm open to your comments. In the meantime, you'll soon have a production site at http://interactivemap.ucsc.edu to work with.