Problem/Motivation
Discovered while working on #3113992: The 'Update' page has no idea that some updates are incompatible
Drupal 8 no longer has the notion of "disabled modules". Either they're installed and enabled, or completely uninstalled. There's no such thing as an installed + disabled module. For example, the 'Available updates' listing report (at /admin/reports/updates) looks like this:

However, the 'Update' page at /admin/reports/updates/update was never modified to account for this change in the rest of core's extension handling. If you enable the "[x] Check for updates of uninstalled modules and themes" checkbox at /admin/reports/updates/settings and then visit the 'Update' form you still see "Disabled"
Proposed resolution
- Modify the 'Update' form UI to match the 'Available updates' report to display about "Installed" and "Uninstalled" instead of "Enabled" and "Disabled".
- Change the table heading from "Installed version" to "Site version".
Remaining tasks
- Reviews
- RTBC
- Commit
User interface changes
For patch #36
Before - installed only

Before - with uninstalled

After - installed only

After - with uninstalled

API changes
None.
Data model changes
None.
Release notes snippet
TBD, probably not.
| Comment | File | Size | Author |
|---|---|---|---|
| #37 | 3117553-37.patch | 8.05 KB | quietone |
| #37 | interdiff-36-37.txt | 836 bytes | quietone |
| #36 | 3117553-36.patch | 8.36 KB | quietone |
| #36 | diff-33-36.txt | 3.9 KB | quietone |
| #36 | After-with-uninstalled.png | 75.35 KB | quietone |
Comments
Comment #2
dwwAdding screenshots showing the problem, and how it looks on available updates report for comparison.
Comment #3
xjmSo long as we just change the string, just changing "Disabled" to "Uninstalled" or "Not installed" seems like a good idea (and TBH I'm not sure how we missed it during the D8 development cycle).
Comment #4
dwwRe: #3: 👍
I think cuz most core devs completely forget this page exists. They use composer, drush, and/or CI, and never use this UI on any sites. Perhaps they utilize the killswitch to completely disable it. Out of sight out of mind...
Yeah, I think a string change is most of what we need. The scope creeper in me would want to change variable names and other internal code to match. E.g. stuff like this:
Would that be viable, while we're at it?
Thanks,
-Derek
Comment #5
xjmWe'd also have to change "Installed version" to "Local version" or something. Probably worth a UX meeting discussion.
I'm terrified of changing the structured array keys of the project data. Probably could make that a (scarier) followup.
Comment #6
dwwThe lines I pasted are completely isolated to
UpdateManagerUpdateForm::buildForm(). They're not the ArrayPI stuff passed around everywhere. I agree that'd be way more scary to fix as part of this.Agreed on UX meeting discussion. Tagging.
Thanks,
-Derek
Comment #7
xjmString changes are also backportable during beta, but form structure changes aren't. So let's keep it to strings.
Comment #8
dwwRe: #7: Okay, makes sense.
Opened #3121870: Change implementation details of UpdateManagerUpdateForm to use install/uninstall to cleanup the resulting technical debt (some day).
Thanks
-Derek
Comment #9
dwwp.s. Based on my newfound understanding of the desired usage of the version selector, I believe the goal would be to get this done in 8.9.x before beta1, right? As a string change, it's not eligible for 8.8.x patch-level backport. But we could still fix this before 8.9.0-beta1, right?
Comment #10
dwwThis needs new screenshots, but I need lunch more. ;) Tagging for now.
Comment #11
dwwNow with 100% less syntax errors. ;) And an updated screenshot.
Comment #12
dwwp.s. Re:
Also because I forgot this whole feature is off by default, unless you opt-in at the 'Settings' tab to enable:
[x] Check for updates of uninstalled modules and themes
Comment #13
dwwI don't want to try to add test coverage for this until #3113992: The 'Update' page has no idea that some updates are incompatible lands so we have a test class to extend.
Comment #14
dwwComment #15
dwwOnce #3113992: The 'Update' page has no idea that some updates are incompatible lands, here's test coverage. I keep making life easier for #3117229: Expand test coverage of Drupal\update\Form\UpdateManagerUpdate ;)
Comment #16
dwwForgot to unblock this when #3113992: The 'Update' page has no idea that some updates are incompatible landed. #15 still applies cleanly, queuing for testing.
Comment #19
webchickSummary of the discussion at #3129683: Drupal Usability Meeting 2020-04-28:
We went back and forth a bit on this labeling ("Your" version? — too informal "Current" version? — mistaken with "current" version meaning "the most recent one" like it does in update status XML) and eventually came 'round to suggesting "Site version" for both.
Comment #20
dww@webchick re: #19: Excellent, thanks! I agree 'Local version' is weird. Happy to go with 'Site version'.
Can we untag this for 'Needs usability review' then?
Anything else, or is this RTBC?
Thanks again!
-Derek
Comment #22
dwwYeah, since this was discussed at #3129683: Drupal Usability Meeting 2020-04-28 I'm un-tagging for a UX review (which is complete).
I can't self-RTBC. Anyone else willing to do it?
Thanks!
-Derek
Comment #23
dwwTrivial re-roll after #3121020: Move Update Manager XML test fixtures into a fixtures/release-history directory landed.
Comment #24
dqdAgree with "site version". +1 for the finding and fixing this. Weird left over! Patch code seems to have no nitpicking or coding standart issues etc. Applying patch and runnig thru the steps to reproduce the original issue do not show any new issues or flaws with it. Changes apply like expected. Since this patch does not provide any bigger functionality changes or risky code injections I consider this RTBC from here.
Patch #23 before / after screenshots uploaded...
Comment #25
xjm+1 for "Site version"; that's great.
I wonder though, maybe a little clobbering would be OK? Like consistency is also helpful for the user trying to understand the form, and "Site version" would make sense for the other tables too.
Comment #31
smustgrave commentedThis issue is being reviewed by the kind folks in Slack, #needs-review-queue-initiative. We are working to keep the size of Needs Review queue [2700+ issues] to around 400 (1 month or less), following Review a patch or merge request as a guide.
+1 for this idea and still applies to D10 where disabled is used.
Tagged for reroll. as there are some build errors in #23
Also agree with #25 that consistency would be nice so if "Site version" can be used in the other spots too.
Comment #32
xjmThanks for rediscovering this issue!
IMO this is a usability bug, so recategorizing.
Comment #33
ameymudras commentedTrying to fix errors in #23
Comment #36
quietone commentedI rerolled the patch and there was no issues with that task. The test failure was caused by the test not setting up the new xml file to be returned.
It seemed odd to me to see 'Enabled' on the page so I expanded the scope to fix Enabled/Disabled on this single page. It seems sensible to me and was easier to do this in one issue instead of two. There were minimal changes for that in both the code and the test.
Updating the IS, and addingh before/after screenshots.
Comment #37
quietone commentedThis patch addresses #25, removing the changes.
Comment #38
quietone commentedComment #39
smustgrave commentedVerified the test change by applying patch #37
Install some contrib module
Go to en/admin/reports/updates/update
Verified text change.
Comment #41
quietone commentedAn unrelated random failure, #3380433: [random test failure] CronRunTest::testAutomatedCron. I am restoring RTBC.
Comment #42
lauriiiRan the failing test locally just to be sure.
Committed 06b7f5c and pushed to 11.x. Thanks!
Comment #44
lauriii