Problem/Motivation
In D10.0.0 we will have the situation that people have deprecated core modules?themes in D9.x enabled and those core modules are now removed in D10.0.0.
Whenever this happens, currently those missing modules/themes are detected in update.php, but these aren't a special case.
They are handled in the same way a missing contrib module/theme would and the link given (https://www.drupal.org/docs/8/update/troubleshooting-database-updates) in the error message doesn't mention deleted core modules.
Let's make a dedicated error message with some more specific help text/links.
Steps to reproduce
Proposed resolution
Read the results of the Usability review in #9 and #10
Remaining tasks
Comply with the usability review
User interface changes
Screenshots are for the MR at https://www.drupal.org/project/drupal/issues/3294914#mr2489-note116283
Before
After
API changes
Data model changes
Release notes snippet
Comment | File | Size | Author |
---|---|---|---|
#17 | After_02.png | 53.04 KB | quietone |
#16 | After_01.png | 52.64 KB | quietone |
#15 | After.png | 41.17 KB | quietone |
#15 | Before.png | 44.86 KB | quietone |
#3 | new_situation.png | 32.12 KB | Spokje |
Issue fork drupal-3294914
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
- 3294914-create-dedicated-section changes, plain diff MR !2489
Comments
Comment #3
SpokjeComment #4
SpokjeComment #5
dwwThanks for opening this and working on it! Very quick skims seems pretty reasonable. A few initial thoughts:
I’ll try to make time for a more thorough review “soon”. 😅
Thanks again!
Comment #6
SpokjeThanks @dww, I was pondering if it would need an UX review.
Just dropped a review request in the #UX Slack channel.
Comment #7
Spokje(Most) probably needs a release manager review as well?
Comment #8
SpokjeRemoving
Needs release manager review
-tag after review from catch.Comment #9
benjifisherUsability review
We discussed this issue at #3296085: Drupal Usability Meeting 2022-07-22. That issue will have a link to a recording of the meeting.
For the record, the attendees at the usability meeting were @rkoller, @shaal, @worldlinemine, and me.
Keep in mind the audience for this message. It is a site owner who has updated the code, probably does not have a dev version of the site, and has not read the documentation about preparing to update to Drupal 10. We should try to give enough information on this page to fix the site, without sending this user to another documentation page.
Another advantage to the help text on the site is that we can translate it. Most of our documentation (including Deprecated and obsolete modules and themes) is not translated.
Every module being removed from core in Drupal 10 has a contrib version, so I think we can give links to the project pages. Instead of
aggregator
(machine name) make it<a href="https://www.drupal.org/project/aggregator">Aggregator</a>
(label linked to project page).Let's also avoid referring to "core.extension configuration". The target audience understands that these modules are enabled on the site.
@rkoller has the draft text we were working with at the meeting, and we may have another look at the next meeting, but I think it was something like this:
The project page for each module will have links to the tarballs and instructions for using Composer. (Yes, we still support installing Drupal from a tarball.)
The current text on the page we are linking to refers to deprecated modules in Drupal 9. I hope we update that text before 10.0.0 is released so that it will make sense for a site that is already using (or trying to upgrade to) Drupal 10.
I understand that, when Drupal 11 is released, it may no longer be true that all modules removed from core will have contrib versions. So there is an argument for just linking to the documentation page, which may suggest other options, and not linking to the project pages, which may not exist. But that is a consideration for the release manager. The UX recommendation for Drupal 10 is to give a direct link to the project page(s).
Comment #10
rkollerWe have revisited this issue at #3300912: Drupal Usability Meeting 2022-08-05. It will have a link to the recording and transcription of the meeting. For the record the attendees at the meeting were @aaronmchale, @benjifisher, @shaal, @simohell, @worldlinemine, and me. The recommendation we've agreed on is as follows:
One module is missing:
More than one module is missing:
With the audience in mind (see #9) we wanted to provide clear actionable steps within the first sentence that are necessary to complete the update. It also has to be noted that we wanted to be consistent with the terminology used on
/admin/modules
and/admin/appearance
by usingadd
andinstall
as verbs.We've then agreed that adding links to the corresponding contrib module page for each module listed would make it more convenient enabling the user directly solving the "missing modules in the file system" issue. And in case the user is still interested in background information we've made the explanation about the "removal from file system but still in
core.extension
config" detail a little bit less technical. And in case the user is still in need of more in-depth information and or help then there is still the link to the wiki page in the last sentence.I leave the status to needs work and remove the needs usability review based on #9 and this comment.
Comment #11
xjmComment #13
quietone CreditAttribution: quietone at PreviousNext commentedI updated the const array to include the module name and updated the text for the first sentence in the resolution #10.
I don't know how to add a sentence after the list of items.
I did not that this issue is not covering themes and that it is not possible to test both removed or missing themes and modules at the same time.
Should we add themes here? I think we should because it is rather straight forward. The second item about testing will require refactoring which be noisy and possibly better in a followup. We can do manual testing to confirm that the changes work with a variety of core and contrib modules and themes removed and missing.
Comment #14
quietone CreditAttribution: quietone at PreviousNext commentedComment #15
quietone CreditAttribution: quietone at PreviousNext commentedUpdated the issue Summary.
I think this is a good first step and is ready for review, assuming tests pass.
Comment #16
quietone CreditAttribution: quietone at PreviousNext commentedI've added the sentence
This module is installed on your site but is no longer provided by Core.
before the list instead of after because it avoids changes to the function$create_extension_incompatibility_list
which is used for other requirements checks as well.Added new screenshot.
Comment #17
quietone CreditAttribution: quietone at PreviousNext commented1 .Fixed the typos.
2 Moved the
This module is installed on your site but is no longer provided by Core.
in accordance with the Usability review. This required changes to the function $create_extension_incompatibility_list. I didn't run all the test so waiting to see if that broke something else.3. Add another test case, for 'core and contrib theme'
I do see that 'core' is not capitalized in 'Removed core module' or 'Removed core theme' but is in the additional sentence "This theme is installed on your site but is no longer provided by Core." Is that correct?
Comment #18
SpokjeComment #19
SpokjeThanks @quietone for picking this one up, I totally forgot about it.
I think this "only" needs tests for multiple core modules/themes being deleted and making sure the correct message(s) appear for those cases.
Comment #20
quietone CreditAttribution: quietone at PreviousNext commentedI'll take a look today.
Comment #21
quietone CreditAttribution: quietone at PreviousNext commentedThe latest changes allow for testing multiple extensions from core and contrib, in any combination. I changed the data provider to what I thought was a easier model to understand and because of the changes trickled through the test function.
Comment #22
SpokjeNice! Thanks @quietone.
Can't RTBC it myself any more, but I think it's safe to put it on NR now?
Comment #23
quietone CreditAttribution: quietone at PreviousNext commented@Spokje, yes, thanks. Do you time to do a review?
And un-assigning myself.
Comment #24
SpokjeWill try to make time this (my) afternoon, which is in about 8 hours.
If anybody else wants to take a stab, as said, I can't RTBC myself, by all means: Feel free to do so :)
Comment #25
SpokjeDid a review and really liked it, excellent work there @quietone!
The only reason I didn't RTBC is because I worked on it myself.
Comment #26
bbralaI've reviewed this issue.
This is a great addition, and will help loads. We do need to remember to add to the removal process that the removed modules need to be added to the arrays though. This is manual, therfor needs to be documented. I'will create a follow up. THis follow up shouldnt block this issue imo.
Comment #27
bbralaMissing ckeditor4, spokje is on it.
Comment #28
SpokjeAdded, rebased, and am off it :)
Comment #29
bbralaChecked changes, looking good. Yay. Also got paranoid and checked the new system name.
Comment #30
SpokjeAdded theme classy after #3110137: Remove Classy from core landed.
Comment #31
quietone CreditAttribution: quietone at PreviousNext commentedNeeds review for the latest change.
Comment #32
bbralaI think @spokje is right. Wouldn't this change expose the constants to developers. While keeping it in system.install scope it so it cannot be used in the wild? Before you know it contrib might start depending on that constant. Not sure we'd want that.
Comment #33
bbralaComment #34
Spokje- Rebased
- Reverted move of constants into API-territory (again, with pain in my heart...)
- Added theme stable after #3309176: Remove Stable theme from Drupal 10 landed.
(EDIT: Let's see when GitLab picks up on the above commit)
Comment #35
bbralaChanges look great again, ping pong! Thanks for adding stable. RTBC again.
I really feel keeping them coping in the install is better, assuming they won't bleed into normal operations, which i don't think they will.
Comment #36
longwaveAdded some feedback on the MR.
Comment #37
quietone CreditAttribution: quietone at PreviousNext commentedBack to NR
Comment #38
longwaveI still think some of the translatable strings are problematic as you cannot pass variable strings to t(); see https://www.drupal.org/docs/8/api/translation-api/overview#s-variables-i...
Comment #39
SpokjeTried to address all translatability worries.
Comment #40
bbralaOk lets try again.
Drupal\Core\Extension\Exception\UnknownExtensionException: The module aggregator does not exist. in Drupal\Core\Extension\ExtensionList->getPathname() (line 522 of /home/localcopy/drupal-core-9-5-x/web/core/lib/Drupal/Core/Extension/ExtensionList.php).
I think the 500 (WSOD) when trying to install another module is not really a problem, although it would be nice to have a more sane error message in your screen, this is not really in scope of this issue. THe message in the log is pretty clear, also the status page helps the user to get out of the problem they have. I'd say, its fine like this.
Also seems all threads were resolved in Gitlab regarding using translateable markup classes.
RTBC LGTM OKTHXBYE ;)
Comment #41
SpokjeUpdated IS and title to also mention themes.
Comment #42
longwaveTwo questions on the MR, but not enough to kick it back from RTBC; let's see what other committers think.
Also this has new strings, but it would be helpful to get it into 10.0.0 for upgraders; to me it is OK to commit there.
Comment #43
SpokjeResolved the type hinting issue.
Comment #44
benjifisherI answered one of @longwave's questions on the MR, and @spokje added one commit in response to the other.
I am setting the status back to NR for a review of the additional commit.
Comment #45
SpokjeThanks @benjifisher for the words of wisdom (Let it be 4x)
Comment #46
bbralaI've checked the changed code.
Think combined with the UX OK we are there. Thanks for the keen eye @longwave ;)
Comment #47
Gábor HojtsyAs a product manager, I reviewed the code and the comments above, and would like to thank all of you for the very thorough work on this one. I think it looks good, and I agree this is important to do. I don't have any concerns witth the way its implemented, the global constants in system.install are fine, but I would leave that to other committers to confirm.
Comment #48
Gábor HojtsyComment #49
quietone CreditAttribution: quietone at PreviousNext commentedComment #51
catchOK this is a good improvement and worth trying to get in before release and people actually hit the problem.
We're probably going to need to leave this in more or less permanently since we'll also be deprecating modules in 10.x for removal in Drupal 11. Not sure if the list really needs to be in constants vs. inline in system_requirements(), but it does make it easier to scan the list.
Committed/pushed to 10.1.x and cherry-picked to 10.0.x, thanks!