diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php
index c061c3b..d182289 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Tests/AggregatorTestBase.php
@@ -20,7 +20,7 @@
    *
    * @var array
    */
-  public static $modules = array('node', 'aggregator', 'aggregator_test');
+  public static $modules = array('node', 'aggregator', 'aggregator_test', 'views');
 
   function setUp() {
     parent::setUp();
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php
index 28e199e..86d256a 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php
@@ -11,6 +11,14 @@
  * Tests for Comment module integration with RSS feeds.
  */
 class CommentRssTest extends CommentTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('views');
+
   public static function getInfo() {
     return array(
       'name' => 'Comment RSS',
diff --git a/core/modules/node/config/views.view.frontpage.yml b/core/modules/node/config/views.view.frontpage.yml
index 7d0e218..498a941 100644
--- a/core/modules/node/config/views.view.frontpage.yml
+++ b/core/modules/node/config/views.view.frontpage.yml
@@ -1,9 +1,8 @@
-langcode: en
-status: '1'
 base_field: nid
 base_table: node
 core: 8.x
 description: 'A list of nodes marked for display on the front page.'
+status: '1'
 display:
   default:
     display_options:
@@ -139,8 +138,19 @@ display:
     display_title: Page
     id: page_1
     position: {  }
+  feed_1:
+    display_plugin: feed
+    id: feed_1
+    display_title: Feed
+    position: ''
+    display_options:
+      sitename_title: '1'
+      path: rss.xml
+      displays:
+        page_1: page_1
+        default: '0'
 human_name: Frontpage
-langcode: und
 module: node
 id: frontpage
 tag: ''
+langcode: en
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 6ce0874..2225cd4 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1719,15 +1719,6 @@ function node_menu() {
     'access callback' => '_node_add_access',
     'file' => 'node.pages.inc',
   );
-  $items['rss.xml'] = array(
-    'title' => 'RSS feed',
-    'page callback' => 'node_feed',
-    // Pass a FALSE and array argument to ensure that additional path components
-    // are not passed to node_feed().
-    'page arguments' => array(FALSE, array()),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
   $items['node/add/%node_type'] = array(
     'title callback' => 'node_type_get_clean_name',
     'title arguments' => array(2),
@@ -2059,98 +2050,6 @@ function node_block_access($block) {
 }
 
 /**
- * Page callback: Generates and prints an RSS feed.
- *
- * Generates an RSS feed from an array of node IDs, and prints it with an HTTP
- * header, with Content Type set to RSS/XML.
- *
- * @param $nids
- *   (optional) An array of node IDs (nid). Defaults to FALSE so empty feeds can
- *   be generated with passing an empty array, if no items are to be added
- *   to the feed.
- * @param $channel
- *   (optional) An associative array containing 'title', 'link', 'description',
- *   and other keys, to be parsed by format_rss_channel() and
- *   format_xml_elements(). A list of channel elements can be found at the
- *   @link http://cyber.law.harvard.edu/rss/rss.html RSS 2.0 Specification. @endlink
- *   The link should be an absolute URL.
- *
- * @return Symfony\Component\HttpFoundation\Response
- *   A response object.
- *
- * @see node_menu()
- */
-function node_feed($nids = FALSE, $channel = array()) {
-  global $base_url;
-  $language_content = language(LANGUAGE_TYPE_CONTENT);
-  $rss_config = config('system.rss');
-
-  if ($nids === FALSE) {
-    $nids = db_select('node', 'n')
-      ->fields('n', array('nid', 'created'))
-      ->condition('n.promote', 1)
-      ->condition('n.status', 1)
-      ->orderBy('n.created', 'DESC')
-      ->range(0, $rss_config->get('items.limit'))
-      ->addTag('node_access')
-      ->execute()
-      ->fetchCol();
-  }
-
-  $item_length = $rss_config->get('items.view_mode');
-  $namespaces = array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/');
-
-  // Load all nodes to be rendered.
-  $nodes = node_load_multiple($nids);
-  $items = '';
-  foreach ($nodes as $node) {
-    $item_text = '';
-
-    $node->link = url("node/$node->nid", array('absolute' => TRUE));
-    $node->rss_namespaces = array();
-    $node->rss_elements = array(
-      array('key' => 'pubDate', 'value' => gmdate('r', $node->created)),
-      array('key' => 'dc:creator', 'value' => $node->name),
-      array('key' => 'guid', 'value' => $node->nid . ' at ' . $base_url, 'attributes' => array('isPermaLink' => 'false'))
-    );
-
-    // The node gets built and modules add to or modify $node->rss_elements
-    // and $node->rss_namespaces.
-    $build = node_view($node, 'rss');
-    unset($build['#theme']);
-
-    if (!empty($node->rss_namespaces)) {
-      $namespaces = array_merge($namespaces, $node->rss_namespaces);
-    }
-
-    if ($item_length != 'title') {
-      // We render node contents and force links to be last.
-      $build['links']['#weight'] = 1000;
-      $item_text .= drupal_render($build);
-    }
-
-    $items .= format_rss_item($node->label(), $node->link, $item_text, $node->rss_elements);
-  }
-
-  $channel_defaults = array(
-    'version'     => '2.0',
-    'title'       => config('system.site')->get('name'),
-    'link'        => $base_url,
-    'description' => $rss_config->get('channel.description'),
-    'language'    => $language_content->langcode
-  );
-  $channel_extras = array_diff_key($channel, $channel_defaults);
-  $channel = array_merge($channel_defaults, $channel);
-
-  $output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
-  $output .= "<rss version=\"" . $channel["version"] . "\" xml:base=\"" . $base_url . "\" " . new Attribute($namespaces) . ">\n";
-  $output .= format_rss_channel($channel['title'], $channel['link'], $channel['description'], $items, $channel['language'], $channel_extras);
-  $output .= "</rss>\n";
-
-  return new Response($output, 200, array('Content-Type' =>  'application/rss+xml; charset=utf-8'));
-}
-
-/**
  * Generates an array for rendering the given node.
  *
  * @param \Drupal\Core\Entity\EntityInterface $node
diff --git a/core/modules/system/config/system.rss.yml b/core/modules/system/config/system.rss.yml
index 6efa3bd..69e64da 100644
--- a/core/modules/system/config/system.rss.yml
+++ b/core/modules/system/config/system.rss.yml
@@ -2,4 +2,4 @@ channel:
   description: ''
 items:
   limit: '10'
-  view_mode: fulltext
+  view_mode: rss
