Drupal Maintenance Costs

Submitted by George Moses on Fri, 2010-10-29 20:41

Recently I was asked the question how much time an administrator of a Drupal site would need to maintain the Drupal CMS. I realised that most of the time maintenance means updating Drupal core and contrib modules. So calculating the amount of time needed depends on the number of updates of Drupal core and community modules.

So the "number of updates of modules" plus the "number of core updates" times "work needed for implementing a update" times "hourly tariff" equals "maintenance costs for Drupal updates".

After this realisation I built a tool to query the Drupal.org module releases RSS and parse the number of releases for given Drupal core and module versions, to put the thought into practice.

Based on a specific Drupal installation and a couples of assumptions I started to calculate Drupal maintenance costs. To keep things simple I assumed that every update of a module is applied and that there is no efficiency advantage for applying multiple updates at once. Of course, in real life updating a Drupal site will be bound to a Service Level Agreement (SLA), so updating will probably occur in a regular interval, but I'll come to that later on.

Furthermore, I assume that applying an module update will take about 15 minutes of time for an administrator and about 30 minutes for a Drupal core update. Of course, this will vary greatly depending on the experience of the administrator, deployment tools and procedures. Large Drupal installation have deployment frameworks and tools aiding in testing and accepting updates on a site, but also a more formal approach which will take more time. On the other hand the availability of a content distribution system or deployment tools will speed up distribution of updates. Also some (larger) modules will take more time to deploy (test) than others.

So I took a particular (small) Drupal site and identified the specific modules used and started to count the number of updates of the used module release. The results are shown below, based data of 29-10-2010.

Drupal maintenance in 2010

4 Releases for Drupal core (drupal 6.) in 2010

1 Releases for Global Redirect (globalredirect 6.x-1.) in 2010
1 Releases for Google Analytics (google_analytics 6.x-2.) in 2010
3 Releases for ImageAPI (imageapi 6.x-1.) in 2010
0 Releases for ImageCache (imagecache 6.x-2.) in 2010
9 Releases for Nodewords (nodewords 6.x-1.) in 2010
2 Releases for Related links (relatedlinks 6.x-1.) in 2010
1 Releases for Webform (webform 6.x-2.) in 2010
0 Releases for Upload previews (upload_preview 6.x-1.) in 2010
4 Releases for XML sitemap (xmlsitemap 6.x-2.) in 2010

So in 2010 there were 4 core updates and 21 module updates. Based on the amount of work described above this adds up to:

4 * 0.50 = 2.00 hours of Drupal core update work
21 * 0.25 = 5.25 hours of contrib modules update work

For a grand total of 7.25 hours of work.

Drupal maintenance in 2009

2 Releases for Drupal core (drupal 6.) in 2009

0 Releases for Global Redirect (globalredirect 6.x-1.) in 2009
2 Releases for Google Analytics (google_analytics 6.x-2.) in 2009
5 Releases for ImageAPI (imageapi 6.x-1.) in 2009
7 Releases for ImageCache (imagecache 6.x-2.) in 2009
17 Releases for Nodewords (nodewords 6.x-1.) in 2009
0 Releases for Related links (relatedlinks 6.x-1.) in 2009
6 Releases for Webform (webform 6.x-2.) in 2009
2 Releases for Upload previews (upload_preview 6.x-1.) in 2009
5 Releases for XML sitemap (xmlsitemap 6.x-2.) in 2009

In 2009 there were 2 core updates and 38 module updates. Based on the amount of work described above this adds up to:

2 * 0.50 = 1.00 hour of Drupal core update work
44 * 0.25 = 11.00 hours of contrib modules update work

For a grand total of 12.00 hours of work.

The cost of Drupal maintenance

Now take the hourly wage of your Joe Average Drupal administrator, say $80. In 2010 it would have cost $580 ($48 per month) to update the Drupal site. In 2009 the costs would have been $960 ($80 per month). These are numbers for a relatively small Drupal website, for many sites the amount of work can easily double or triple for Drupal ecommerce sites.

Besides the costs of the administrator there are SLA costs to consider when outsourcing the maintenance of a Drupal site. When will security updates or bug fixes be updated? As a best effort, once a month, once a week, within a working day or within 4 hours? Every level of service will add to the price of maintenance and could easily be much higher than the actual update costs.

Cutting the costs

I didn't realise updating a Drupal site would take so much time. Is there a way to cut back in these costs? If you would only update the site once every three months would this be more economical? Let say that every 3 months half of the amount of modules used will need to be updated. In this Drupal project there would be 2 core updates and 18 modules updates a year, so 1.00 + 4.50 hours of work, approximately 30%-55% less work. So updating once every quarter would certainly cut back the cost but would not be acceptable in every Drupal site. Personally I would recommend a more frequent update cycle.

Update frequency of Drupal modules

Over the next few days I'll be busy calculating the number of updates of the most frequently used modules in the table below.

Module Release Updates
in 2010
Updates
in 2009
Updates
in 2008
Drupal core 6.x 4 7 8
Administration menu 6.x-1.x 1 4 4
Advanced help 6.x-1.x 0 1 6
Backup and Migrate 6.x-2.x 2 3 1
Calendar 6.x-2.x 0 3 11
CAPTCHA 6.x-2.x 4 10 0
Content Construction Kit (CCK) 6.x-2.x 2 5 12
Chaos tool suite 6.x-1.x 6 10 2
Date 6.x-2.x 2 5 11
Devel 6.x-1.x 4 6 10
FCKeditor - WYSIWYG HTML editor 6.x-2.x 3 7 2
FileField 6.x-3.x 5 9 5
Global Redirect 6.x-1.x 1 0 3
Google Analytics 6.x-2.x 1 2 2
Image 6.x-1.x 3 7 3
ImageAPI 6.x-1.x 3 5 4
ImageCache 6.x-2.x 0 7 3
ImageField 6.x-3.x 3 8 3
IMCE 6.x-2.x 6 0 0
IMCE Wysiwyg bridge 6.x-1.x 1 2 0
jQuery UI 6.x-1.x 1 1 3
jQuery Update 6.x-2.x 1 1 0
Lightbox2 6.x-1.x 2 1 6
Link 6.x-2.x 1 7 9
Mollom 6.x-1.x 5 4 8
Nodewords 6.x-1.x 9 11 0
Page Title 6.x-2.x 1 3 2
Pathauto 6.x-1.x 3 1 2
Panels 6.x-3.x 5 11 1
Poormanscron 6.x-2.x 1 4 0
Printer, e-mail and PDF versions 6.x-1.x 3 10 7
Related links 6.x-1.x 2 0 0
Refresh 6.x-1.x 0 1 0
Token 6.x-1.x 3 1 3
Transliteration 6.x-3.x 1 3 0
Webform 6.x-2.x 1 6 1
Upload previews 6.x-1.x 0 2 1
Views 6.x-2.x 3 6 7
Wysiwyg 6.x-2.x 1 3 0
XML sitemap 6.x-2.x 4 5 0

Updated: 08-11-2010

Please note that the above list is generated by a script I wrote which reads the modules releases RSS feeds from Drupal.org. The number of items in these feeds are limited, so older updates may not be counted correctly.

Comments

Would you like to share your thoughts on the above? Tweet me.