Deciding which modules to install

As we started work on the new hal-pc.org site, we started to install some user contributed modules and I was asked what criteria I used when deciding whether or not to install a module which has been contributed to Drupal.

As I thought about this, I realized that I use several criteria: functionality, compatibility, stability, popularity, and maintenance.

The first criteria in evaluating a module has to be functionality. If a module does not do what you need it to do, there is no point to installing it. It is important to know your needs prior to installing the module so you can be certain that it will meet the needs of your users. While you are evaluating the module you should look for gaps in functionality as well as looking for excess functionality. If a module does 10 times more than what you need, you may want to avoid the additional complexity of the larger module and find something that is more targeted to your needs. Obviously, evaluation of a module should be done on a test site so you don't risk disrupting your live site.

Next, you need to ensure that the module is compatible with the version of Drupal you have loaded on your site. If you are running Drupal 6, you can only install modules compatible with Drupal 6. Older modules will not work nor will newer versions.

After you have determined that a module will fill your needs, you need to evaluate how well the module works. Is the module stable or does it have a large number of bugs? In addition to the testing you do on your own, you should also review the module's issue queue. The issue queue is available from the module's project page on Drupal.org in the left hand sidebar. The issue panel appears as follows:

From the issue queue panel, you can click through to get detailed information on each open bug or issue for the module. You can then evaluate how serious each known issue is for your site. You can also evaluate the total number of bugs that are open and how quickly they are resolved. The issue statistics page can help you to evaluate this.

Assuming that the module does not not have any major issues that would prevent you from installing it and using it in your production site, you can continue your evaluation by determining how well maintained the module is. You can gauge this based on how quickly issues are resolved, how frequently new versions are released, and how active the module's maintainer or maintainers are with the module and in the larger Drupal community. Some modules also have commercial supporters who fund the modules development with financial support. Having financial support gives developers additional incentive to put in the long hours needed to build a high quality, professionally maintained module.

A final indicator of whether or not a module is worthy of being installed on your site is the popularity of the module. A module which is more popular is more likely to be maintained well and it has more pairs of eyes uncovering bugs, reporting issues, and enhancing the documentation. You can see how many people are using a module by visiting the Usage statistics for the module. This link is available at the bottom of the module's page in the resources section.

Using the information on the Usage statistics page, you can get an idea of what percentage of sites are using the module as well as an absolute number of sites using each version.

After you have decided that you want to use a module, you may still need to determine which version of the module to use. Many modules offer both development and release version. Some will also offer alpha and beta versions.

In most cases, you will want to install the latest production version of a module on your production site. Your test site can include alpha releases, beta releases, or even development releases so you can evaluate new functionality.

Please remember that the contributors of these modules are working very hard to build high quality code that you can use for free. Please take the time to politely report any issues or bugs that you find to the module maintainers so they can continue to improve the software for the Drupal community. Also consider contributing to a module's development if you find that it is especially beneficial to you.