diff --git a/core/config/schema/core.data_types.schema.yml b/core/config/schema/core.data_types.schema.yml
index 3615197..3869a30 100644
--- a/core/config/schema/core.data_types.schema.yml
+++ b/core/config/schema/core.data_types.schema.yml
@@ -364,7 +364,7 @@ field_config_base:
       label: 'Translatable'
     default_value:
       type: field.[%parent.field_type].value
-    default_value_function:
+    default_value_callback:
       type: string
       label: 'Default value function'
     settings:
diff --git a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
index 7eb0d8a..d621897 100644
--- a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
+++ b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
@@ -397,7 +397,7 @@ public function getDefaultValue(ContentEntityInterface $entity) {
    *
    * If set, the callback overrides any set default value.
    *
-   * @param callable|null $callback
+   * @param string|null $callback
    *   The callback to invoke for getting the default value (pass NULL to unset
    *   a previously set callback). The callback will be invoked with the
    *   following arguments:
@@ -411,6 +411,9 @@ public function getDefaultValue(ContentEntityInterface $entity) {
    * @return $this
    */
   public function setDefaultValueCallback($callback) {
+    if (!is_string($callback)) {
+      throw new \InvalidArgumentException('Default value callback must be a string, like "function_name" or "ClassName::methodName"');
+    }
     $this->definition['default_value_callback'] = $callback;
     return $this;
   }
diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php
index 69473f4..2548085 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php
@@ -135,7 +135,7 @@
    * hook_field_schema(). If the number of items exceeds the cardinality of the
    * field, extraneous items will be ignored.
    *
-   * This property is overlooked if the $default_value_function is non-empty.
+   * This property is overlooked if the $default_value_callback is non-empty.
    *
    * Example for a integer field:
    * @code
@@ -165,7 +165,7 @@
    *
    * @var string
    */
-  public $default_value_function = '';
+  public $default_value_callback = '';
 
   /**
    * The field storage object.
@@ -334,7 +334,7 @@ public function isRequired() {
    */
   public function getDefaultValue(ContentEntityInterface $entity) {
     // Allow custom default values function.
-    if ($function = $this->default_value_function) {
+    if ($function = $this->default_value_callback) {
       $value = call_user_func($function, $entity, $this);
     }
     else {
diff --git a/core/lib/Drupal/Core/Field/FieldItemList.php b/core/lib/Drupal/Core/Field/FieldItemList.php
index f6ae7d5..393b827 100644
--- a/core/lib/Drupal/Core/Field/FieldItemList.php
+++ b/core/lib/Drupal/Core/Field/FieldItemList.php
@@ -318,7 +318,7 @@ public function getConstraints() {
    * {@inheritdoc}
    */
   public function defaultValuesForm(array &$form, FormStateInterface $form_state) {
-    if (empty($this->getFieldDefinition()->default_value_function)) {
+    if (empty($this->getFieldDefinition()->default_value_callback)) {
       // Place the input in a separate place in the submitted values tree.
       $widget = $this->defaultValueWidget($form_state);
 
diff --git a/core/modules/book/config/install/core.base_field_override.node.book.promote.yml b/core/modules/book/config/install/core.base_field_override.node.book.promote.yml
index 96ce2f6..609d391 100644
--- a/core/modules/book/config/install/core.base_field_override.node.book.promote.yml
+++ b/core/modules/book/config/install/core.base_field_override.node.book.promote.yml
@@ -15,6 +15,6 @@ translatable: true
 default_value:
   -
     value: 0
-default_value_function: ''
+default_value_callback: ''
 settings: {  }
 field_type: boolean
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
index aa03882..b2f2c11 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php
@@ -32,7 +32,7 @@ class DateTimeFieldItemList extends FieldItemList {
    * {@inheritdoc}
    */
   public function defaultValuesForm(array &$form, FormStateInterface $form_state) {
-    if (empty($this->getFieldDefinition()->default_value_function)) {
+    if (empty($this->getFieldDefinition()->default_value_callback)) {
       $default_value = $this->getFieldDefinition()->default_value;
 
       $element = array(
diff --git a/core/modules/field/src/Tests/FieldAttachStorageTest.php b/core/modules/field/src/Tests/FieldAttachStorageTest.php
index 205dd20..e6c578f 100644
--- a/core/modules/field/src/Tests/FieldAttachStorageTest.php
+++ b/core/modules/field/src/Tests/FieldAttachStorageTest.php
@@ -194,7 +194,7 @@ function testFieldAttachSaveEmptyDataDefaultValue() {
     $this->createFieldWithStorage('', $entity_type);
 
     // Add a default value function.
-    $this->fieldTestData->field->default_value_function = 'field_test_default_value';
+    $this->fieldTestData->field->default_value_callback = 'field_test_default_value';
     $this->fieldTestData->field->save();
 
     // Verify that fields are populated with default values.
diff --git a/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import.yml b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import.yml
index a9ef175..b205693 100644
--- a/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import.yml
+++ b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import.yml
@@ -7,7 +7,7 @@ label: 'Test import field'
 description: ''
 required: false
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: { }
 field_type: text
 dependencies:
diff --git a/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import_2.yml b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import_2.yml
index 6c359e2..ce26663 100644
--- a/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import_2.yml
+++ b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import_2.yml
@@ -7,7 +7,7 @@ label: 'Test import field 2 on entity_test bundle'
 description: ''
 required: false
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: { }
 field_type: text
 dependencies:
diff --git a/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.test_bundle.field_test_import_2.yml b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.test_bundle.field_test_import_2.yml
index 7d63acb..37adede 100644
--- a/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.test_bundle.field_test_import_2.yml
+++ b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.test_bundle.field_test_import_2.yml
@@ -7,7 +7,7 @@ label: 'Test import field 2 on test bundle'
 description: ''
 required: false
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: { }
 field_type: text
 dependencies:
diff --git a/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.entity_test.field_test_import_staging.yml b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.entity_test.field_test_import_staging.yml
index 9a088dd..fe28921 100644
--- a/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.entity_test.field_test_import_staging.yml
+++ b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.entity_test.field_test_import_staging.yml
@@ -8,7 +8,7 @@ label: 'Import from staging'
 description: ''
 required: '0'
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: { }
 field_type: text
 dependencies:
diff --git a/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle.field_test_import_staging_2.yml b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle.field_test_import_staging_2.yml
index cc8ccd4..d1db2b2 100644
--- a/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle.field_test_import_staging_2.yml
+++ b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle.field_test_import_staging_2.yml
@@ -8,7 +8,7 @@ label: 'Test import field 2 on test bundle'
 description: ''
 required: '0'
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: { }
 field_type: text
 dependencies:
diff --git a/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle_2.field_test_import_staging_2.yml b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle_2.field_test_import_staging_2.yml
index f58572a..07953c9 100644
--- a/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle_2.field_test_import_staging_2.yml
+++ b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle_2.field_test_import_staging_2.yml
@@ -8,7 +8,7 @@ label: 'Test import field 2 on test bundle 2'
 description: ''
 required: '0'
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: { }
 field_type: text
 dependencies:
diff --git a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
index 15e3d65..eb516d7 100644
--- a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
+++ b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
@@ -159,7 +159,7 @@ public function testToArray() {
       'description' => '',
       'required' => FALSE,
       'default_value' => array(),
-      'default_value_function' => '',
+      'default_value_callback' => '',
       'settings' => array(),
       'dependencies' => array(),
       'field_type' => 'test_field',
diff --git a/core/modules/forum/config/install/core.base_field_override.node.forum.promote.yml b/core/modules/forum/config/install/core.base_field_override.node.forum.promote.yml
index 42c7cce..3f20b64 100644
--- a/core/modules/forum/config/install/core.base_field_override.node.forum.promote.yml
+++ b/core/modules/forum/config/install/core.base_field_override.node.forum.promote.yml
@@ -15,6 +15,6 @@ translatable: true
 default_value:
   -
     value: 0
-default_value_function: ''
+default_value_callback: ''
 settings: {  }
 field_type: boolean
diff --git a/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml b/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml
index cd1f9d3..c956f34 100644
--- a/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml
+++ b/core/modules/forum/config/install/core.base_field_override.node.forum.title.yml
@@ -13,6 +13,6 @@ description: 'The title of this node, always treated as non-markup plain text.'
 required: true
 translatable: true
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: {  }
 field_type: string
diff --git a/core/modules/forum/config/install/field.field.taxonomy_term.forums.forum_container.yml b/core/modules/forum/config/install/field.field.taxonomy_term.forums.forum_container.yml
index b1c47ea..8056915 100644
--- a/core/modules/forum/config/install/field.field.taxonomy_term.forums.forum_container.yml
+++ b/core/modules/forum/config/install/field.field.taxonomy_term.forums.forum_container.yml
@@ -10,7 +10,7 @@ required: true
 default_value:
   -
     value: 0
-default_value_function: ''
+default_value_callback: ''
 settings: {  }
 field_type: boolean
 dependencies:
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
index 1ef6a30..978fb2c 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
@@ -36,7 +36,7 @@ process:
       - widget_settings
       - global_settings
 
-  default_value_function: ''
+  default_value_callback: ''
   default_value:
     plugin: d6_field_instance_defaults
     source:
diff --git a/core/modules/node/src/Entity/Node.php b/core/modules/node/src/Entity/Node.php
index b01ae1e..b5bb8f8 100644
--- a/core/modules/node/src/Entity/Node.php
+++ b/core/modules/node/src/Entity/Node.php
@@ -376,7 +376,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setRevisionable(TRUE)
       ->setSetting('target_type', 'user')
       ->setSetting('handler', 'default')
-      ->setDefaultValueCallback(array('Drupal\node\Entity\Node', 'getCurrentUserId'))
+      ->setDefaultValueCallback('Drupal\node\Entity\Node::getCurrentUserId')
       ->setTranslatable(TRUE)
       ->setDisplayOptions('view', array(
         'label' => 'hidden',
diff --git a/core/modules/system/src/Tests/Entity/EntityTranslationTest.php b/core/modules/system/src/Tests/Entity/EntityTranslationTest.php
index e6b67d5..efb96c7 100644
--- a/core/modules/system/src/Tests/Entity/EntityTranslationTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityTranslationTest.php
@@ -438,7 +438,7 @@ function testEntityTranslationAPI() {
     $entity = $this->reloadEntity($entity);
     $field_id = implode('.', array($entity->getEntityTypeId(), $entity->bundle(), $this->field_name));
     $field = $this->entityManager->getStorage('field_config')->load($field_id);
-    $field->default_value_function = 'entity_test_field_default_value';
+    $field->default_value_callback = 'entity_test_field_default_value';
     $field->save();
     $translation = $entity->addTranslation($langcode2);
     $field_storage = $translation->get($this->field_name);
diff --git a/core/profiles/standard/config/install/core.base_field_override.node.page.promote.yml b/core/profiles/standard/config/install/core.base_field_override.node.page.promote.yml
index 31de54b..1555eed 100644
--- a/core/profiles/standard/config/install/core.base_field_override.node.page.promote.yml
+++ b/core/profiles/standard/config/install/core.base_field_override.node.page.promote.yml
@@ -15,6 +15,6 @@ translatable: true
 default_value:
   -
     value: 0
-default_value_function: ''
+default_value_callback: ''
 settings: {  }
 field_type: boolean
diff --git a/core/profiles/standard/config/install/field.field.node.article.field_image.yml b/core/profiles/standard/config/install/field.field.node.article.field_image.yml
index 31ba638..b4b9168 100644
--- a/core/profiles/standard/config/install/field.field.node.article.field_image.yml
+++ b/core/profiles/standard/config/install/field.field.node.article.field_image.yml
@@ -6,7 +6,7 @@ label: Image
 description: ''
 required: false
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings:
   file_directory: field/image
   file_extensions: 'png gif jpg jpeg'
diff --git a/core/profiles/standard/config/install/field.field.node.article.field_tags.yml b/core/profiles/standard/config/install/field.field.node.article.field_tags.yml
index 0960d3f..53acce3 100644
--- a/core/profiles/standard/config/install/field.field.node.article.field_tags.yml
+++ b/core/profiles/standard/config/install/field.field.node.article.field_tags.yml
@@ -7,7 +7,7 @@ label: Tags
 description: 'Enter a comma-separated list. For example: Amsterdam, Mexico City, "Cleveland, Ohio"'
 required: false
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings: {  }
 status: true
 langcode: und
diff --git a/core/profiles/standard/config/install/field.field.user.user.user_picture.yml b/core/profiles/standard/config/install/field.field.user.user.user_picture.yml
index a7a2ef7..d6b31c2 100644
--- a/core/profiles/standard/config/install/field.field.user.user.user_picture.yml
+++ b/core/profiles/standard/config/install/field.field.user.user.user_picture.yml
@@ -8,7 +8,7 @@ label: Picture
 description: 'Your virtual face or picture.'
 required: false
 default_value: {  }
-default_value_function: ''
+default_value_callback: ''
 settings:
   file_extensions: 'png gif jpg jpeg'
   file_directory: pictures
