Popular Science Magazine (PopSci.com) Case Study

laura s - March 12, 2008 - 03:18

Following up on the Popular Science Case Study presented at DrupalCon Boston 2008 by Kevin Bridges (cyberswat), Laura Scott and others at pingVision, along with Megan Miller and John Mahoney of PopSci.com, here is a written case study on the development approaches for PopSci.com. We welcome your questions and feedback.

PopSci home page

In February 2008, Popular Science, the fifth-oldest continually-published monthly magazine, relaunched its online presence with an enterprise-level website developed by pingVision, powered by Drupal.

Founded in 1872, Popular Science, the "What's New, What's Next magazine," has witnessed, reported on, and evaluated countless scientific and technological developments, from the dawn of electricity to the latest innovations of today's information age -- advances that have shaped the way we live, work, play, travel, communicate, understand and interact with the world. Indeed, the archives of Popular Science reflect humankind's progress over the past 135+ years.

Until this year, Popular Science's online presence was dominated by proprietary web content management solutions. With this relaunch, the Popular Science team wanted to take the online presence of the magazine into the open source world. They decided on Drupal for the website's platform and retained pingVision for the development.

This is a brief run-down of how pingVision developed the site to meet the Popular Science staff's exacting requirements.

Website Goals and Challenges

Prior to its relaunch, the Popular Science website used various different systems to deliver content. One of the goals for the new site was to bring these disparate sites together into a unified user interface while increasing usability and functionality. Drupal's inherent flexibility and extensibility afforded the delivery of Popular Science's usability and functional requirements. One of the big challenges, however, was converting and importing several years' worth of content from a Vignette 7 CMS and several TypePad blogs.

PopSci exploded home

Another challenge was the integration of several third-party services, including a fantasy stock trading system, video conversion and hosting services, and advertising.

In approaching the development of the new PopSci.com, we took advantage of various contributed modules, and created a number of custom modules, including the Drupal Markup Engine for content placement within nodes and Node Carousel for displaying content.

Finally, scalability was a primary concern, as PopSci already had a large and active user base. By specifying a load-balanced multi-server cluster to serve up the site, combined with the use of Memcache, PopSci.com post-relaunch was able to weather an average load of 60 pages per second with a spike of over 1.1 million page views in 24 hours -- a new record for Popular Science.

Content Types

It was important to the PopSci.com editors that they have complete control over the placement of media and supporting content not only in full node view but also in teaser view. They wanted the ability to paginate long articles and place any number of images or even related blocks into the content of a node. The media placement also needed to be intelligent enough to work with legacy content imported from Vignette and Typepad. Most of this was accomplished with the creation of a new module called the Drupal Markup Engine, or DME. The DME works in conjunction with the content-types that were created for this project with the Content Construction Kit (CCK) by providing a custom, extensible input filter.

Articles

Articles are the main content-type on the site. All blog posts from TypePad and articles from Vignette were consolidated as articles in Drupal.

The article content-type uses the DME extensively. Referenced images can be placed anywhere in an article using the DME. If a referenced image node isn't specifically placed within the content body by the DME, it is automatically displayed at the top of the article and in the article's teaser view.

DME screenshot
Images may also be placed directly in the teaser using the DME. This approach provides maximum flexibility with images entered through Drupal and with images from legacy content, which required no human intervention to make the latter work.

The DME is also used to place a related content block (containing links to nodes in Node Reference fields or nodes with similar taxonomy terms) into the content and to set pagination for the article.

Article Structure

  • Article Images -- Node Reference to images used in the article.
  • Associated Photo Gallery -- Node Reference to an Photo Gallery.
  • Body -- The article's body.
  • Category Badge -- A taxonomy image that will apply a graphical badge to the article.
  • Credit -- The credit is the contributor of the article.
  • DEK -- A brief description of the article.
  • Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
  • Related Articles -- Node Reference field to relate other articles.
  • Tags -- An auto-fill taxonomy field.
  • Title -- Core title field.
  • V7id -- The Vignette 7 ID of the original article so that it can be cross-referenced. This was useful for redirecting old urls to new Drupal content. [See discussion about imports below]
  • Video Link -- Node Reference to related videos.

Current Issue

Recent screenshot
The "current issue" node type represents an issue of the magazine. It is used to store images of the magazines cover associated with dates. This node type is used in various promotional content throughout the site.

Current Issue Structure

  • Cover -- An image representing the magazine cover.
  • Issue Date -- Publication date of the issue.
  • Title -- Core title field.

Featured Tout

The Featured tout is a node type created to be used solely in a Node Carousel driven by a Node Queue. The featured touts simply require the Popular Science editors to create graphics that are of the appropriate dimensions. These can be seen on the front page of http://popsci.com/.

Feature tout screenshot

Featured Tout Structure

  • Associated Article -- Node Reference to the article being touted.
  • DEK -- A brief description of the article being touted.
  • Index Display Link -- The word used as the link in the tout.
  • Title -- Core title field.

Images

images screenshot
Images are used extensively on the site and needed to be invoked in a number of ways. Images are used in different forms in articles, teaser widgets, and photo galleries. If an image has related content, links to that content are shown in all but teaser views. Images are not served as stand alone images on the site but are invoked in Articles and Photo Galleries.

Image Structure

  • Credit -- The contributor of the image.
  • DEK -- A brief description of the image.
  • Photo Gallery Link -- Node Reference to Photo Galleries. If an image references a gallery it shows up in that Photo Gallery.
  • Photo Gallery Weights -- This field contains a series of number pairs with each pair representing the photo gallery and the image's weight in that photo gallery.
  • Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
  • Title -- Core title field.
  • V7id -- The Vignette 7 ID of the original image so that it can be cross-referenced. This was useful for redirecting old urls to new Drupal content.
  • Video Link -- Node Reference to related videos.

Photo Gallery

gallery

A Photo Gallery is a node type serving to collect image nodes and content to be displayed to the end user as a photo gallery. The images are designated for a photo gallery by editing the image and entering the gallery title in the appropriate Node Reference field. Galleries are presented as Node Carousels to give them a slick, interactive feel.

Photo Gallery Structure

  • Category Badge -- A taxonomy image that will apply a graphical badge to the image.
  • Credit -- The contributor of the image.
  • DEK -- A brief description of the image.
  • Icon -- A Node Reference field to the image to use when viewing the gallery in teaser view.
  • Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
  • Tags -- An auto-fill taxonomy field.
  • Title -- Core title field.
  • V7id -- The Vignette 7 ID of the original image so that it can be cross-referenced. This was useful for redirecting old urls to new Drupal content.

User Video

The Video node enables posting of video to either YouTube or OnStream. We developed a custom media module, which creates a custom Media Profile CCK field that can be attached to any node, allowing editors and admins to restrict the services used on a per-content-type basis.

The custom media module differs from the existing emfield module by offering greater flexibility -- such as allowing users to upload videos to the services straight from Drupal.

Video Structure

  • Category Badge -- A taxonomy image that will apply a graphical badge to the video.
  • Credit -- The contributor of the video.
  • DEK -- A brief description of the video.
  • Primary Category -- The primary taxonomy for the site represented by the main navigation areas.
  • Tags -- An auto-fill taxonomy field.
  • Title -- Core title field.
  • Video Link -- A hosted video handled by an extension to the media module.

Data Import

Part of the motivation to move the existing content over to Drupal was to escape the rigid complexity and cost associated with the Vignette CMS. The Vignette dataset was a 1.66GB Oracle database -- and that didn't include the more than 15,000 images referenced in the Vignette data which also had to be imported into the new site.

The first step in the migration process was to use the MySQL Migration Toolkit to transfer the data to MySQL. We wrote a custom module that used cron to feed the Oracle data through Drupal's APIs in manageable chunks. And finally, we imported the images by extracting their locations from the Oracle data and, via shell script, executing a series of wget commands to download the images.

As each piece of content was created in Drupal it was tagged with the Yahoo Terms module, which despite some odd results provided a good start on tagging the immense amount of un-tagged Vignette data.

Once the preparations were in place, the entire import process took approximately two solid days of execution time to complete.

A portion of the import process centered around how to deal with the urls that had been generated by Vignette, so that an article called up by its old Vignette address could be found in the new Drupal architecture. In order to accomplish this, during the import we took the associated Vignette ID for each unit of information imported from Vignette into Drupal and placed it into a CCK field in its destination node in Drupal. To actually find those articles in Drupal, a hook was written that works with the Custom Error module to look for the old Vignette ID in the url when a 404 occurs and issues the correct redirect code. Not only were we able to handle the redirects while historic links were used, but in a very short time Google had updated their search results showing the new paths.

Search

Special search module screenshot

The design of the PopSci search results required the search results to be grouped by content type, with tabs allowing re-sorting of the results by Most Relevant, Most Recent, Most Viewed, Top Rated, and Most Commented. On top of that, users needed to be able to subscribe to rss feeds of the results.

We achieved this functionality by developing an extended version of Drupal's core search, displaying the various results in blocks of paginated content, with AJAX tabsets to access other sortings of the results.

Each search is also cached, given a hashed id, and associated with the user performing the search to allow the saving the searches for future reference.

AJAX Tabs

In many instances the design comps we received required a nested set of tabs that could function to filter the content being displayed on a particular page. This was largely handled by the Tabs component of the Javascript Tools module. However, the large tabbed datasets displayed on each of the main category pages and in searches needed to be a custom coded solution to be able to work in a responsive fashion with larger amounts of data.

Performance

Naturally, there is a hefty selection of hardware powering the Popular Science website, but the true performance winner of this project was the Memcache module which integrates Drupal with Memcached and the PECL Memcache library. Out of the box, this module worked extremely well for us, with the exception of path aliases: A full page load was generating as many as 700 queries to determine path aliases. Pulling these queries through Memcache gave us the speed we needed to maintain an initial average load of approximately 60-70 page views per second.

Community Contributed Modules

The true power of Drupal lies in the people that participate. These modules were contributed by the community and helped make the work we did possible:

  • Administration
    • Abuse -- Allows users to flag nodes and comments as offensive for the adminstrator to review.
    • Avatar Approval -- Creates a workflow for moderating user avatars.
    • Custom Error -- Allows the site admin to create custom error pages for 404 (not found), and 403 (access denied), without the need to create nodes for each of them.
    • JQuery Update -- Facilitates an upgrade of jQuery in Drupal 5. JQuery 1.0.1 is included with Drupal 5, however it is not very well supported in the jQuery community.
    • Path Auto -- Automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias.
    • Update Status -- Checks with drupal.org once a day to see if there are new officially released versions of Drupal and any modules that you are running.
    • URL List -- Creates a list of node URLs at /q=urllist.txt or (/urllist.txt for clean URLs) for submitting to search engines like Yahoo! Site Explorer.
  • User access/authentication
    • Account Reminder -- Resends the welcome email to users who have registered with the site but have not yet logged in.
    • Login Toboggan -- Offers several modifications of the Drupal login system in an external module.
  • CCK
    • Content Construction Kit (CCK) -- Allows you create and customize fields using a web browser.
    • CCK Taxonomy Fields -- Taxonomy vocabularies will show up as field types that can be added to content types using CCK.
    • Date -- A flexible date/time field type for the CCK content module.
    • Fivestar -- Adds a clean, attractive voting widget to nodes in Drupal 5.
    • ImageField -- Provides image uploads for CCK.
    • Link -- A CCK content field which lets you add a complete link to your content types.
  • Commerce/advertising
    • AdSense -- Provides Web site owners with the means to earn revenue from visitors by displaying ads from Google's AdSense or SiteSearch on their sites.
  • Developer
    • API -- An implementation of a subset of the Doxygen documentation generator specification, tuned to produce output that best benefits the Drupal code base.
    • Coder -- Assists with code review and version upgrade.
    • DBA -- Provides Drupal administrators with direct access to their Drupal database tables from within the standard Drupal user interface.
    • Devel -- A suite of modules containing useful utilities for both module and theme developers.
    • Javascript Tools -- Provides both an integrated set of Javascript and AJAX modules and a common set of methods extending those available in Drupal core (drupal.js) for Javascript and AJAX module development in Drupal.
    • Simple Test -- A framework for running automated unit tests in Drupal.
  • Filters/editors
    • Filter by node type -- Allows an admin to restrict the type of input format available to a user by user role. It does not, however, allow the admin to restrict the available input formats by node type.
    • HTML Corrector -- Corrects HTML entered into content areas.
  • Media
    • ImageCache -- A dynamic image manipulation and caching tool.
    • Taxonomy Image -- Allows site administrators to associate images with taxonomy terms.
  • Security
    • Captcha -- A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human.
  • 3rd party integration
  • Mail
    • Mime Mail -- A Mime Mail component module.
    • Send -- Adds "tell a friend" functionality to any node type, tracks send actions in CiviCRM (if installed) and maintains a history of sent items.
  • Content Display
    • Node Carousel -- An easy-to-use method for displaying nodes using the jCarousel library for jQuery.
    • Node Queue -- Allows an administrator to arbitrarily put nodes in a group for some purpose.
    • Site Map -- Provides a site map that gives visitors an overview of your site.
    • Views -- Provides a flexible method for Drupal site designers to control how lists of content (nodes) are presented.
    • Views Bookmark -- A flexible bookmark system that is completely customizable the administrator.
  • Content
    • Meta Tags -- Allows you to set some meta tags for each node, view or panels page.
    • Scheduler -- Allows nodes to be published and unpublished on specified dates.
    • Similar Terms -- Attempts to provide context for content items by displaying a block with links to other similar content.
  • Theme Related
    • Simple Menu -- Creates a menu bar that is displayed at the top of every page.
  • Utility
    • Token -- Tokens are small bits of text that can be placed into larger documents via simple placeholders, like %site-name or [user].
  • Evaluation/rating
    • Voting API -- Helps developers who want to use a standardized API and schema for storing, retrieving, and tabulating votes for Drupal content.

Thanks a lot for sharing all

Super Druper - March 12, 2008 - 04:16

Thanks a lot for sharing all this with us!

Amazing!!!

uzbekjon - March 12, 2008 - 08:05

Amazing what you guys have done... Great site for Drupal showcase marketing as well.

Thanks for sharing...

-------------------------------
Sites for uzbeks and Uzbekistan:
Uzbek Lyrics Database
Uzbekistan Forum

Phenomenal case study!

ebrittwebb - March 12, 2008 - 04:30

Phenomenal case study! Thanks so much for sharing!!

this is incredible, thank you.

zilla - March 12, 2008 - 05:11

this case study was so helpful in understanding how you pulled off the overhaul. one side is the whole vignette/old content conundrum - not dealing with that personally, but it will be huge when other major pubs come to look at drupal like you have...the other side, how you did what you did with core and add-on modules, step by step - just incredibly well done.

it's funny that many of the things you looked to modules for are now core in d6. that says quite a bit about how far drupal has come in just the past year. even more will be core in d7 (mostly around cck as it relates to this article)

performance from heavy module use - ??? - aside from your memcache implementation (discounting that) - did you notice any performance lags of any kind when using this great quantity of modules? many seem light, others seem script-heavy....though few appear to touch cron or anything like that (i think, unless maybe registered users get comment fup updates, subscriptions etc)...

'category badge' - you referred to this a couple of times and i keep thinking taxonomy image module (now using it myself) but i don't see it -
any chance you could mark up that "article structure" image? for example - could you make it bigger and simply draw lines mapping those items over to it from the list on the right?

search - you appear to have modified core search, but the actual search is the same - did you explore porter stemmer module for improving search results quality or consistency?

...and my last question, really a 'drupal rules' kind of thing: you were using vignette, that used to be crazy money many years ago, then you went open source, but in between drupal and vignette there are tons of choices - so how did you wind up here? detailed reviews? found out theonion.com runs on drupal ;)? on-staff drupal expertise? just curious...

The modules that we used on

cyberswat - March 12, 2008 - 12:55

The modules that we used on this project were chosen because of the quality of the module. They are modules that we work with regularly and can more or less rely on them to perform well. The biggest performance killer on sites like this are instances where a developer might find it easier to query the db directly, joining several tables, instead of using Drupal's API to extract the data. Simply can not stress the importance of letting Drupal do what Drupal does enough. The short answer is no, we did not experience performance degradation from the modules. There is a heavy amount of aliasing on the site and we did place approximately 400 queries to the url_alias table into memcache which helped considerably.

You can see the Category Badges clearly represented on their sitemap http://www.popsci.com/sitemap ... this is taxonomy_image module as you indicate. Clicking on any of the terms under Category Badges will provide a teaser list of only tagged articles which should be sufficient visual representation of how we are using the module.

Search is definitely heavily modified and we will be enabling the additional content types in the near future. It mimics core search but is definitely quite a bit different, even displaying only the Article content type. We relied on core Drupal in every instance possible so did not pull in additional modules for a process we considered to be extremely expensive. The searches are cached and made available to each user in their history and as a rss feed. In addition you can further filter the search results for each content type by Most Recent, Most Viewed, Top Rated, and most commented in addition to the default of Most Relevant.

John Mahoney, one of the editors at Popular Science, had encountered Drupal in a personal capacity and made the recommendation to his company. The experience of the editors with Vignette was negative enough that, ultimately, the decision to switch was not a difficult one. The amount of money saved in proprietary fees coupled with the new flexibility given to Popular Science in regards to the sites content are immeasurable.

Thanks

ascetic - March 12, 2008 - 06:13

OMG! a really useful inspiration. Thank You!!!
_______________________________
Mediasastra Literature Social Networking
Fropsware Free and OpenSource Software Downloads
itechstyle IT needs some styles

Awesome

JohnForsythe - March 12, 2008 - 06:17

Great work, you guys have done an excellent job. This is really front-page worthy stuff. Thanks for the in-depth writeup!

Maybe you could put some reviews of those modules up on http://DrupalModules.com/ :)

--
John Forsythe
Need reliable Drupal hosting?

This is great information.

vkr11 - March 12, 2008 - 06:22

This is great information. Thanks for sharing.

-Victor

Invaluable!

theborg - March 12, 2008 - 07:32

Every lesson learned through these case studies are a treasure in a sea of nodes!

----------------------------------------------------------------
Your site will be assimilated. Resistance is futile

Really excellent

themegarden.org - March 12, 2008 - 08:04

Really excellent article.
Hope to see more articles and knowledge sharing like this one.
Thanks.
---
Drupal Theme Garden

One of the best drupal sites

janlaureys9 - March 12, 2008 - 08:12

One of the best drupal sites i've seen so far :)

Thanks for share

mrsinguyen - March 12, 2008 - 08:30

That's good case study,
Thanks for share

Thanks

perrymanson - March 12, 2008 - 08:37

Very useful to me. We are making a big Drupal site and got a lot of ideas from your site.

Thanks for sharing.

Thx!

Tim-R - March 12, 2008 - 08:46

I was waiting for the PopSci case study since i discovered their site is based on Drupal:)

Creating node and contents?

pedrotribu - March 12, 2008 - 11:45

First of all, thanks for sharing with Drupal community.

How did you resolved the "eternal" topic on Drupal : the WYSiWYG content creating ?
I think it is one of the weakness comparing to other CMS like Wordpress, mostly on the Blog posting behaviour.

I understood you used Typepad and importing after to Drupal.
It was only for the initial migration or do you still use it for content production?

Any community comments are also welcome !

Saludos,
Pedro.

Project Approach

phineus - March 12, 2008 - 12:56

In your presentation, you mentioned a few details about how you ran the project. It sounds like it was a small crew on a fixed budget. Can you add something here about what methods/approach you used (or didn't use) to make this a successful project? Great work!

The Agile methodology

cyberswat - March 12, 2008 - 13:19

The Agile methodology http://en.wikipedia.org/wiki/Agile_software_development was used in a hybridized fashion with elements of the Waterfall model http://en.wikipedia.org/wiki/Waterfall_model. When we were approached by Popular Science we were given a requirements document that followed a standard index structure ... it was very much a document reflecting the requirements in an almost itemized list. Each main category became a "User Story" and was entered into a back end system we were evaluating for user story management. This provided an accountability trail to the requirements.

From there we began to enter the real user stories that referenced each of the previously entered ones. Tasks were created, assigned, and development commenced. Each week the client was given the latest code on an amazon cloud instance so that they could see the rapid iterations we were going through. We found that by combining the concepts of paired programming in Extreme Programming Extreme Programming with an Agile approach provided the best return.

Our management style is an evolutionary process we have discussed before http://pingv.com/blog/cyberswat/200706/project-management-drupal. It is something we consider ourselves extremely open on and are actively looking for discussions with others to help the community further refine the "best practices".

There are no wysiwyig

cyberswat - March 12, 2008 - 13:05

There are no wysiwyig editors on the popsci site. Popular Science, by nature, deals with technical content. We are fortunate enough to be able to work with editors that are sufficiently skilled at basic html layout. We were able to provide the Drupal Markup Engine to handle all the layout options possible on the site. It requires a simple tag based language that the editors can literally copy and paste from their input filter descriptions. Using the DME they can place images run through several different image cache options with a multitude of alignments and positioning options. The DME works with hooks and has a bit of an API on it so that other modules can extend and use this functionality.

Your concerns about a wysiwyg are being handled in the future by Drupal core ... and while I personally do not think a wysiwyg editor is a valuable contribution to core, I can appreciate the value it will have in addressing the issues you raise.

Typepad was used extensively by the Popular Science editors previous to our Drupal deployment. We were able to reduce the amount of time necessary for that particular import by leaving the old typepad data online. This lets us reference the images directly from typepad so that we did not have to import them directly to the site which saved a decent amount of time. Typepad is still being used, but new content is not being added to it.

What I'm most curious to

The AL - March 12, 2008 - 13:24

What I'm most curious to know: how long it took and how many developers were involved at pingVision?

Anyone available for some help wioth developing our site?

aloemantra - March 14, 2008 - 22:33

We are not as rich as PopSci but we could do with 8-10 hours of help by anyone of your developers versed with Drupal. Its amazing what you have achieved. As an editor I can only dream about this kind of tools and presentation. I have many years of archives of a newspaper imported into drupal. Now I need to get them sorted, have the pdfs linked and get them out on a good front page. Happy to send a link to test site you respond privately.
Great job on popsci.

Please contact us directly

laura s - March 17, 2008 - 19:07

Please contact us directly at http://pingv.com/contact-us

Laura
_____ ____ ___ __ _ _
design, snap, blog

Great session

bobacronius - March 12, 2008 - 13:24

Just wanted to put my $.02 in and say that the DrupalCon session you all gave was incredibly valuable for me. Being in the same line of work, it's always refreshing to hear how someone else approached one of those behemoth projects. Looks like you guys pulled out all the stops and ended up with a knock out site. I also like showing the popsci site off for those people that still knock Drupal as not being "enterprise ready" enough. You really set the bar higher and we'll all have to work a little smarter and better to meet the expectation.

Thanks again.

ajax tabs

Valeratal - March 12, 2008 - 14:44

How maked dinamic loading in ajax tabs?
Becouse in option Javascript Tools Tabs not have dinamic loading.

Well, the ajax tabs are a

jcfiala - March 12, 2008 - 14:53

Well, the ajax tabs are a block floating above the content area, and if you look at the raw html it's an unordered list. They're set up to work as standard links when javascript is turned off. When javascript is on, though, code is attached to the onClick events of the links that causes it to call about the same menu item as before, only returning the data as a chunk of html instead of the whole page - and then that page segment is inserted into the region. This really wasn't all that complicated, given jQuery's support of AJAX.

I'd say the big 'gotcha' on that was making sure that the returned pager at the bottom of the content block worked properly.
--
-john

AJAX tabs

klb - March 14, 2008 - 17:08

I'm afraid they do not work :|

[EDIT] Sorry, my firefox went crazy ;)

Managing the workflow

klawrence - March 12, 2008 - 16:54

Indeed, the people at Bonnier (the parent of PopSci) had a budget in mind as would any client. At the same time, as the project evolved, more functionality was requested. One of the challenges was to integrate third-party systems and existing data. These were the wild cards in keeping within the estimate.

Insofar as the staff, pingVision had 17 people who we could put on this project. This proved a plus in that it was 15 weeks from the signing of the contract to the point (two weeks before New Years) when the site was ready to go onto Bonnier's servers. This meant at times virtually the entire shop would swarm the project.

Given the anticipated heavy server loads, we then entered into a performance tuning phase where ajk and cyberswat were on-site at the Bonnier servers, in co-operation with the Bonnier team in Winter Park, Florida, while the rest of the pingVision team worked from pingVision's Boulder offices to migrate the data bases and tune the servers. When the site was Dugg, on a couple of occasions, the traffic spiked to some extreme levels, but held up to the load. There is no doubt that Drupal scales well and is more than ready for enterprise level sites so long as there's enough iron.

Throughout the engagement, we kept in close contact with the client, especially through Matthew Saunders, pingVision's Operations Manager, who wore the Account Manager's hat from beginning to end. I think it was key to our success that the communication was frequent, but brief.

The project was a challenge. During a swarm, it was possible to run through 200 hours in a week, and this meant everyone had to be on top of their game. Of course we hit those rates for only the briefest of spurts.

a delicate question about cost and time..

zilla - March 12, 2008 - 17:01

okay, i am NOT asking for any actual numbers regarding total cost as i suspect that's private, but you mention 3 months of development and a reasonably large team - but it looks like two huge things going on: the new site and the old content.

was the majority of time, money and resources spent dealing with the old vignette and related content and migrating and all of that - i mean, did the drupal-only configuration and hacking (including memcache) actually require that many people and that much time *excluding design*?

We had a number of projects

laura s - March 12, 2008 - 18:00

We had a number of projects happening simultaneously, so we did not have the entire staff working on PopSci. However, at times we had many people on it, and some of us were on it all the time.

Laura
_____ ____ ___ __ _ _
design, snap, blog

Great write up

a_c_m - March 12, 2008 - 16:49

Really good to see in detail how a site like that is put together, introduced me to a few new modules. Thank you !

Drayen
--
acmconsulting.eu

Very insightful case study,

syturvy - March 12, 2008 - 23:06

Very insightful case study, and a great way to learn new Drupal tricks. Thanks ;-)

Steven

Assumption on Drupal Version

Joe Matthew - March 13, 2008 - 08:08

Judging by the modules, I assume this is Drupal 5.x. Really love the details on all the modules - Thank you.

I am anxiously waiting to see a Drupal 6.x site with this level of module use.

-------------

Joe Matthew
Online Business Systems

Version 5.x, yes

jcfiala - March 13, 2008 - 21:46

Yes, this was Drupal 5.x through and through.

I'm looking forward to seeing a Drupal 6.x site as well!

--
-john

So grateful...

ciperl - March 13, 2008 - 17:28

This is an amazing write up. Reading how you used the different modules and content types is extremely helpful in understanding the work you placed "under the hood". Thank you for taking the time to put all this information down for us to soak up.

making this a use case in the marketing material

kvantomme - March 13, 2008 - 19:46

Drupal needs use cases that are understandable for business folks. I added a new chapter for this to the marketing section in "About Drupal" on Drupal.org at http://drupal.org/node/233897

I took the liberty to add a reference to this great case study at http://drupal.org/node/233904.

great idea - but should be in "is drupal right for you" -notmktg

zilla - March 14, 2008 - 01:25

just think these should go in the "is drupal right for you" section of hte handbook - not marketing...they'll never be found there. marking a site that doesn't exist or is under pre-development consideration ranks low on the priority list...

Very interesting write-up, great detail...

jjkd - March 14, 2008 - 02:32

... can you say a bit more about the "load-balanced multi-server cluster" used to host this? How many web servers? More than one database server? Memory, CPU cores? Thanks!
--
Joe Kyle
--jjkd--

Thanks!

jansky - March 14, 2008 - 12:04

This is a great study case and a great example of what I call sharing knowledge among members of a community! If more site developpers would share experiences this way a lot more of us "normal" users would find the Drupal learning curve much easyer to climb.

WOW

TPerkins - March 14, 2008 - 13:40

This really truly is the best case study on Drupal.org yet. Very detailed. Thank you.

Image Management

matkeane - March 14, 2008 - 14:40

Thanks for the detailed write-up - it's very interesting to see how you approached the project.

I was just wondering how you managed the presumably large number of images used on the site - I see you're using ImageField and ImageCache for uploading/resizing, but do the uploaded images get fed into a site image library, for example, or are they managed solely through the image node fields?

I'm curious as I'm look at different solutions for managing images for a site with many contributors, and I'm wondering whether an image gallery module, or home-made cck/taxonomy is the best approach.

thanks,
Matthew

popsci.com woooow

freegame - March 14, 2008 - 16:29

Really fantastic. This case study make me confident to develop my web with drupal..
Salute

Congratulations / suggestion

Chris Johnson - March 14, 2008 - 17:28

Congratulations on several points:

1. This is the best write-up I've seen for a professionally produced Drupal site.
2. The PopSci site may well be the best example of Drupal usage I've seen.
3. Obviously, this was a very large and challenging undertaking! You all at Ping Vision (Laura, Greg and everyone else who've I not met) have accomplished a huge success by bringing the job to fruition.

Anecdotally, it was great to read about it here as I had wondered who did the site. I am not a subscriber or even regular reader of PopSci but a couple weeks ago my wife picked up the latest issue from the newstand. In reading through it, there were a couple of things which caught my eye and resulted in my visiting the web site. As I often do, I peeked at the source and discovered it was Drupal powered.

Lastly, if the client is still working with you, you might take a look at the site with YSlow. It takes quite a while, it seems, to load all the various bits. Using the Boost module and/or otherwise aggregating the CSS and JS might help.

Well done!

hefty hardware and performance

peuclid - March 14, 2008 - 18:12

Naturally, there is a hefty selection of hardware powering the Popular Science website

I'm curious about what hardware and how much "hefty" hardware us used to support the site. Can you give us a synopsis of the system architecture and costs associated with delivering this much content efficiently? It's no small task to handle an

average load of approximately 60-70 page views per second

If we want to support traffic like that, I'm wondering what the costs would be and how much time it would take to tweak the existing modules to make them handle this level.

Were there any performance customizations in existing modules? I'm curious because I'd be concerned with locking myself into a version of a module with my customizations, making it difficult to upgrade.

I'd love to see a similar article just addressing the performance of the system. It was an excellent synopsis from the content and design end.

Thanks very much for sharing the info.

Every site is different.

laura s - March 17, 2008 - 19:17

Every site is different. This one is very content rich per pageload. OTOH, Khalid just posted (visible in Planet Drupal) about achieving high performance on a single server for a very different site. We will sometimes replace a configurable module with a lightweight module other code for scalability purposes, but we try to keep things as configurable as possible.

We found that the Yahoo terms module was very slow, and usable only for the imports. (It slowed that process way down.) We also found that sometimes you could end up with an unindexed views query that could be a big performance hit. It's all on a case by case basis, based on code profiling, benchmarking and looking at options.

For a more comprehensive look at scalability, I'd recommend looking at the presentation on that at DrupalCon Boston. I did not see it (we were doing the PopSci presentation at the same time) but I understand they presented a very good overview of approaches.

Laura
_____ ____ ___ __ _ _
design, snap, blog

Validation!

Bence - March 14, 2008 - 21:59

Hi,

the site is obviously very advanced and professional Drupal site.
But the home page has 95 validation errors. And I don't understand why do you use XHTML 1.1 and serve it as text/html? This is forbidden according to the standards (MIME type conflict).

http://www.w3.org/TR/xhtml11/

laura s - March 17, 2008 - 19:25

http://www.w3.org/TR/xhtml11/conformance.html#docconf

XHTML 1.1 documents SHOULD be labeled with the Internet Media Type text/html as defined in [RFC2854] or application/xhtml+xml as defined in [RFC3236].

Other aspects are "REQUIRED". This is not, and the Microsoft reality pushes us to opt out. However we see upsides in other ways in working with xhtml 1.1.

Laura
_____ ____ ___ __ _ _
design, snap, blog

To add to Laura's comment,

Greg Hines - March 17, 2008 - 19:38

To add to Laura's comment, the misconception that XHTML must be sent as application/xhtml+xml most likely stems from Ian Hickson's famous treatise on the subject. He recommends (strongly) against using text/html when transmitting XHTML documents but that's his opinion. The spec, as Laura pointed out, states that XHTML should be sent as either text/html or application/xhtml+xml.

While there are valid arguments on both sides of the argument about using text/html, you're basing your criticism on a false assumption (i.e. that it is forbidden to use text/html when delivering XHMTL 1.1).

Okay, it is not forbidden,

Bence - March 17, 2008 - 22:43

Okay, it is not forbidden, but the standards says "should not". Using tables for layout or using presentational tags like font is nor forbidden, but you should not do it. It is the same as you were using HTML 4.01 if you serve your XHTML in text/html.

And it is also sure that you will never serve your XHTML as application/xhtml+xml, since you have to correct all the validation errors then, and test all the stylesheets and javascripts because CSS and javascript works differently with real XHTML.

That's why serving XHTML as text/html is useless, since propably you never will serve it in application/xhtml+xml (because on a large site it would be huge work), which means you will never use XHTML features. People use XHTML because they hope that sometime in the future they will be able to use XML features, but in practice it won't happen in the next 5 years.

I would say that using XHTML in text/html is wrong in theory, but in practice it doesn't matter, since browsers can handle it :) And it is easy to write a short script which converts your PHP and static HTML files from XHTML to HTML, or HTML to XHTML.

You're right that the W3C

Greg Hines - March 18, 2008 - 22:50

You're right that the W3C officially says "SHOULD NOT" for using text/html with XHTML 1.1. See here:

http://www.w3.org/TR/xhtml-media-types#summary

To me, though, the issue is less about well-formedness and XML's draconian error-handling (though it sure doesn't help the case for application/xhtml+xml) or differences between the HTML and XML DOMs than it is about user agent support. Internet Explorer doesn't support application/xhtml+xml, which makes that media type unsuitable for use in the real world. It's as simple as that. Some bloggers have taken to using that media type to punish IE users, but I don't think punitive measures like that are going to solve the problem. And no client of any size is going to voluntarily shut out 80 percent of its potential audience from even being able to load their site.

I don't think the solution is content negotiation (serving application/xhtml+xml to user agents that support it while serving text/html to the rest) partly because of the discrepancies in the respective DOMs, but also because it's damn near impossible to do it right. So many user agents state support for */* that it's meaningless to ask them what media types they support.

If the world existed in an ivory tower, we'd all be serving XML pages (RDF, maybe) run through client-side XSLT and presented with XSL or CSS. We'd have transparent PNGs that worked across the board and full support for SVG. Every user agent would support all of the above flawlessly and with great efficiency. And working with forms would be easy. And I'd have a pony.

In the real world, though, we have to make compromises. By default, Drupal generates XHTML. To override it all to produce HTML output would waste enough developer and CPU cycles that it's not even worth considering, really. And text/html is the only suitable cross-browser media type. As I see it, the only real question is "Why XHTML 1.1 instead of XHTML 1.0 Strict?" And that's a question to which I don't know the answer in this case (I'm sure we had a reason...).

All that said, I used to be a purist. I just eventually stopped caring about this when I realized the situation hadn't changed in five years and wasn't showing any signs of changing in the near future.

Yes, using XHTML 1.0 Strict

Bence - March 20, 2008 - 14:39

Yes, using XHTML 1.0 Strict or HTML 4.01 Strict is the same result. Using XHTML 1.1... I don't see any advantage here. New browsers already support some HTML 5 (Safari 3.1, Firefox 3), so the future is not XHTML 2.0.

Anyway, nowadays you can use XHTML 1.0 Strict or HTML 4.01 Strict, and you will achieve exactly the same.

I don't disagree with

Greg Hines - March 21, 2008 - 16:43

I don't disagree with anything you just said. ;-)

But don't get me started on HTML 5...

a very very good write up

bertboerland@ww... - March 15, 2008 - 21:25

thanks for sharing1 a nice site as well, but if you dont like it... :-)

--
groets
bert boerland

Agree with you. Drupal

themeartists.com - March 16, 2008 - 00:25

Agree with you. Drupal really deserves such showcases. It is obvious that Drupal has great future!

Thank you laura s for sharing the knowledge with community.

---------------------
Theme Artists - Professional Drupal Themes

Thank you for the info

roy_dedy - March 16, 2008 - 14:35

This is a great article. Thank you for sharing...

Captcha

davegan - March 17, 2008 - 01:03

I'm curious which captcha type you went for... can't seem to find an example on the site.

subscribed.

minesotaa - March 17, 2008 - 13:29

subscribed.

Captcha was installed for

cyberswat - March 20, 2008 - 17:55

Captcha was installed for the site but is not currently being used. It is likely you will see it in use when the Popular Science editors begin running user submitted content contests and open up those submission forms. At this point, Captcha is a tool the Popular Science editors have available if they choose to use it.

Way cool

drupal.fan - March 17, 2008 - 16:29

Thanks for sharing! This is really helpful to see how large sites are put together, though if you were really concerned with scalability then Drupal probably would not be the way to go. Fortunately the site isn't receiving a ton of traffic, and in addition to the memcache (which is very good), additional requests can be augmented with additional hardware. Perhaps a less efficient, more expensive solution -- but that's the funny thing about Drupal.

Drupal rocks and is great, and FREE....but...it usually ends up being so much work for sites that really demand a lot of attention and customization that you'd probably be better off using some framework rather than an end product...despite the fact that Drupal is pretty darn slim these days and runs real fast out of the box...it has too many restrictions and no clear direction in regard to consistency or (dare I even say or get into design patterns)...but that's typical of it's generation and purpose. It does a good job of catering to a wide variety of people.

So...That said. I'm really glad this was posted because it shows you how to deal with some of these limitations and how to find great solutions for the challenges out there because, of course, every site is different.

Thanks!

I can see you haven't been

brianV - March 19, 2008 - 20:55

I can see you haven't been using Drupal very long, based on the comment:

Drupal rocks and is great, and FREE....but...it usually ends up being so much work for sites that really demand a lot of attention and customization that you'd probably be better off using some framework rather than an end product...

and

it has too many restrictions and no clear direction in regard to consistency or (dare I even say or get into design patterns)...

Basically, these two comments are completely wrong. Regarding the first, Drupal is more of a framework than anything else. Once you know some module coding, you are golden.

Regarding your second comment, core Drupal is some of the most consistently bug-free code I've worked with. What restrictions have you run into?

----
Brian Vuyk
Web Design, SEO and Applications Development
53 Nellida Cresc.,
Hamilton, ON, Canada, L9C 7P9
Phone: 613-216-5161
brian@brianvuyk.com | http://www.brianvuyk.com

Some misunderstandings, I feel

laura s - March 22, 2008 - 16:23

Thanks for the props! I confess I'm a bit puzzled by some of your remarks about Drupal, though.

This is really helpful to see how large sites are put together, though if you were really concerned with scalability then Drupal probably would not be the way to go.

I wonder why you would believe this. Drupal scales very well, and is improving on this score with each major release. Any larger-scale site is going to require some serious attention to server configurations, especially when you're talking about complex sites that are doing a lot of dynamic parsing of content and have multitudes not just reading but posting their own content (which could describe a significant proportion of Drupal sites). Drupal is not unique in this area, and in fact is pretty typical. If you're investing that much time and energy into a web-based project, it is only sensible to make sure the hosting foundation is sound and optimized.

Drupal rocks and is great, and FREE....but...it usually ends up being so much work for sites that really demand a lot of attention and customization that you'd probably be better off using some framework rather than an end product...

Drupal is a framework, which is what makes it so extensible and flexible. Having to build from scratch what Drupal provides with the meal would not be a cost-effective approach, especially given that you'd end up with your own unique codebase that you'd have to maintain by yourself. I do truly believe that the website owner is much better off joining a robust worldwide open source community than going with proprietary or 100% custom coded solutions. Any enterprise-level site is going to require customization -- that's a simple reality, whether you're working with Drupal or something else.

despite the fact that Drupal is pretty darn slim these days and runs real fast out of the box...it has too many restrictions and no clear direction in regard to consistency or (dare I even say or get into design patterns)...but that's typical of it's generation and purpose. It does a good job of catering to a wide variety of people.

"Catering" is a curious word choice. Drupal is not a product developed by a company, it's a commons created by thousands of people who scratched their own itch. The direction is inspired by Dries, but the reality is created by people contributing their efforts for free, of their own initiative.

I don't know what you mean by "too many restrictions." Do you mean the GPL?

As for "consistency," I'm not sure what you mean either, but if you're talking about UI, there is quite a lot of consistency in core. As contributed modules are all created independently, for their own purposes, is it any surprise that they often embody different ideas of UI? That's just a reflection of the diversity of the community itself. However, Drupal 6 represents a major step in separating business logic from presentation, to the point that any savvy designer can template out a consistent user interface even using widely disparate modules.

Laura
_____ ____ ___ __ _ _
design, snap, blog

Great writeup and kudos on

tjholowaychuk - March 17, 2008 - 14:49

Great writeup and kudos on the development. The theme could use alot of work but hey :)
____________________________________________________
Tj Holowaychuk

Vision Media
350designs
Design Inspiration

Really amazing!! Great case

DavePoon - March 18, 2008 - 02:38

Really amazing!!
Great case study with very detailed information!!
Very useful! Thanks.

Great Info

mrbert - March 18, 2008 - 18:27

Thanks for sharing more insight

Ghana Real Estate | Voacanga Africana Seeds | Shea Butter

Amazing, very nice development

priandoyo - March 19, 2008 - 04:41

Amazing, its very nice development and its all under drupal.
great, thanks for sharing

SecurityProcedure.com is Drupal powered

Abuse module usability flaw + IE6 problem

bartekg - March 19, 2008 - 10:34

Hi,

First of all thanks a lot for this fabulous case study! The site looks really nice too.

Just one question regarding the Abuse module. It seems it has a major usability flaw -when you rate a comment by clicking "NOT HELPFUL" or "HELPFUL" button you get absolutely no indication that your opinion was saved/processed (tested in FF2 & IE6). Are you going to improve it in a near future? popsci.com is a brilliant candidate for #1 Drupal showcase site and as such I believe it should be really well polished.

Also, In IE6 the node carousel ("TODAY ON POPSCI") is not visible.

Best regards,
Bartek

When working with personal

cyberswat - March 20, 2008 - 17:51

When working with personal projects or modules the luxury of perfection is something I personally strive for, almost to a fault. Most developers that I have had the pleasure of working with in relation to Drupal place a hefty amount of love into their code and make sure every single nuance is accounted for from their perspective. When it comes to the business world, especially with Open Source, that love gets severely truncated. Drupal is an open source project using open source modules and bugs do exist.

We had a fixed budget to meet the business needs of the project and utilized every available hour in doing so. We gave the client a product that can serve as a solid foundation they can build from that squarely satisfied the business requirements. If this were a personal project and we could sit around tweaking until every single aspect of the site is 100% across every browser and on every os, we would. However, this was a client that has constraints we must honor. That being said, we provided the maximum benefit possibly for every dollar the client spent and consumed the budget allocated for this phase in the process. The popsci.com website now has a solid Drupal base.

There is additional work being performed on the site that is being rolled out in future phases.

Thank you for a candid

bartekg - March 22, 2008 - 13:34

Thank you for a candid reply. I guess most of us want to work on a piece of software until it is perfect which usually means work is never 100% finished...

Anyway, popsci.com is absolutely great Drupal show case site. And I am sure - with future upgrades you mentioned - it is going to be almost perfect. :-)

Fantastic

accom06 - March 20, 2008 - 09:21

This is a great case study... nicely done.

Video Upload Module

SciFiGuy - March 21, 2008 - 03:38

User Video

The Video node enables posting of video to either YouTube or OnStream. We developed a custom media module, which creates a custom Media Profile CCK field that can be attached to any node, allowing editors and admins to restrict the services used on a per-content-type basis.

The custom media module differs from the existing emfield module by offering greater flexibility -- such as allowing users to upload videos to the services straight from Drupal.

Hi. Do you plan to make this module available to the Drupal community?

A lot of the time involved

Greg Hines - March 21, 2008 - 16:39

A lot of the time involved in creating this module was bending the Forms API to do what I needed it to do--something that Drupal 6's FAPI seems to do much more easily. Given that D6 is already out, I hadn't planned on putting the time in to finish genericizing the module for Drupal 5. But seeing as how there's some interest in it, maybe I'll put in that time and get it out there... Plus with the YouTube API having been released, there's more of a reason for this module to exist separate from emfield (it was primarily developed to allow uploading to OnStream without leaving Drupal).

Thanks! That would be

SciFiGuy - March 22, 2008 - 01:47

Thanks! That would be great! I think that a lot of people would appreciate it. Although Drupal 6 is out, like you, most people who are doing development are using Drupal 5 because most modules haven't been ported.

Greg, Do you think you will

SciFiGuy - April 25, 2008 - 05:07

Greg,

Do you think you will still release a module for uploading directly to YouTube from Drupal? If so, do you have a time frame? I noticed that there is a proposal for a similar module...

We plan to contribute some

laura s - May 6, 2008 - 19:21

We plan to contribute some developments we've made in this area. However, it's likely that video-related code will be versioned for Drupal 6.

Laura
_____ ____ ___ __ _ _
design, snap, blog

Great write up

Boris Mann - March 22, 2008 - 02:15

An excellent, excellent write up of modules used and your approach -- it would be great if all projects could end with such a great case study write up.

I'm not a fan of the Javascript Tools package. IMHO it's a collection of hacks that would be better replaced with jQuery extensions / plugins over time.

We created http://drupal.org/project/quicktabs as a way of implementing AJAX tabs, which uses jQuery.

--
The future is Bryght at Raincity Studios

Very nice site and great

Quinto - March 22, 2008 - 09:23

Very nice site and great case study. I like seeing high profile sites moving to Drupal.

I am new to the Drupal

kaffeen - March 25, 2008 - 14:17

I am new to the Drupal community. I like a lot of the things that PopSci has done. I am interested in implementing (in some fashion) the modules used in this project. I have downloaded and installed the latest Drupal (6). In regards to this project, which modules and functionality listed in this article is pre-installed and/or usable with Drupal 6? It appears a great deal of this applies to Drupal 5x and I have read a comment above that suggests many of these things are now in Drupal 6 by default. Please describe...

Many modules are in core

jcfiala - March 25, 2008 - 16:45

Many modules are indeed in core, and you can find them in the 'modules' directory of your install. A number of the other modules are supported by contributions, though, and those you'ld get from various project pages.

dme is possibly not going to be updated to Drupal 6, as it seems the 'Flexifilter' module may handle everything it does. I haven't really had the time/inclination to look and make sure yet.

NodeCarousel is partially ported to Drupal 6, or it may get combined with another module - that's sort of up in the air as well. I've been working on helping to port nodequeue to D6, and that's kept me busy in my free Drupal hours.
--
-john

Thanks!

njukey - March 25, 2008 - 15:45

Thank you so much for sharing this.

Thanks for posting this

infowarp - May 7, 2008 - 01:43

Thanks for posting this thread. Well done on your site.

Andrew

www.hostingdiary.com

Featured Tout

mattrigdon - March 29, 2008 - 00:00

I am one of several designers creating a new version of a University Website and we would love to know how you were able to get the featured tout setup and what specifics need to be configured in order to get it to work. How do you place the image, how do you adjust to get the text that you want and the black box to overlay, etc. We really want to have that feature on our site for this new version. Anything you can do to guide us in the right direction would be great. We have downloaded the JQuery Update, JCarousel, Node Queue Modules and now are at a stand still, also how do I get the article mod working correctly. Perhaps someone can point us in the right direction. To see what we have so far we are building at http://host.jessup.edu Thank you.

Matt Rigdon
Special Projects

Dev/Test/Prod promotion

tdeagan - April 2, 2008 - 14:47

Great case study, thanks for the invaluable write-up!

We're starting out on a large Drupal project and are having a very difficult time coming to an understanding of best practices for multi-developer code promotion strategies. Typically we've worked in environments that allow for SVN, CVS or other source control mechanisms as our basis for management of branches, releases, etc. While that may not be a direct fit for Drupal, we do feel like we still require something along the lines of multiple dev instances that promote to a staging/testing server which is independent of production.

It's not clear how folks do this in big environments. Does the Drupal world really do their development on the production server? If not, how does promotion to production occur? How does synchronization of data back from a production box to a staging or testing box occur? Is it an all or nothing, take the site down and restore a backup (gulp) process? It appears from the following posts (somewhat aged, but the best we can find,) http://www.nicklewis.org/node/855, http://drupal.org/node/101522 that the question is not resolved.

Did PopSci use any promotion methodologies?

Thanks again for the great case study!!

--Tim

In our environments, we

cyberswat - April 2, 2008 - 17:54

In our environments, we typically incorporate a dev database that is shared between developers who run svn checkouts of their code locally (we are largely in the same building). When an iteration is complete, everyone does a complete svn up and evaluates for obvious breaks. Once that is complete, a systems administrator will perform an svn checkout to the testing machine that the client has provided. If the client doesn't provide a specific testing machine, we typically setup a sub-domain on their available box that replicates the primary domains configuration. At that point our QA process begins and the site is evaluated. Each of the data or configuration changes are scripted to work from update.php wherever possible. These changes are largely contained in a module that contains client specific functionality. Each developer is responsible for accounting for their db changes in hook_update http://api.drupal.org/api/function/hook_update/5. When staging has been approved we take a snapshot of the live site and deploy the new code base to production where another series of QA begins.

That describes our process in a possibly idealistic way. There are always exceptions and specifics that need to be accounted for with the more challenging clients, for example, dealing with a clients version control system or locked production environments. The key to this approach lies in the fundamental concept of rapid iterations introduced from the Agile Methodology. When we are deploying a new site our process is simplified because it is a new site ... there may be a data import, like in the case of popsci, but it is still a new site so our job becomes easier. From that point forward it is desirable to keep change orders and bug fixes distinct ... meaning a clearly defined task. Each task can have it's own test cases written for it providing additional help in verifying that the db/config changes necessary in fact made it over after update.php is run.

Another, more experimental approach, could be to use something like