diff --git a/core/lib/Drupal/Core/Config/InstallStorage.php b/core/lib/Drupal/Core/Config/InstallStorage.php
index 5a7044b..8c2d793 100644
--- a/core/lib/Drupal/Core/Config/InstallStorage.php
+++ b/core/lib/Drupal/Core/Config/InstallStorage.php
@@ -15,6 +15,13 @@
 class InstallStorage extends FileStorage {
 
   /**
+   * Folder map indexed by configuration name.
+   *
+   * @var array
+   */
+  protected $folders;
+
+  /**
    * Overrides Drupal\Core\Config\FileStorage::__construct().
    */
   public function __construct() {
@@ -38,17 +45,9 @@ public function __construct() {
    *   afterwards check for a corresponding module or theme.
    */
   public function getFilePath($name) {
-    // Extract the owner.
-    $owner = strtok($name, '.');
-    // Determine the path to the owner.
-    $path = FALSE;
-    foreach (array('profile', 'module', 'theme') as $type) {
-      if ($path = drupal_get_path($type, $owner)) {
-        $file = $path . '/config/' . $name . '.' . static::getFileExtension();
-        if (file_exists($file)) {
-          return $file;
-        }
-      }
+    $folders = $this->getAllFolders();
+    if (isset($folders[$name])) {
+      return $folders[$name] . '/' . $name . '.' . $this->getFileExtension();
     }
     // If any code in the early installer requests a configuration object that
     // does not exist anywhere as default config, then that must be mistake.
@@ -83,15 +82,83 @@ public function delete($name) {
   public function rename($name, $new_name) {
     throw new StorageException('Rename operation is not allowed during install.');
   }
-
   /**
    * Implements Drupal\Core\Config\StorageInterface::listAll().
    *
    * @throws Drupal\Core\Config\StorageException
    */
   public function listAll($prefix = '') {
-    throw new StorageException('List operation is not allowed during install.');
-  }
+      $names = array_keys($this->getAllFolders());
+      if (!$prefix) {
+        return $names;
+      }
+      else {
+        $return = array();
+        foreach ($names as $index => $name) {
+          if (strpos($name, $prefix) === 0 ) {
+            $return[$index] = $names[$index];
+          }
+        }
+        return $return;
+      }
+    }
+
+    /**
+     * Returns a map of all metadata names and the module they belong to.
+     *
+     * @return array
+     *   An array mapping metadata names with directories.
+     */
+    protected function getAllFolders() {
+      if (!isset($this->folders)) {
+        $this->folders = $this->getComponentNames('profile', array(drupal_get_profile()));
+        $this->folders += $this->getComponentNames('module', array_keys(drupal_system_listing('/^' . DRUPAL_PHP_FUNCTION_PATTERN . '\.module$/', 'modules', 'name', 0)));
+        $this->folders += $this->getComponentNames('theme', array_keys(drupal_system_listing('/^' . DRUPAL_PHP_FUNCTION_PATTERN . '\.info$/', 'themes')));
+      }
+      return $this->folders;
+    }
+
+    /**
+     * Get all configuration names and folders for a list of modules or themes.
+     *
+     * @param string $type
+     *   Type of components: 'module' | 'theme' | 'profile'
+     * @param array $list
+     *   Array of theme or module names.
+     *
+     * @return array
+     *   Folders indexed by configuration name.
+     */
+    public function getComponentNames($type, $list) {
+      $extension = '.' . $this->getFileExtension();
+      $folders = array();
+      foreach ($list as $name) {
+        $directory = $this->getComponentFolder($type, $name);
+        if (file_exists($directory)) {
+          $files = glob($directory . '/*' . $extension);
+          foreach ($files as $filename) {
+            $name = basename($filename, $extension);
+            $folders[$name] = $directory;
+          }
+        }
+      }
+      return $folders;
+    }
+
+    /**
+     * Get folder inside each component that contains the files.
+     *
+     * @param string $type
+     *   Component type: 'module' | 'theme' | 'profile'
+     * @param string $name
+     *   Component name.
+     *
+     * @return string
+     *   The configuration folder name for this component.
+     */
+    protected function getComponentFolder($type, $name) {
+      return drupal_get_path($type, $name) . '/config';
+    }
 
   /**
    * Overrides Drupal\Core\Config\FileStorage::deleteAll().
diff --git a/core/lib/Drupal/Core/Config/Schema/SchemaStorage.php b/core/lib/Drupal/Core/Config/Schema/SchemaStorage.php
new file mode 100644
index 0000000..d6df48e
--- /dev/null
+++ b/core/lib/Drupal/Core/Config/Schema/SchemaStorage.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\Core\Config\Schema\SchemaStorage.
+ */
+
+namespace Drupal\Core\Config\Schema;
+
+use Drupal\Core\Config\InstallStorage;
+
+/**
+ * Defines the file storage controller for metadata files.
+ */
+class SchemaStorage extends InstallStorage {
+
+  /**
+   * Implements Drupal\Core\Config\StorageInterface::exists().
+   */
+  public function exists($name) {
+    return array_key_exists($name, $this->getAllFolders());
+  }
+
+  /**
+   * Overrides Drupal\Core\Config\InstallStorage::getComponentFolder().
+   */
+  protected function getComponentFolder($type, $name) {
+    return drupal_get_path($type, $name) . '/config/schema';
+  }
+
+}
diff --git a/core/modules/contact/config/contact.schema.yml b/core/modules/contact/config/contact.schema.yml
deleted file mode 100644
index f0b70bd..0000000
--- a/core/modules/contact/config/contact.schema.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Configuration schema: contact.schema.yml
-
-# Schema for contact category (multiple)
-contact.category.*:
-  type: mapping
-  mapping:
-    "id":
-      type: string
-    "label":
-      type: string
-    "recipients":
-      type: sequence
-      sequence:
-        - type: email
-    "reply":
-      type: string
-    "weight":
-      type: integer
-
-# Module settings
-contact.settings:
-  type: mapping
-  mapping:
-    "default_category":
-      type: string
-      required: yes
-    "flood":
-      type: mapping
-      mapping:
-        "limit":
-          type: integer
-        "interval":
-          type: integer
-      "user_default_enabled":
-        type: boolean
diff --git a/core/modules/contact/config/schema/contact.schema.yml b/core/modules/contact/config/schema/contact.schema.yml
new file mode 100644
index 0000000..f0b70bd
--- /dev/null
+++ b/core/modules/contact/config/schema/contact.schema.yml
@@ -0,0 +1,35 @@
+# Configuration schema: contact.schema.yml
+
+# Schema for contact category (multiple)
+contact.category.*:
+  type: mapping
+  mapping:
+    "id":
+      type: string
+    "label":
+      type: string
+    "recipients":
+      type: sequence
+      sequence:
+        - type: email
+    "reply":
+      type: string
+    "weight":
+      type: integer
+
+# Module settings
+contact.settings:
+  type: mapping
+  mapping:
+    "default_category":
+      type: string
+      required: yes
+    "flood":
+      type: mapping
+      mapping:
+        "limit":
+          type: integer
+        "interval":
+          type: integer
+      "user_default_enabled":
+        type: boolean
diff --git a/core/modules/image/config/image.schema.yml b/core/modules/image/config/image.schema.yml
deleted file mode 100644
index f4c8fd0..0000000
--- a/core/modules/image/config/image.schema.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-# Image module schema: image.schema.yml
-
-# Data types for image module.
-image.size:
-  type: mapping
-  mapping:
-    "width":
-      type: integer
-      label: "Width"
-    "height":
-      type: integer
-      label: "Height"
-
-# Image styles (multiple).
-# Plugin \Drupal\image\Plugin\Core\Entity\ImageStyle
-image.style.*:
-  type: mapping
-  label: "Image style"
-  mapping:
-    "name":
-      type: string
-    "label":
-      type: label
-    "effects":
-      type: sequence
-      sequence:
-        - type: mapping
-          mapping:
-            "name":
-              type: string
-            "data":
-              type: image.effect.[%parent.name]
-            "weight":
-              type: integer
-            "ieid":
-              type: string
-
-# Image effects plugins: image.effect.%
-# These are used in image styles.
-image.effect.image_crop:
-  type: image.size
-  label: "Image crop"
-  mapping:
-    "anchor":
-      label: "Anchor"
-
-image.effect.image_resize:
-  type: image.size
-  label: "Image resize"
-
-image.effect.image_rotate:
-  type: mapping
-  label: "Image rotate"
-  mapping:
-    degrees:
-      type: integer
-      label: 'Rotation angle'
-    bgcolor:
-      label: 'Background color'
-    random:
-      type: boolean
-      label: 'Randomize'
-
-image.effect.image_scale:
-  type: image.size
-  label: "Image scale"
-  mapping:
-    "upscale":
-      type: boolean
-      label: "Upscale"
-
-image.effect.image_scale_and_crop:
-  type: image.size
-  label: "Image scale and crop"
-
-# Schema for configuration files of image module.
-image.settings:
-  type: mapping
-  mapping:
-    "preview_image":
-      type: string
-      label: "Preview image"
diff --git a/core/modules/image/config/schema/image.schema.yml b/core/modules/image/config/schema/image.schema.yml
new file mode 100644
index 0000000..f4c8fd0
--- /dev/null
+++ b/core/modules/image/config/schema/image.schema.yml
@@ -0,0 +1,82 @@
+# Image module schema: image.schema.yml
+
+# Data types for image module.
+image.size:
+  type: mapping
+  mapping:
+    "width":
+      type: integer
+      label: "Width"
+    "height":
+      type: integer
+      label: "Height"
+
+# Image styles (multiple).
+# Plugin \Drupal\image\Plugin\Core\Entity\ImageStyle
+image.style.*:
+  type: mapping
+  label: "Image style"
+  mapping:
+    "name":
+      type: string
+    "label":
+      type: label
+    "effects":
+      type: sequence
+      sequence:
+        - type: mapping
+          mapping:
+            "name":
+              type: string
+            "data":
+              type: image.effect.[%parent.name]
+            "weight":
+              type: integer
+            "ieid":
+              type: string
+
+# Image effects plugins: image.effect.%
+# These are used in image styles.
+image.effect.image_crop:
+  type: image.size
+  label: "Image crop"
+  mapping:
+    "anchor":
+      label: "Anchor"
+
+image.effect.image_resize:
+  type: image.size
+  label: "Image resize"
+
+image.effect.image_rotate:
+  type: mapping
+  label: "Image rotate"
+  mapping:
+    degrees:
+      type: integer
+      label: 'Rotation angle'
+    bgcolor:
+      label: 'Background color'
+    random:
+      type: boolean
+      label: 'Randomize'
+
+image.effect.image_scale:
+  type: image.size
+  label: "Image scale"
+  mapping:
+    "upscale":
+      type: boolean
+      label: "Upscale"
+
+image.effect.image_scale_and_crop:
+  type: image.size
+  label: "Image scale and crop"
+
+# Schema for configuration files of image module.
+image.settings:
+  type: mapping
+  mapping:
+    "preview_image":
+      type: string
+      label: "Preview image"
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
new file mode 100644
index 0000000..3514260
--- /dev/null
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -0,0 +1,104 @@
+# Basic scalar data types from typed data.
+boolean:
+  label: 'Boolean'
+  class: '\Drupal\Core\TypedData\Type\Boolean'
+email:
+  label: 'Email'
+  class: '\Drupal\Core\TypedData\Type\Email'
+integer:
+  label: 'Integer'
+  class: '\Drupal\Core\TypedData\Type\Integer'
+string:
+  label: 'String'
+  class: '\Drupal\Core\TypedData\Type\String'
+uri:
+  label: 'Uri'
+  class: '\Drupal\Core\TypedData\Type\Uri'
+
+# Basic data types for configuration.
+undefined:
+  label: 'Undefined'
+  class: '\Drupal\Core\Config\Schema\Property'
+mapping:
+  label: Mapping
+  class: '\Drupal\Core\Config\Schema\Mapping'
+sequence:
+  label: Sequence
+  class: '\Drupal\Core\Config\Schema\Sequence'
+
+# Default mapping for unknown types or types not found.
+default:
+  type: undefined
+  label: 'Unknown'
+
+# Simple extended data types:
+
+# Human readable string that must be plain text and editable with a text field.
+label:
+  type: string
+  label: 'Label'
+
+# Internal Drupal path
+path:
+  type: string
+  label: 'Path'
+
+# Human readable string that can contain multiple lines of text or HTML.
+text:
+  type: string
+  label: 'Text'
+
+# Complex extended data types:
+
+# Mail text with subject and body parts.
+mail:
+  type: mapping
+  label: "Mail"
+  mapping:
+    "subject":
+      type: text
+      label: "Subject"
+    "body":
+      type: text
+      label: "Body"
+
+# Schema for configuration files of system module:
+
+system.site:
+  type: mapping
+  label: 'Site information'
+  mapping:
+    "name":
+      label: "Site name"
+      type: label
+    "mail":
+      label: "Site mail"
+      type: email
+    "slogan":
+      label: "Site slogan"
+      type: text
+    "page":
+      type: mapping
+      mapping:
+        "403":
+          type: path
+        "404":
+          type: path
+        "front":
+          type: path
+          label: "Front page path"
+    "admin_compact_mode":
+      type: boolean
+    "weight_select_max":
+      type: integer
+
+system.maintenance:
+  type: mapping
+  label: 'Maintenance mode'
+  mapping:
+    "enabled":
+      type: boolean
+      label: "Put site into maintenance mode"
+    "message":
+      type: text
+      label: "Message to display when in maintenance mode"
diff --git a/core/modules/system/config/system.schema.yml b/core/modules/system/config/system.schema.yml
deleted file mode 100644
index 3514260..0000000
--- a/core/modules/system/config/system.schema.yml
+++ /dev/null
@@ -1,104 +0,0 @@
-# Basic scalar data types from typed data.
-boolean:
-  label: 'Boolean'
-  class: '\Drupal\Core\TypedData\Type\Boolean'
-email:
-  label: 'Email'
-  class: '\Drupal\Core\TypedData\Type\Email'
-integer:
-  label: 'Integer'
-  class: '\Drupal\Core\TypedData\Type\Integer'
-string:
-  label: 'String'
-  class: '\Drupal\Core\TypedData\Type\String'
-uri:
-  label: 'Uri'
-  class: '\Drupal\Core\TypedData\Type\Uri'
-
-# Basic data types for configuration.
-undefined:
-  label: 'Undefined'
-  class: '\Drupal\Core\Config\Schema\Property'
-mapping:
-  label: Mapping
-  class: '\Drupal\Core\Config\Schema\Mapping'
-sequence:
-  label: Sequence
-  class: '\Drupal\Core\Config\Schema\Sequence'
-
-# Default mapping for unknown types or types not found.
-default:
-  type: undefined
-  label: 'Unknown'
-
-# Simple extended data types:
-
-# Human readable string that must be plain text and editable with a text field.
-label:
-  type: string
-  label: 'Label'
-
-# Internal Drupal path
-path:
-  type: string
-  label: 'Path'
-
-# Human readable string that can contain multiple lines of text or HTML.
-text:
-  type: string
-  label: 'Text'
-
-# Complex extended data types:
-
-# Mail text with subject and body parts.
-mail:
-  type: mapping
-  label: "Mail"
-  mapping:
-    "subject":
-      type: text
-      label: "Subject"
-    "body":
-      type: text
-      label: "Body"
-
-# Schema for configuration files of system module:
-
-system.site:
-  type: mapping
-  label: 'Site information'
-  mapping:
-    "name":
-      label: "Site name"
-      type: label
-    "mail":
-      label: "Site mail"
-      type: email
-    "slogan":
-      label: "Site slogan"
-      type: text
-    "page":
-      type: mapping
-      mapping:
-        "403":
-          type: path
-        "404":
-          type: path
-        "front":
-          type: path
-          label: "Front page path"
-    "admin_compact_mode":
-      type: boolean
-    "weight_select_max":
-      type: integer
-
-system.maintenance:
-  type: mapping
-  label: 'Maintenance mode'
-  mapping:
-    "enabled":
-      type: boolean
-      label: "Put site into maintenance mode"
-    "message":
-      type: text
-      label: "Message to display when in maintenance mode"
diff --git a/core/modules/user/config/schema/user.schema.yml b/core/modules/user/config/schema/user.schema.yml
new file mode 100644
index 0000000..6af7471
--- /dev/null
+++ b/core/modules/user/config/schema/user.schema.yml
@@ -0,0 +1,75 @@
+# User module schema: user.schema.yml
+
+# User mails.
+user.mail:
+ type: mapping
+ mapping:
+  "cancel_confirm":
+    type: mail
+    label: "Account cancellation confirmation"
+  "password_reset":
+    type: mail
+    label: "Password reset email"
+  "register_admin_created":
+    type: mail
+    label: "Account created by administrator"
+  "register_no_approval_required":
+    type: mail
+    label: "Registration confirmation (No approval required)"
+  "register_pending_approval":
+    type: mail
+    label: "Registration confirmation (Pending approval)"
+  "status_activated":
+    type: mail
+    label: "Account activation"
+  "status_blocked":
+    type: mail
+    label: "Account blocked"
+  "status_canceled":
+    type: mail
+    label: "Account cancelled"
+
+# User settings.
+user.settings:
+  type: mapping
+  mapping:
+    "admin_role":
+      type: string
+      label: "Administrator role"
+    "anonymous":
+      type: label
+      label: "Anonymous name"
+    "verify_mail":
+      type: boolean
+      label: "Verify mail"
+    "notify":
+      type: mapping
+      label: "Notify user"
+      mapping:
+        "cancel_confirm":
+          type: boolean
+        "password_reset":
+          type: boolean
+        "status_activated":
+          type: boolean
+        "status_blocked":
+          type: boolean
+        "status_cancelled":
+          type: boolean
+        "register_admin_created":
+          type: boolean
+        "register_no_approval_required":
+          type: boolean
+        "register_pending_approval":
+          type: boolean
+    "register":
+      type: string
+      enum: [visitors, admin_only, visitors_admin_approval]
+    "signatures":
+      type: boolean
+      label: "User signatures"
+    "cancel_method":
+      type: string
+      label: "User cancel method"
+    "password_reset_timeout":
+      type: integer
diff --git a/core/modules/user/config/user.schema.yml b/core/modules/user/config/user.schema.yml
deleted file mode 100644
index 6af7471..0000000
--- a/core/modules/user/config/user.schema.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-# User module schema: user.schema.yml
-
-# User mails.
-user.mail:
- type: mapping
- mapping:
-  "cancel_confirm":
-    type: mail
-    label: "Account cancellation confirmation"
-  "password_reset":
-    type: mail
-    label: "Password reset email"
-  "register_admin_created":
-    type: mail
-    label: "Account created by administrator"
-  "register_no_approval_required":
-    type: mail
-    label: "Registration confirmation (No approval required)"
-  "register_pending_approval":
-    type: mail
-    label: "Registration confirmation (Pending approval)"
-  "status_activated":
-    type: mail
-    label: "Account activation"
-  "status_blocked":
-    type: mail
-    label: "Account blocked"
-  "status_canceled":
-    type: mail
-    label: "Account cancelled"
-
-# User settings.
-user.settings:
-  type: mapping
-  mapping:
-    "admin_role":
-      type: string
-      label: "Administrator role"
-    "anonymous":
-      type: label
-      label: "Anonymous name"
-    "verify_mail":
-      type: boolean
-      label: "Verify mail"
-    "notify":
-      type: mapping
-      label: "Notify user"
-      mapping:
-        "cancel_confirm":
-          type: boolean
-        "password_reset":
-          type: boolean
-        "status_activated":
-          type: boolean
-        "status_blocked":
-          type: boolean
-        "status_cancelled":
-          type: boolean
-        "register_admin_created":
-          type: boolean
-        "register_no_approval_required":
-          type: boolean
-        "register_pending_approval":
-          type: boolean
-    "register":
-      type: string
-      enum: [visitors, admin_only, visitors_admin_approval]
-    "signatures":
-      type: boolean
-      label: "User signatures"
-    "cancel_method":
-      type: string
-      label: "User cancel method"
-    "password_reset_timeout":
-      type: integer
diff --git a/core/modules/views/config/schema/views.schema.yml b/core/modules/views/config/schema/views.schema.yml
new file mode 100644
index 0000000..59c90a5
--- /dev/null
+++ b/core/modules/views/config/schema/views.schema.yml
@@ -0,0 +1,232 @@
+# View definition (multiple)
+views.view.*:
+  type: mapping
+  label: 'View'
+  mapping:
+    disabled:
+      type: boolean
+      label: 'Disabled'
+    api_version:
+      label: 'API version'
+    module:
+      label: 'Module'
+    name:
+      label: 'Machine name'
+    description:
+      type: text
+      label: 'Administrative description'
+    tag:
+      label: 'Tag'
+    base_table:
+      label: 'Base table'
+    base_field:
+      label: 'Base field'
+    human_name:
+      type: label
+      label: 'Human readable name'
+    core:
+      label: 'Drupal version'
+    uuid:
+      label: 'UUID'
+    display:
+      type: sequence
+      label: 'Displays'
+      sequence:
+        - type: mapping
+          label: 'Display settings'
+          mapping:
+            id:
+              label: 'Machine name'
+            display_title:
+              type: text
+              label: 'Title'
+            display_plugin:
+              label: 'Display plugin'
+            position:
+              type: integer
+              label: 'Position'
+            display_options:
+              type: 'views.display.[%parent.display_plugin]'
+
+# Views display: common
+# Options for Drupal\views\Plugin\views\display\DisplayPluginBase
+views.display.*:
+  type: mapping
+  label: 'Display options'
+  mapping:
+    title:
+      type: text
+      label: 'Display title'
+    format:
+      label: 'Format'
+    fields:
+      type: sequence
+      label: 'Fields'
+      sequence:
+        - type: 'views.field.[table]-[field]'
+    pager:
+      type: mapping
+      label: 'Pager'
+      mapping:
+        type:
+          label: 'Pager type'
+        options:
+          type: mapping
+          label: 'Options'
+          mapping:
+            offset:
+              type: integer
+              label: 'Offset'
+
+    exposed_form:
+      type: mapping
+      label: 'Exposed form'
+      mapping:
+        type:
+          label: 'Exposed form type'
+    access:
+      type: mapping
+      label: 'Access'
+      mapping:
+        type:
+          label: 'Access type'
+    other:
+      label: 'Other'
+    cache:
+      type: mapping
+      label: 'Cache'
+      mapping:
+        type:
+          label: 'Cache type'
+    sorts:
+      type: sequence
+      label: 'Sorts'
+      sequence:
+        - type: 'views.sort.[table]-[field]'
+    arguments:
+      type: sequence
+      label: 'Arguments'
+      sequence:
+        - type: 'views.argument.[table]-[field]'
+    filters:
+      type: sequence
+      label: 'Filters'
+      sequence:
+        - type: 'views.filter.[table]-[field]'
+    style:
+      type: mapping
+      label: 'Style'
+      mapping:
+        type:
+          label: 'Type'
+    row:
+      type: mapping
+      label: 'Row'
+      mapping:
+        type:
+          label: 'Row type'
+        options:
+          include: 'views.row.[%parent.type]'
+    query:
+      type: mapping
+      label: 'Query'
+      mapping:
+        type:
+          label: 'Query type'
+        options:
+          type: mapping
+          label: 'Query options'
+          mapping:
+            query_comment:
+              type: boolean
+              label: 'Query comment'
+    defaults:
+      type: mapping
+      label: 'Defaults'
+      mapping:
+        style_plugin:
+          label: 'Style plugin'
+        style_options:
+          type: 'views.style.[%parent.style_plugin]'
+        row_plugin:
+          label: 'Row plugin'
+        row_options:
+          type: 'views.style.[%parent.row_plugin]'
+    relationships:
+      type: sequence
+      label: 'Relationships'
+      sequence:
+        - type: 'views.relationship.[table]-[field]'
+
+# Options for Drupal\views\Plugin\views\display\PathPluginBase
+views.display.PathPluginBase:
+  include: 'views.display.%'
+  type: mapping
+  mapping:
+    path:
+      type: string
+      label: 'Page path'
+
+# Views display plugin: Drupal\views\Plugin\views\display\Page
+views.display.page:
+  type: 'views.display.PathPluginBase'
+  label: 'Page display options'
+  mapping:
+    menu:
+      type: mapping
+      label: 'Menu'
+      mapping:
+        type:
+          label: 'Type'
+        title:
+          type: text
+          label: 'Title'
+        description:
+          type: text
+          label: 'Description'
+        weight:
+          type: integer
+          label: 'Weight'
+        name:
+          label: 'Menu name'
+        context:
+          label: 'Context'
+    tab_options:
+      type: mapping
+      label: 'Tab options'
+      mapping:
+        type:
+          label: 'Type'
+        title:
+          type: text
+          label: 'Title'
+        description:
+          type: text
+          label: 'Description'
+        weight:
+          type: integer
+          label: 'Weight'
+        name:
+          label: 'Menu name'
+
+# Views display plugin: Drupal\views\Plugin\views\display\Block
+views.display.block:
+  type: 'views.display.%'
+  label: 'Block display options'
+  mapping:
+    block_description:
+      type: text
+      label: 'Block name'
+    block_caching:
+      label: 'Block caching'
+
+# Views display plugin: Drupal\views\Plugin\views\display\Feed
+views.display.feed:
+  type: 'views.display.PathPluginBase'
+  label: 'Feed display options'
+  mapping:
+    sitename_title:
+      type: boolean
+      label: 'Use the site name for the title'
+    displays:
+      label: 'The feed icon will be available only to the selected displays.'
diff --git a/core/modules/views/config/views.schema.yml b/core/modules/views/config/views.schema.yml
deleted file mode 100644
index 59c90a5..0000000
--- a/core/modules/views/config/views.schema.yml
+++ /dev/null
@@ -1,232 +0,0 @@
-# View definition (multiple)
-views.view.*:
-  type: mapping
-  label: 'View'
-  mapping:
-    disabled:
-      type: boolean
-      label: 'Disabled'
-    api_version:
-      label: 'API version'
-    module:
-      label: 'Module'
-    name:
-      label: 'Machine name'
-    description:
-      type: text
-      label: 'Administrative description'
-    tag:
-      label: 'Tag'
-    base_table:
-      label: 'Base table'
-    base_field:
-      label: 'Base field'
-    human_name:
-      type: label
-      label: 'Human readable name'
-    core:
-      label: 'Drupal version'
-    uuid:
-      label: 'UUID'
-    display:
-      type: sequence
-      label: 'Displays'
-      sequence:
-        - type: mapping
-          label: 'Display settings'
-          mapping:
-            id:
-              label: 'Machine name'
-            display_title:
-              type: text
-              label: 'Title'
-            display_plugin:
-              label: 'Display plugin'
-            position:
-              type: integer
-              label: 'Position'
-            display_options:
-              type: 'views.display.[%parent.display_plugin]'
-
-# Views display: common
-# Options for Drupal\views\Plugin\views\display\DisplayPluginBase
-views.display.*:
-  type: mapping
-  label: 'Display options'
-  mapping:
-    title:
-      type: text
-      label: 'Display title'
-    format:
-      label: 'Format'
-    fields:
-      type: sequence
-      label: 'Fields'
-      sequence:
-        - type: 'views.field.[table]-[field]'
-    pager:
-      type: mapping
-      label: 'Pager'
-      mapping:
-        type:
-          label: 'Pager type'
-        options:
-          type: mapping
-          label: 'Options'
-          mapping:
-            offset:
-              type: integer
-              label: 'Offset'
-
-    exposed_form:
-      type: mapping
-      label: 'Exposed form'
-      mapping:
-        type:
-          label: 'Exposed form type'
-    access:
-      type: mapping
-      label: 'Access'
-      mapping:
-        type:
-          label: 'Access type'
-    other:
-      label: 'Other'
-    cache:
-      type: mapping
-      label: 'Cache'
-      mapping:
-        type:
-          label: 'Cache type'
-    sorts:
-      type: sequence
-      label: 'Sorts'
-      sequence:
-        - type: 'views.sort.[table]-[field]'
-    arguments:
-      type: sequence
-      label: 'Arguments'
-      sequence:
-        - type: 'views.argument.[table]-[field]'
-    filters:
-      type: sequence
-      label: 'Filters'
-      sequence:
-        - type: 'views.filter.[table]-[field]'
-    style:
-      type: mapping
-      label: 'Style'
-      mapping:
-        type:
-          label: 'Type'
-    row:
-      type: mapping
-      label: 'Row'
-      mapping:
-        type:
-          label: 'Row type'
-        options:
-          include: 'views.row.[%parent.type]'
-    query:
-      type: mapping
-      label: 'Query'
-      mapping:
-        type:
-          label: 'Query type'
-        options:
-          type: mapping
-          label: 'Query options'
-          mapping:
-            query_comment:
-              type: boolean
-              label: 'Query comment'
-    defaults:
-      type: mapping
-      label: 'Defaults'
-      mapping:
-        style_plugin:
-          label: 'Style plugin'
-        style_options:
-          type: 'views.style.[%parent.style_plugin]'
-        row_plugin:
-          label: 'Row plugin'
-        row_options:
-          type: 'views.style.[%parent.row_plugin]'
-    relationships:
-      type: sequence
-      label: 'Relationships'
-      sequence:
-        - type: 'views.relationship.[table]-[field]'
-
-# Options for Drupal\views\Plugin\views\display\PathPluginBase
-views.display.PathPluginBase:
-  include: 'views.display.%'
-  type: mapping
-  mapping:
-    path:
-      type: string
-      label: 'Page path'
-
-# Views display plugin: Drupal\views\Plugin\views\display\Page
-views.display.page:
-  type: 'views.display.PathPluginBase'
-  label: 'Page display options'
-  mapping:
-    menu:
-      type: mapping
-      label: 'Menu'
-      mapping:
-        type:
-          label: 'Type'
-        title:
-          type: text
-          label: 'Title'
-        description:
-          type: text
-          label: 'Description'
-        weight:
-          type: integer
-          label: 'Weight'
-        name:
-          label: 'Menu name'
-        context:
-          label: 'Context'
-    tab_options:
-      type: mapping
-      label: 'Tab options'
-      mapping:
-        type:
-          label: 'Type'
-        title:
-          type: text
-          label: 'Title'
-        description:
-          type: text
-          label: 'Description'
-        weight:
-          type: integer
-          label: 'Weight'
-        name:
-          label: 'Menu name'
-
-# Views display plugin: Drupal\views\Plugin\views\display\Block
-views.display.block:
-  type: 'views.display.%'
-  label: 'Block display options'
-  mapping:
-    block_description:
-      type: text
-      label: 'Block name'
-    block_caching:
-      label: 'Block caching'
-
-# Views display plugin: Drupal\views\Plugin\views\display\Feed
-views.display.feed:
-  type: 'views.display.PathPluginBase'
-  label: 'Feed display options'
-  mapping:
-    sitename_title:
-      type: boolean
-      label: 'Use the site name for the title'
-    displays:
-      label: 'The feed icon will be available only to the selected displays.'
