Change record status: 
Project: 
Introduced in branch: 
8.x
Description: 

Node module was a required module before and always installed by Drupal core. This is no longer the case for Drupal 8.

A module or distribution directly relying on Node module functionality or directly calling Node API functions should perform one of the following changes to account for it:

  1. add a dependency on Node module in its .info.yml file:
    dependencies:
      - node
    
  2. make the Node module integration code optional:

    Drupal 7:

    $output = t('You can <a href="@content">add new content</a> for your website.', array('@content' => url('node/add')));
    

    Drupal 8:

    // Display a link to the create content page if Node module is enabled.
    if (module_exists('node')) {
      $output = t('Finally, you can <a href="@content">add new content</a> for your website.', array('@content' => url('node/add')));
    }
    
  3. rewrite the code so that the Node module integration functionality is executed as part of Node API hooks, instead of actively calling into Node API functions.

Due to #1541298: Remove Node module dependency from Testing profile, the node module is now also optional in tests that are using the testing profile (this is the default).

Additionally, the text and filter modules were made optional. When your module relies on APIs or field types provided by text.module or functions from filter.module, they need to add the relevant dependencies.

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: 
Not done