There Might (Not) Be a Module For That


Published on

One of the first steps in a new Drupal project is to walk through the wireframes and functional requirements of the new site to try to decide exactly how you would implement them in Drupal.

Sometimes that is dead easy to do. A simple list of the titles of the latest content can be constructed using Views. Done!

Sometimes that is an enormously complicated problem because there isn't any existing Drupal solution, or there are multiple possible Drupal solutions, or the Drupal solutions won't meet the functional requirements, or they don't seem to be ready for production.

If you've been around Drupal for any length of time, you've heard the phrase "There's a module for that", referring to the fact that there are over 15,000 contributed modules on that extend the core functionality and do almost anything you might imagine anyone would ever need. Sometimes you can do a quick search of the module list, find a module that is a perfect fit for your needs, and drop it in place. But often that's not sufficient. Both the cost and the timing of a Drupal project can be significantly affected by the decision about how to respond when there is no drop-in Drupal solution that will meet the project's requirements.

At Lullabot we call this the 'discovery' phase of a project -- the process of understanding the functional requirements of a new site and exploring the best ways to achieve it in Drupal. We've helped clients of all sizes determine how to use existing contributed modules to build out the site that they need, and when (and how) to respond when the existing solutions just don't work.

Some of the questions this session will cover include:

- How to find existing modules that might solve your problems.
- How to test drive potential modules to see if they work the way you need.
- Digging for sometimes obscure or hidden documentation about how the module works.
- Mining the module issue queues to tell if a module is really suitable for your needs.
- Deciding which version of a module is really 'safe' to use.
- Choosing between alternate modules that might solve the problem.
- What to do if existing modules aren't ready?
- When and how to roll your own solution.
- When and how to contribute your modules and/or changes back.
- Validating your decisions in the face of ambiguity and uncertainty.

Speaker(s): Karen Stevenson

Experience Level: Intermediate

Published in: Technology, Art & Photos
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

There Might (Not) Be a Module For That

  1. 1. There Might (Not)Be a Module For That Karen Stevenson Lullabot Consulting
  2. 2. Getting to Drupal
  3. 3. Core is Not Enough
  4. 4. Is There A Module For That?
  5. 5. The ProcessIdentify each problem/requirementFind modules that solve itEvaluate the quality & suitability of the solutionsChoose bet ween alternativesIf necessary, roll your own solution
  6. 6. Find Modules That Solve A Problem
  7. 7. Know the Top 20
  8. 8. /project/usage
  9. 9. /project/modules/categories
  10. 10. /project/modules
  11. 11. Search Issues Too!
  12. 12. Google It
  13. 13. Evaluate the Solutions
  14. 14. Well Maintained?Number of committers and commitsHow recently committed?How many bugs relative to total issues?Balance complexity of module against pure statsUsage numbers and patternsCode quality
  15. 15. Is It Well Maintained?
  16. 16. Which Version/Branch is Safe?
  17. 17. Check Usage Stats
  18. 18. Code QualityIs it neat and well-documented?Does it comply with Drupal coding standards?Is there a lot of commented-out code?
  19. 19. How Well Does It Work?Check those issue queuesTest driveDig for documentationGoogle it
  20. 20. Mine the Issue Queues
  21. 21. Google It
  22. 22. DocumentationLook for README.txt or INSTALL.txtFind ‘Configure’ and ‘Help’ links on module listLook for documentation link on d.o. project pageSearch or Groups.Drupal.orgRead the code Use hook_menu() to find configuration urls Look for internal documentation
  23. 23. Choosing Bet ween Alternatives
  24. 24.
  25. 25. Google It
  26. 26. Can you re-use this module?
  27. 27. Take Them For a Ride
  28. 28. PrototypeSet up a prototype siteTry out key modulesCreate a content type and key fieldsUse Devel Generate Make fields required Image min/max settings
  29. 29. That’s a Lot of Work!!
  30. 30. What if the Module Won’t Do?Too many bugsNo solid releaseBadly maintainedBadly writtenNot a good fit
  31. 31. BugsCould it be operator error?Did you try the dev version?Is there a patch?Can you write a patch?Make sure the patch is posted and marked RTBCLooking for co-maintainer?
  32. 32. Wrong FeaturesCan you adjust the requirements?Is there a feature request?Can you propose a patch?Can you use it as-is for now and customize in phase 2?
  33. 33. Rolling Your OwnGoogle. Again.Search d.o. sandbox projects.There may be issues with code snippets to get youstarted.Can you make it work with existing modules and some‘glue’, rather than a total custom solution?Can you phase a custom solution in?
  34. 34. Contributing Back CodeIs this a problem others will have?Is there an existing module that does somethingsimilar?Can you add a new feature to existing module?Can you write code general enough for wide use?
  35. 35. Contributing BackDescribe what you learnedAdd documentationTest and bump patchesAdd comparisons to
  36. 36. Validating Your DecisionsBe worried if: You jumped straight to custom code instead of looking for an existing solution You avoided a time-tested solution because it was missing one tiny feature You didn’t do your due diligence
  37. 37. Examples
  38. 38. Alternative Solutions for Address + Geolocation Solution #1 Solution #2Location Module Addressfield Module 1,620 KB 52 KB Geofield Module 32 KB Geocoder Module 20 KB GeoPHP Module + Library 110 KB + 193 KB
  39. 39. Statistics for Location
  40. 40. Statistics for Addressfield
  41. 41. Custom Code - Views Calc
  42. 42. Alternative Solutions for MultilingualContent Translation or Entity Translation?Contributing Back lingual-content-drupal-7 Description and comparison of multilingual options Several pages of links to resources uncovered during research
  43. 43. Which Version for Organic Groups?Version 71 or Version 7 . .2? Lack of documentation Problems in 71, Patches needed for 7 . .2Contributing Back:
  44. 44. Other ExamplesFeatures + Glue Views Gallery ModuleChoosing Bet ween Alternatives CCK vs Flexinode Image module vs Imagefield
  45. 45. Custom CodeViewsPanelsTokenDateCalendar
  46. 46. Questions??