Current process after one for example has enabled say devel and devel_generate:

  1. Go to /admin/modules
  2. Uncheck "Devel Generate" ("Devel" is locked)
  3. Hit "Save configuration" -> page refreshes, now "Devel" is unlocked
  4. Uncheck "Devel"
  5. Hit "Save configuration" -> page refreshes, both "Devel Generate" and "Devel" are disabled
  6. Go to /admin/modules/uninstall
  7. Check "Devel Generate" ("Devel" is locked)
  8. Hit "Uninstall" -> you get redirected to the confirmation page
  9. Hit "Uninstall" again -> you get redirected back to /admin/modules/uninstall, now "Devel" is unlocked
  10. Check "Devel"
  11. Hit "Uninstall" -> you get redirected to the confirmation page
  12. Hit "Uninstall" again -> you get redirected back to /admin/modules/uninstall

OMG, finally!!! ...and this is only with one level of dependency. Imagine if you had a devel_generate_extras module installed that depended on devel_generate and you wanted to disable devel. That would make devel_generate be locked until devel_generate_extras was disabled/uninstalled and then devel would still be locked until devel_generate was disabled/uninstalled. O-M-G!!!

How I envision this to work ideally:

  1. Go to /admin/modules -> "Devel" is not locked
  2. Uncheck "Devel" -> dialog pops up explaining that this module is required by "Devel Generate" (and any other modules down the chain) and that means that these will need to be disabled too.
  3. The dialog also offers a "Also uninstall these modules after disabling them" checkbox that is unchecked by default
  4. Confirm -> dialog closes and there are indicators (red status text, asterisks, what-have-you) next to all modules queued for disabling.
  5. Hit "Save configuration" -> progress bar shows the progress of disabling and uninstalling all queued modules. -> you get redirected to /admin/modules/uninstall that has a report of which modules were disabled and which were uninstalled, giving you the option to uninstall any that are just disabled.

Compare 5 steps (no matter the complexity of dependencies) vs. at least 12 steps with one level of dependencies. Now, that's something I'd like so see fixed in the next minor release.

GitHub Issue #: 
2532