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 Drupal.org 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
5. The Process
Identify each problem/requirement
Find modules that solve it
Evaluate the quality & suitability of the solutions
Choose bet ween alternatives
If necessary, roll your own solution
14. Well Maintained?
Number of committers and commits
How recently committed?
How many bugs relative to total issues?
Balance complexity of module against pure stats
Usage numbers and patterns
Code quality
22. Documentation
Look for README.txt or INSTALL.txt
Find ‘Configure’ and ‘Help’ links on module list
Look for documentation link on d.o. project page
Search Drupal.org or Groups.Drupal.org
Read the code
Use hook_menu() to find configuration urls
Look for internal documentation
28. Prototype
Set up a prototype site
Try out key modules
Create a content type and key fields
Use Devel Generate
Make fields required
Image min/max settings
30. What if the Module Won’t Do?
Too many bugs
No solid release
Badly maintained
Badly written
Not a good fit
31. Bugs
Could 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 RTBC
Looking for co-maintainer?
32. Wrong Features
Can 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. Rolling Your Own
Google. Again.
Search d.o. sandbox projects.
There may be issues with code snippets to get you
started.
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. Contributing Back Code
Is this a problem others will have?
Is there an existing module that does something
similar?
Can you add a new feature to existing module?
Can you write code general enough for wide use?
35. Contributing Back
Describe what you learned
Add documentation
Test and bump patches
Add comparisons to drupal.org/node/266179
36. Validating Your Decisions
Be 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
42. Alternative Solutions for
Multilingual
Content Translation or Entity Translation?
Contributing Back
http://lullabot.com/articles/localized-and-multi-
lingual-content-drupal-7
Description and comparison of multilingual options
Several pages of links to resources uncovered during
research
43. Which Version for
Organic Groups?
Version 71 or Version 7
. .2?
Lack of documentation
Problems in 71, Patches needed for 7
. .2
Contributing Back:
lullabot.com/articles/organic-groups-drupal-7
drupalize.me/series/organic-groups-drupal-7
drupal.org/project/og_extras
44. Other Examples
Features + Glue
Views Gallery Module
Choosing Bet ween Alternatives
CCK vs Flexinode
Image module vs Imagefield