Change record status: 
Project: 
Introduced in branch: 
8.3.x
Introduced in version: 
8.3.0
Description: 

For historical reasons, the "link manager" services (which handle relation URIs, type URIs etc) for RESTful responses live in the rest module. But, they actually belong in the hal module, because it is functionality specific to the HAL module. (The HAL module has normalizers that use this link manager, and they're the only code that use it.)

The https://www.drupal.org/project/default_content uses the HAL normalization (and the HAL+JSON format) and until this change, it required you to also install the REST module. For no reason other than its normalizers would otherwise fail. That's no longer a problem now!

The rest module provides a default/canonical "RESTful web services" implementation, that exposes e.g. entities via REST. But there are many possible implementations: JSON API (which has a spec too: http://jsonapi.org) is a good example, but also use more specific, non-standardized cases like "Default Content".

Backwards compatibility implications

Services: no code changes necessary

All existing services continue to function: the rest.link_manager, rest.link_manager.type and rest.link_manager.relation services just point to the equivalent services in the hal module. So, all existing code continues to function.

Of course, you're encouraged to upgrade. It may allow your module to no longer have to depend on the rest module!

rest.settings.link_domain configuration: change necessary

Any code that depends on the link_domain key/value in the rest.settings configuration will need to be updated to read that from hal.settings instead. Your current value for that setting is migrated automatically by the update path.

hal module no longer depends on rest module

Finally, this also enabled an important bugfix: the hal module no longer depends on the rest module, as #2473749: Remove rest as a dependency of hal has been wanting to fix for almost two years now!

If you had tests or modules relying on the implicit dependency of the hal module depending on the rest module and hence automatically enabling it, you'll need to add an explicit dependency on the rest module.

Impacts: 
Module developers
Updates Done (doc team, etc.)
Online documentation: 
Not done
Theming guide: 
Not done
Module developer documentation: 
Not done
Examples project: 
Not done
Coder Review: 
Not done
Coder Upgrade: 
Not done
Other: 
Other updates done