Problem/Motivation
THis issue is to deprecate HAL module as accepted in #3049856: [policy] Mark HAL module as deprecated in D9 so it can be removed in D10. I created this child issue of #3049857: Remove HAL module from core and create a contrib project for it because we agreed we should deprecate, then remove after that.
Currently postponed on:
#3263654: Move all HAL tests to the module in preparation of removal in D10
#3265546: Drupal\KernelTests\Config\DefaultConfigTest throws deprecation notice for deprecated Core modules/themes which have config
Steps to reproduce
n.a.
Proposed resolution
Mark module as deprecated.
Remaining tasks
Move tests
Migration - N/A
Update - N/A
Database dumps - anything to do here? Database dump/fixture changes _are_ needed, but (I think by default) only in the actual removal issue. That's already in the MR over there #3049857: Remove HAL module from core and create a contrib project for it.
Contrib project HAL - created
- Ensure it can run tests
- Create a stable release
- Check it works and can be installed with composer
Currently postponed on #3264633-18: Remove \Drupal\layout_builder\QuickEditIntegration and refactor it so that quickedit contrib provides the integration with layout builder
Create a followup, remove HAL from core, in the next major release #3049857: Remove HAL module from core and create a contrib project for it
Deprecate HAL, adding @legacy to tests. Happening in this very issue.
User interface changes
n.a.
API changes
HAL is removed?
Data model changes
n.a.
Release notes snippet
HAL was introduced during the development of D8. However, it never got much traction in the decoupled scene due to the vague specification and the particular quirks of the Drupal implementation. As a result few sites are using HAL in production. This speaks not to its usefulness, but to its worthiness to be shipped with core.
Additionally, JSON:API in core offers a superset of features over HAL. Starting Drupal 9.4 HAL is deprecated and the module is moved to contrib at https://drupal.org/project/hal. If you need the functionality provided bij HAL, starting from Drupal 10 you need to include the contrib module.
Issue fork drupal-3263618
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:
Comments
Comment #3
bbralaComment #5
bbralaComment #6
bbralaComment #7
spokje- Added draft CR
- Added lifecycle_link entry linking to above CR
Note: The link to the contributed HAL module (https://www.drupal.org/project/hal) currently returns a 403.
Also unsure if it's supposed to link to a CR, I see that the Tracker module opted for a link to https://www.drupal.org/about/core/policies/core-change-policies/deprecated-and-obsolete-modules-and-themes
Comment #8
larowlanI was of the impression that the lifecycle links where to go to handbook pages, not CRs
Check the forum and tracker deprecation issues to see the handbook page they're using in the lifecycle link
Comment #9
spokjeIf that is indeed the official policy, I'll happily comply.
And in the process, that would answer #3261679-7: Deprecate tracker module in Drupal 10.1.x and #3261452-14: [11.x] Remove tracker module from core.
So if Somebody With The Power could confirm, that would be a lot of birds with a pebble kinda thing.
Comment #10
larowlanYeah let's use https://www.drupal.org/about/core/policies/core-change-policies/deprecat...
I'll fix up the forum one - I added a new one because I couldn't find an existing one
Comment #11
larowlanAnd yeh, I think we should link to the node/{nid} instead of the path alias just to be safe
Comment #12
bbralaAdd larowlan to credit for help with doc page, review and placement.
Comment #13
spokjePostponing on #3263654: Move all HAL tests to the module in preparation of removal in D10
Comment #14
spokjeComment #15
spokjeBlocker #3263654: Move all HAL tests to the module in preparation of removal in D10 is in, un-postponing.
Comment #16
spokje@bbrala, @larowlan: This would be an excellent time to get https://www.drupal.org/project/hal filled with the current core
halmodule.Comment #17
spokjeThis going to get in against
10.0.x-devfirst, and insta-backported to9.4.x-devlike any other issue in the current queue.Comment #19
spokjeThis is going to get in against
10.0.x-devfirst, and insta-backported to9.4.x-devlike any other issue in the current queue.Comment #20
spokjeComment #21
spokjeAs can be seen in https://www.drupal.org/pift-ci-job/2323653 the tests in
core/tests/Drupal/KernelTests/Config/DefaultConfigTest.phptrigger a deprecation notice whenever a Core module with config is deprecated.Postponing on the newly created #3265546: Drupal\KernelTests\Config\DefaultConfigTest throws deprecation notice for deprecated Core modules/themes which have config where we're going to solve this.
Comment #22
larowlanAdded you to the contrib project @Spokje so we're not a blocker
If you beat us to it, please use a subtree split so we keep the history
Comment #23
spokje@larowlan Erm....thanks? As I've proven many times before (especially on these deprecate/remove Core module issues) I'm quite capable of creating my own blockers ;)
If either you or @bbrala can do this, that would be great. I'll see what I can do/understand of all this git-wizardy and contrib module creation shizzle if this becomes the only blocker (which would be around
63.0.x-devby the looks of it...)Comment #24
bbralaNo worries, i'll make the time to do the subtree split to the hal module. But i think i need to wait until this is green? Or is the failure fully outside hal and shouldn't we worry about it (in regards to the subtree split)
Comment #25
spokjeThanks @bbrala.
The failure is fully outside hal (and about deprecation, which isn't happening in the Contrib hal module).
So: Split the subtree, you can!
Comment #26
spokje@bbrala and @larowlan Just discovered #3264633-18: Remove \Drupal\layout_builder\QuickEditIntegration and refactor it so that quickedit contrib provides the integration with layout builder which means it seems smarter to wait for that issue to land before contribifying to prevent double work (and Yet Even More Admin with double issues in Core and Contrib).
Comment #27
bbralaI just did a subtree split for hal (awww xD), but can always just force push a new split since there was no real work done yet.
Comment #28
bbralaWell, tests work in contrib (although, 217 coding standard issues ;p).
Comment #29
spokjeComment #30
quietone commentedNo longer postponed, #3263654: Move all HAL tests to the module in preparation of removal in D10 has been committed.
Setting to NW because of a failing test. I notice the lifecycle_link is https://www.drupal.org/node/3223395#s-hal should it not be the CR for this issue?
I'm adding to the remaining tasks with some of what is under discussion in #3266219: [policy, no patch] Document the approach and issue scope for removing modules from core just to give them a test and see how it goes.
Comment #31
quietone commentedForgot to change the title.
Comment #32
spokjeThanks @quietone.
Sadly putting back to postponed on #3265546: Drupal\KernelTests\Config\DefaultConfigTest throws deprecation notice for deprecated Core modules/themes which have config.4
We decided to go to the d.o. page here: #3263618-10: Deprecate HAL module
Comment #33
spokjeComment #34
spokjeWent through the remaining tasks (thanks @quietone) and updated them
Comment #35
spokjeComment #36
spokjeSorry for the noise, updated the IS again and updated the Currently postponed on: section.
Comment #37
catchLet's see.
Comment #38
spokjeTestBot green.
Tagging with
9.4.0 release notes(just because I'm an optimist).This looks like (well...actually is) a _huge_ MR, but it all boils down to:
lifecycle: deprecatedand accompanyinglifecycle_linktocore/modules/hal/hal.info.yml.halmodule with@group legacyto make PHPStan happy.Comment #39
daffie commentedBoth Mr's look good. Just a single question.
Comment #40
catchObsolete is only for when a module is gutted and needs to stay in core so it can be uninstalled. Examples would be entity reference. A non-standard example is simpletest where we provided a contrib version but also added an update to uninstall it in core (since it's a dev dependency and should never have been installed on anyone's live site anyway). So it exists purely because you can't uninstall and remove a module in a single release, you have to remove the .info.yml only once you know that the uninstall has run on every possible site.
For modules we're moving to contrib, we can't/won't uninstall the module for people automatically. They either need to uninstall it themselves before updating to 10.0.x, or install the contrib module, so 'deprecated' is correct, even right up until removal. If someone updates without taking any action, they'll get a big error message, but that error message is what we need for that case.
Comment #41
daffie commented@catch Thank you for the explanation.
All code changes on both MR's look good to me.
For me it is RTBC.
Bye bye HAL module.
Comment #42
spokjeThanks @daffie for the review and @catch for the reply. Resolved thread.
Comment #43
spokjeBTW:
MR!1799against9.4.xis outdated, or at least not correct IMHO.Although technically that branch wouldn't need to tag all the tests in the
halmodule with@group legacy(since no PHPStan there), I think they still should be marked as such.A straight backport of
MR!1853would apply and do the above.Comment #44
spokjeUnwanted (Dear Lord, _VERY_ unwanted) Status change, back to RTBC
Comment #45
catchThis looks great. I'm planning to commit it as soon as there's a stable release on https://www.drupal.org/project/hal
Comment #46
bbralaI promised to roll one tonight ;)
Comment #47
bbralaAs promised: drupal/hal@1.0.0.
What i've done:
Think that is all I needed to do.
Comment #49
larowlanCommitted f26bc10 and pushed to 9.4.x. Thanks!
Published changed record