Currently Drupal does not support partial dependency information. That is: Module A depends on Module B to work. This is insufficient and necessitates userland solutions (views recommending advanced_help via a drupal_set_message, og recommending og_views via bold text on the module page).
The bulk of participants in this thread agree that including this extra metadata would be useful, the main debate forms around the keywords used. The current proposal is suggests and enhances) is backed by the debian package keywords, and the following real world examples (the examples also demonstrate that relationships are NOT bi-directional):
The Debian package keywords are: depends, recommends, suggests, enhances, breaks, conflicts. If we adopt suggests and enhances then:
- "recommends" is just a weak "dependency" and will confuse users.
- "enhanced by" is covered adequately by suggests.
- "depends" is covered already.
- "breaks"/"conflicts" are problems for another issue.
Real world examples:
views and advanced_help:
- CORRECT: views suggests advanced_help.
- INCORRECT (advanced_help shouldn't have to know this): advanced_help enhances views.
regcode and role_expire:
- CORRECT: regcode suggests role_expire, its functionality is enhanced through a series of if(module_exists('role_expire')) checks. This relationship is important.
- INCORRECT (this relationship is meaningless): role_expire enhances regcode.
path and pathauto:
- INCORRECT (path won't know about pathauto): path is enhanced by pathauto.
- CORRECT: pathauto enhances path.
- CORRECT: pathauto suggests transliteration.
views_bulk_operations and views:
- INCORRECT (views shouldn't have to know about vbo): views is enhanced by views_bulk_operations.
- CORRECT: views_bulk_operations enhances views.
Adding two new supported keywords (suggests and enhances) to module.info files, with the following definitions:
- module_a suggests module_b: module_a's functionality is significantly improved with module_b is enabled. This tag is recommended only when module_a has "module_exists('module_b')" in its code.
- module_a enhances module_b: module_a was written specifically to extend the functionality of module_b.
- Write a patch implementing this behaviour for D8 (see #68).
- Backport this functionality into http://drupal.org/project/module_supports
- Write patches for the project module so this information can be displayed on project pages
User interface changes
The modules page will display suggests and enhances besides the existing dependencies.
The following variables become valid instructions in a .info file:
suggests = ...
enhances = ...
Original report by Myke
I am proposing an addition to the .info module files for Drupal:
Some modules have optional dependencies that enhance the function of the module. It would be very nice if Drupal were to report these, through a field such as:
enhanced_by = "cck views"
In a similar fashion to how the dependencies are shown.
This would allow Drupal to notify administrators when a module can further be enhanced by installing a module they may not already have.
1. STOP DEBATING THE KEYWORD NAMES IF YOU HAVEN'T READ THE WHOLE ISSUE - YOU ARE REHASHING LINES OF ARGUMENT THAT HAVE ALREADY BEEN DISMISSED. If you have a suggestion for different keywords, then provide pros and cons and real world examples.
2. STOP TALKING ABOUT BREAKS/CONFLICTS. Yes, this is needed, but let's address that in another issue: .