Growing Venture Solutions - GVS - scalability http://growingventuresolutions.com/taxonomy/term/133/0 en Drupal module selection in the enterprise: lists and processes http://growingventuresolutions.com/blog/drupal-module-selection-enterprise-lists-and-processes <p>We are driving ourselves crazy, folks. Choosing modules is really hard. And it's only getting harder on enterprise Drupal sites (and enterprise just means big teams and with big sites with big requirements).</p> <p>A recent conversation on twitter started by Drupal <a href="http://certifiedtorock.com/u/172987">rock star</a> <a href="http://drupal.org/user/172987">Katherine Bailey</a> shows how module selection on a big site can drive you crazy:</p> <p><a href="http://growingventuresolutions.com/gvsfiles/katbailey_goes_crazy.png"><img src="http://growingventuresolutions.com/gvsfiles/katbailey_goes_crazy_thumbnail.png" /></a></p> <p>So, today I'm going to lay out some ideas I've found for reducing the madness: choosing good modules both as an individual and as a member of an enterprise Drupal site. Of course the enterprise practices build on the set of guidelines for an individual site builder. I'd love to get feedback on other techniques people have used for module selection in big team, big site, enterprise environments.</p> <!--break--><!--break--> <h3>Module selection best practices</h3> <ol> <li>First, identify your need and try to be as generic as possible. If you say "Building an event system" you may skew your results toward the <a href="http://drupal.org/project/event">Event</a> module when what you really need is some combination of <a href="http://drupal.org/project/date">Date</a>, <a href="http://drupal.org/project/calendar">Calendar</a>, <a href="http://drupal.org/project/views">Views</a>, and <a href="http://drupal.org/project/signup">Signup</a>.</li> <li>Next, search around for modules that match what you need and look for recipes and tips from blogs or <a href="http://groups.drupal.org">groups.drupal.org</a>. This is often where you will find great advice on which is the best module to choose. Try the <a href="http://groups.drupal.org/similar-module-review">similar module review</a> group which is an amazing resource.</li> <li>Test out the modules. Build a test site that's a copy of your live site, read the README.txt and any documentation you can find, and then install the modules. Once you finish exploring one module, rebuild that test site and try again with any other potential modules.</li> <li>Look for statistics about the health of the module. Things like the popularity of the module, the number of maintainers and the recency that those people have committed code. Look for issues in the issue queue that have been fixed recently. More issues isn't necessarily bad.</li> <li>Check to see if the module matches Drupal best practices. Is it forward-looking and based on cck? Or does it rely on its own data storage. Does it pass tests from the <a href="http://drupal.org/project/coder">Coder</a> module?</li> </ol> <p>If you want to see more discussion on this, particularly as it relates to the redesign, check out <a href="http://groups.drupal.org/node/86819">Project metrics for drupal.org redesign</a>.</p> <h3>Enterprise module selection best practices</h3> <p>You've done all that, right. Now, what if you work on a <a href="http://www.economist.com/">major site</a> or a <a href="http://www.examiner.com">monster huge site</a>. Or what if you work in an organization that has <a href="http://www.upenn.edu/">hundreds of Drupal sites</a>. In these cases you need to go a few steps further than those listed above to ensure the sanity of your team and company.</p> <ol> <li>Create a Drupal working group with a mailing list and some wikis. You probably already have this, but it's important that you've got an organization-wide forum to share this kind of information.</li> <li>You need secure modules with good performance. Not all modules are written with security and performance in mind. So, now that you've got a wiki, one great step is to have your development team and security department create a list of modules approved by the organization for stability/security. The <a href="http://www.sas.upenn.edu/computing/drupal-approved-modules">University of Pennsylvania</a> maintains one such list based on research their team (led by <a href="http://www.madirish.net/justin/">Justin Klein Keane</a> has done over the last few years. </li> <li>Create a process for adding new modules onto that page. It should look more or less like the steps I mention in the first part of this article and end with "send an e-mail proposing the right module to the developer mailing list for discussion with the team." Ideally you have a dedicated security resource in-house who can be called on to help review the module and perhaps a senior developer or sysadmin who can look for performance problems.</li> <li>Some additional measurement criteria that are more important in large organizations are whether the module has Simpletests, whether it is <a href="https://wiki.fourkitchens.com/display/PF/Modules+that+break+caching,+and+how+to+fix+them">known to cause problems with Pressflow</a>, and whether it is flexible in ways that are likely to be useful for your organization. If you are building one site then this isn't as important as it is when the module has to satisfy a team of 30 site builders.</li> </ol> <p>This bloated process is likely to upset some of the site builders in your organization. If they are used to just picking their own modules and installing them then this just slows them down.</p> <p>Hopefully they'll see the benefits of this process:</p> <ul> <li>Increased ability to move site builders between projects. Now that people are mostly using the same modules it's easier for them to get up to speed on a new project.</li> <li>Your sites are more likely to be high-performance, scalable, and secure.</li> <li>You reduce the work for external teams (like the cyber security department, or sysadmin teams) because you aren't asking them to review new modules all the time for security/performance issues.</li> <li>You can share tips and tricks with other site-builders on your internal mailing list reducing the time it takes to build new sites.</li> </ul> <h3>Fighting/Embracing the Not Invented Here Syndrome</h3> <p>One major problem that "enterprise" organizations can get into is the "not invented here" syndrome known as NIH. Often people will refuse to use community modules because they couldn't possibly be good enough to use on <em>our awesome site</em>. Sadly, that is often the case. But I think a more accurate question than "to use, or not to use" a module is "to use, or to enhance until it's ready to use." It's easy to discard modules because you don't have to answer to another maintainer. On the other hand, working with the community process can be much more efficient in the long run since you get maintenance and new features for free. One great example of an enterprise working with the community is this <a href="http://drupal.org/node/372393">patch for Voting API indexes</a> from David Strauss and Moshe Weitzman as they worked on the Economist.com project. That same module can now be used on many other large-scale sites.</p> <p>This article is based on best practices I've seen in practice at Economist.com, from the UPENN page, and some government clients of ours that are rolling out dozens of sites. That said, I'm sure there are other ideas people have to make the process even better and I hope we can share them.</p> http://growingventuresolutions.com/blog/drupal-module-selection-enterprise-lists-and-processes#comments Planet Drupal enterprise scalability security Tue, 24 Aug 2010 23:01:21 +0000 Greg 1079 at http://growingventuresolutions.com