diff --git a/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php b/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php
index 78ece73..1c356b2 100644
--- a/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php
+++ b/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php
@@ -119,7 +119,7 @@ protected function init(array &$form_state, EntityInterface $entity, $field_name
     if ($entity->entityType() == 'node') {
       $node_type_settings = $this->nodeTypeStorage->load($entity->bundle())->getModuleSettings('node');
       $options = (isset($node_type_settings['options'])) ? $node_type_settings['options'] : array();
-      $entity->setNewRevision(in_array('revision', $options));
+      $entity->setNewRevision(!empty($options['revision']));
       $entity->log = NULL;
     }
 
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php
index a8cc0b1..b8c31aa 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php
@@ -245,7 +245,9 @@ public function testUserWithPermission() {
       // then again retrieve the field form, fill it, submit it (so it ends up
       // in TempStore) and then save the entity. Now there should be two
       // revisions.
-      $this->container->get('config.factory')->get('node.type.article')->set('settings.node.options', array('status', 'revision'))->save();
+      $node_type = entity_load('node_type', 'article');
+      $node_type->settings['node']['options']['revision'] = TRUE;
+      $node_type->save();
 
       // Retrieve field form.
       $post = array('nocssjs' => 'true', 'reset' => 'true');
diff --git a/core/modules/forum/config/node.type.forum.yml b/core/modules/forum/config/node.type.forum.yml
index 7258f39..18a8c59 100644
--- a/core/modules/forum/config/node.type.forum.yml
+++ b/core/modules/forum/config/node.type.forum.yml
@@ -9,7 +9,7 @@ settings:
   node:
     preview: 1
     options:
-      status: status
+      status: true
       # Not promoted to front page.
       promote: false
       sticky: false
diff --git a/core/modules/node/config/schema/node.schema.yml b/core/modules/node/config/schema/node.schema.yml
index e8895cc..f2a8296 100644
--- a/core/modules/node/config/schema/node.schema.yml
+++ b/core/modules/node/config/schema/node.schema.yml
@@ -61,16 +61,16 @@ node.settings.node:
       label: 'Publishing options'
       mapping:
         status:
-          type: string
+          type: boolean
           label: 'Published'
         promote:
-          type: string
+          type: boolean
           label: 'Promoted to front page'
         sticky:
-          type: string
+          type: boolean
           label: 'Sticky at top of lists'
         revision:
-          type: string
+          type: boolean
           label: 'Create new revision'
     submitted:
       type: boolean
diff --git a/core/modules/node/lib/Drupal/node/Entity/NodeType.php b/core/modules/node/lib/Drupal/node/Entity/NodeType.php
index 33105d9..cec3461 100644
--- a/core/modules/node/lib/Drupal/node/Entity/NodeType.php
+++ b/core/modules/node/lib/Drupal/node/Entity/NodeType.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\node\Entity;
 
+use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 use Drupal\node\NodeTypeInterface;
@@ -209,4 +210,26 @@ public static function postDelete(EntityStorageControllerInterface $storage_cont
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function preCreate(EntityStorageControllerInterface $storage_controller, array &$values) {
+    parent::preCreate($storage_controller, $values);
+
+    // Ensure default values are set.
+    if (!isset($values['settings']['node'])) {
+      $values['settings']['node'] = array();
+    }
+    $values['settings']['node'] = NestedArray::mergeDeep(array(
+      'options' => array(
+        'status' => TRUE,
+        'promote' => TRUE,
+        'sticky' => FALSE,
+        'revision' => FALSE,
+      ),
+      'preview' => DRUPAL_OPTIONAL,
+      'submitted' => TRUE,
+    ), $values['settings']['node']);
+  }
+
 }
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index 32c197a..3fb7584 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -44,7 +44,7 @@ protected function prepareEntity() {
       foreach (array('status', 'promote', 'sticky') as $key) {
         // Multistep node forms might have filled in something already.
         if ($node->$key->isEmpty()) {
-          $node->$key = (int) in_array($key, $this->settings['options']);
+          $node->$key = (int) !empty($this->settings['options'][$key]);
         }
       }
       $node->setAuthorId(\Drupal::currentUser()->id());
@@ -56,7 +56,7 @@ protected function prepareEntity() {
       $node->log = NULL;
     }
     // Always use the default revision setting.
-    $node->setNewRevision(in_array('revision', $this->settings['options']));
+    $node->setNewRevision(!empty($this->settings['options']['revision']));
   }
 
   /**
diff --git a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
index 6d7d7b0..1c31b3f 100644
--- a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
@@ -8,7 +8,7 @@
 namespace Drupal\node;
 
 use Drupal\Core\Entity\EntityFormController;
-use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Component\Utility\MapArray;
 use Drupal\Component\Utility\String;
 
 /**
@@ -31,13 +31,8 @@ public function form(array $form, array &$form_state) {
     }
 
     $node_settings = $type->getModuleSettings('node');
-    // Ensure default settings.
-    $node_settings += array(
-      'options' => array('status', 'promote'),
-      'preview' => DRUPAL_OPTIONAL,
-      'submitted' => TRUE,
-    );
-
+    // Prepare node options to be used for 'checkboxes' form element.
+    $node_settings['options'] = MapArray::copyValuesToKeys(array_keys(array_filter($node_settings['options'])));
     $form['name'] = array(
       '#title' => t('Name'),
       '#type' => 'textfield',
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
index 71e07de..cfe59d0 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
@@ -55,6 +55,19 @@ function testNodeCreation() {
     // Check that the node exists in the database.
     $node = $this->drupalGetNodeByTitle($edit['title[0][value]']);
     $this->assertTrue($node, 'Node found in database.');
+
+    // Verify that pages do not show submitted information by default.
+    $submitted_by = t('Submitted by !username on !datetime', array('!username' => $this->loggedInUser->getUsername(), '!datetime' => format_date($node->getCreatedTime())));
+    $this->drupalGet('node/' . $node->id());
+    $this->assertNoText($submitted_by);
+
+    // Change the node type setting to show submitted by information.
+    $node_type = entity_load('node_type', 'page');
+    $node_type->settings['node']['submitted'] = TRUE;
+    $node_type->save();
+
+    $this->drupalGet('node/' . $node->id());
+    $this->assertText($submitted_by);
   }
 
   /**
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php
index 1759837..a7478a8 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodePostSettingsTest.php
@@ -61,6 +61,7 @@ function testPagePostInfo() {
     $this->drupalPostForm('node/add/page', $edit, t('Save'));
 
     // Check that the post information is displayed.
-    $this->assertNoRaw('<span class="submitted">', 'Post information is not displayed.');
+    $elements = $this->xpath('//*[contains(@class,:class)]', array(':class' => 'submitted'));
+    $this->assertEqual(count($elements), 0, 'Post information is not displayed.');
   }
 }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php b/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php
index bb06621..dcb0518 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php
@@ -34,7 +34,13 @@ function setUp() {
 
     // Create Basic page and Article node types.
     if ($this->profile != 'standard') {
-      $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
+      $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page', 'settings' => array(
+        // Set proper default options for the page content type.
+        'node' => array(
+          'options' => array('promote' => FALSE),
+          'submitted' => FALSE,
+        ),
+      )));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
     $this->accessController = \Drupal::entityManager()->getAccessController('node');
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 8d1b07c..893b8dd 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -692,10 +692,11 @@ function template_preprocess_node(&$variables) {
   field_attach_preprocess($node, $variables['content'], $variables);
 
   // Display post information only on certain node types.
-  // Avoid loading the entire node type config entity here.
-  $submitted = \Drupal::config('node.type.' . $node->bundle())->get('settings.node.submitted') ?: TRUE;
-  if ($submitted) {
-    $variables['display_submitted'] = TRUE;
+  // Avoid loading the entire node type config entity here that may not exist.
+  $node_type_config = \Drupal::config('node.type.' . $node->bundle());
+  // Display submitted by default.
+  $variables['display_submitted'] = $node_type_config->isNew() || $node_type_config->get('settings.node.submitted');
+  if ($variables['display_submitted']) {
     $variables['submitted'] = t('Submitted by !username on !datetime', array('!username' => $variables['name'], '!datetime' => $variables['date']));
     if (theme_get_setting('features.node_user_picture')) {
       // To change user picture settings (e.g. image style), edit the 'compact'
@@ -708,7 +709,6 @@ function template_preprocess_node(&$variables) {
     }
   }
   else {
-    $variables['display_submitted'] = FALSE;
     $variables['submitted'] = '';
     $variables['user_picture'] = '';
   }
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
index 6f5065ec..a761cc3 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
@@ -282,6 +282,13 @@ protected function doArticleRdfaTests() {
    * displayed in teaser view, so it is tested in the front page tests.
    */
   protected function doPageRdfaTests() {
+    // The standard profile hides the created date on pages. Revert display to
+    // true for testing.
+    // @todo Clean-up standard profile defaults.
+    $node_type = entity_load('node_type', 'page');
+    $node_type->settings['node']['submitted'] = TRUE;
+    $node_type->save();
+
     // Feed the HTML into the parser.
     $uri_info = $this->page->uri();
     $path = $uri_info['path'];
diff --git a/core/profiles/standard/config/node.type.article.yml b/core/profiles/standard/config/node.type.article.yml
index dd2394f..a3e10b2 100644
--- a/core/profiles/standard/config/node.type.article.yml
+++ b/core/profiles/standard/config/node.type.article.yml
@@ -9,10 +9,10 @@ settings:
   node:
     preview: '1'
     options:
-      status: status
-      promote: promote
-      sticky: '0'
-      revision: '0'
-    submitted: '1'
+      status: true
+      promote: true
+      sticky: false
+      revision: false
+    submitted: true
 status: '1'
 langcode: en
diff --git a/core/profiles/standard/config/node.type.page.yml b/core/profiles/standard/config/node.type.page.yml
index 48a919a..d41ae94 100644
--- a/core/profiles/standard/config/node.type.page.yml
+++ b/core/profiles/standard/config/node.type.page.yml
@@ -9,10 +9,10 @@ settings:
   node:
     preview: '1'
     options:
-      status: status
-      promote: '0'
-      sticky: '0'
-      revision: '0'
-    submitted: '0'
+      status: true
+      promote: false
+      sticky: false
+      revision: false
+    submitted: false
 status: '1'
 langcode: en
