We rely firstly on a clear understanding of the Drupal site’s requirements, including the performance requirements and the expected load on the site.  A module that has been proven to be effective via the direct experience of our team is always highly desirable.

The following points describe tests we apply for module selection once we are confident that the requirements are clearly defined and understood.

  • Is the module compatible with known requirements?
  • Does the module provide functional compatibility with other modules or functionalities in the site?
  • Is the module suitable and available for the selected version of Drupal? D6, D7 or maybe D8?

If a module appears to be suitable then we further consider our full understanding of the site’s functional requirements, including its ongoing maintenance and expected shelf life. With this context, can the requirements be sufficiently realised with the module out of the box, or would we develop on top of the module’s API? For this consideration we also aim to estimate how much time we would need to implement the required functionality with the proposed module as opposed to implementation via a custom module developed from scratch.

After a range of considerations a short list of modules or or approaches can be considered alongside the pros and cons of each, allowing for a business decision on which module or integration approach provides the most benefit to our client.

When researching a module, information is found via the following methods:

  • review of the module home page
  • review of home page linked resources (Demos, video walkthroughs, FAQs, use cases, etc.)
  • review of the module README file
  • review of the module API file
  • review of any commentary on external blogs and groups.drupal.org
  • review of the module’s health via
    • Bugs Reports
    • Last modified date
    • Usage statistics and install base
    • Use Coder module to test Drupal Best Practice implementation
    • Use Devel module to test possible module performance problems

We also have a library of modules which we know we can comfortably use in almost any D7 project. Such as:

  • views
  • panels
  • panels_everywhere
  • ctools
  • elisya_cron

The selection of modules may also be predicated by architecture decisions that we make for the project.