diff --git a/core/lib/Drupal/Core/Form/FormInterface.php b/core/lib/Drupal/Core/Form/FormInterface.php
index 2cafbebfa0..a8b3fa288d 100644
--- a/core/lib/Drupal/Core/Form/FormInterface.php
+++ b/core/lib/Drupal/Core/Form/FormInterface.php
@@ -10,6 +10,21 @@
 interface FormInterface {
 
   /**
+   * Disabled option on forms and settings
+   */
+  const DISABLED = 0;
+
+  /**
+   * Optional option on forms and settings
+   */
+  const OPTIONAL = 1;
+
+  /**
+   * Required option on forms and settings
+   */
+  const REQUIRED = 2;
+
+  /**
    * Returns a unique string identifying the form.
    *
    * @return string
diff --git a/core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php b/core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php
index c64c47f427..aabc45ca22 100644
--- a/core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php
+++ b/core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php
@@ -23,6 +23,12 @@
 interface MenuLinkManagerInterface extends PluginManagerInterface {
 
   /**
+   * Maximum length of menu name as entered by the user. Database length is 32
+   * and we add a menu- prefix.
+   */
+  const MAX_MENU_NAME_LENGTH_UI = 27;
+
+  /**
    * Triggers discovery, save, and cleanup of discovered links.
    */
   public function rebuild();
diff --git a/core/modules/aggregator/aggregator.module b/core/modules/aggregator/aggregator.module
index 15b735311d..cf32734a30 100644
--- a/core/modules/aggregator/aggregator.module
+++ b/core/modules/aggregator/aggregator.module
@@ -10,6 +10,9 @@
 
 /**
  * Denotes that a feed's items should never expire.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\aggregator\FeedStorageInterface::CLEAR_NEVER instead.
  */
 const AGGREGATOR_CLEAR_NEVER = 0;
 
diff --git a/core/modules/aggregator/src/FeedStorageInterface.php b/core/modules/aggregator/src/FeedStorageInterface.php
index f0318fd2c7..cf30c6a33d 100644
--- a/core/modules/aggregator/src/FeedStorageInterface.php
+++ b/core/modules/aggregator/src/FeedStorageInterface.php
@@ -10,6 +10,11 @@
 interface FeedStorageInterface extends ContentEntityStorageInterface {
 
   /**
+   * Denotes that a feed's items should never expire.
+   */
+  const CLEAR_NEVER = 0;
+
+  /**
    * Returns the fids of feeds that need to be refreshed.
    *
    * @return array
diff --git a/core/modules/block/src/BlockRepositoryInterface.php b/core/modules/block/src/BlockRepositoryInterface.php
index 6e3f904f61..9c4f871a7e 100644
--- a/core/modules/block/src/BlockRepositoryInterface.php
+++ b/core/modules/block/src/BlockRepositoryInterface.php
@@ -5,6 +5,20 @@
 interface BlockRepositoryInterface {
 
   /**
+   * Return only visible regions.
+   *
+   * @see system_region_list()
+   */
+  const REGIONS_VISIBLE = 'visible';
+
+  /**
+   * Return all regions.
+   *
+   * @see system_region_list()
+   */
+  const REGIONS_ALL = 'all';
+
+  /**
    * Returns an array of regions and their block entities.
    *
    * @param \Drupal\Core\Cache\CacheableMetadata[] $cacheable_metadata
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index aa61d7ee1b..ae8131559d 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -28,16 +28,25 @@
 
 /**
  * Anonymous posters cannot enter their contact information.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\comment\CommentInterface::ANONYMOUS_MAYNOT_CONTACT instead.
  */
 const COMMENT_ANONYMOUS_MAYNOT_CONTACT = 0;
 
 /**
  * Anonymous posters may leave their contact information.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\comment\CommentInterface::ANONYMOUS_MAY_CONTACT instead.
  */
 const COMMENT_ANONYMOUS_MAY_CONTACT = 1;
 
 /**
  * Anonymous posters are required to leave their contact information.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\comment\CommentInterface::ANONYMOUS_MUST_CONTACT instead.
  */
 const COMMENT_ANONYMOUS_MUST_CONTACT = 2;
 
diff --git a/core/modules/comment/src/CommentInterface.php b/core/modules/comment/src/CommentInterface.php
index 9f3360c1ed..e80e5edfdc 100644
--- a/core/modules/comment/src/CommentInterface.php
+++ b/core/modules/comment/src/CommentInterface.php
@@ -23,6 +23,21 @@
   const PUBLISHED = 1;
 
   /**
+   * Anonymous posters cannot enter their contact information.
+   */
+  const ANONYMOUS_MAYNOT_CONTACT = 0;
+
+  /**
+   * Anonymous posters may leave their contact information.
+   */
+  const ANONYMOUS_MAY_CONTACT = 1;
+
+  /**
+   * Anonymous posters are required to leave their contact information.
+   */
+  const ANONYMOUS_MUST_CONTACT = 2;
+
+  /**
    * Determines if this comment is a reply to another comment.
    *
    * @return bool
diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module
index 92254c2d3a..52e438d0e0 100644
--- a/core/modules/menu_ui/menu_ui.module
+++ b/core/modules/menu_ui/menu_ui.module
@@ -22,8 +22,13 @@
 use Drupal\node\NodeInterface;
 
 /**
- * Maximum length of menu name as entered by the user. Database length is 32
- * and we add a menu- prefix.
+ * Maximum length of menu name as entered by the user.
+ *
+ * Database length is 32 and we add a menu- prefix.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\Core\Menu\MenuLinkManagerInterface::MAX_MENU_NAME_LENGTH_UI
+ *   instead.
  */
 const MENU_MAX_MENU_NAME_LENGTH_UI = 27;
 
diff --git a/core/modules/responsive_image/responsive_image.module b/core/modules/responsive_image/responsive_image.module
index 751c19b8d9..3beac056e1 100644
--- a/core/modules/responsive_image/responsive_image.module
+++ b/core/modules/responsive_image/responsive_image.module
@@ -16,6 +16,11 @@
 
 /**
  * The machine name for the empty image breakpoint image style option.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\responsive_image\ResponsiveImageStyleInterface::EMPTY_IMAGE
+ *   and \Drupal\responsive_image\ResponsiveImageStyleInterface::ORIGINAL_IMAGE
+ *   instead.
  */
 const RESPONSIVE_IMAGE_EMPTY_IMAGE = '_empty image_';
 const RESPONSIVE_IMAGE_ORIGINAL_IMAGE = '_original image_';
diff --git a/core/modules/responsive_image/src/ResponsiveImageStyleInterface.php b/core/modules/responsive_image/src/ResponsiveImageStyleInterface.php
index a3fbc7176a..3e1e5c0cf6 100644
--- a/core/modules/responsive_image/src/ResponsiveImageStyleInterface.php
+++ b/core/modules/responsive_image/src/ResponsiveImageStyleInterface.php
@@ -10,6 +10,12 @@
 interface ResponsiveImageStyleInterface extends ConfigEntityInterface {
 
   /**
+   * The machine name for the empty image breakpoint image style option.
+   */
+  const EMPTY_IMAGE = '_empty image_';
+  const ORIGINAL_IMAGE = '_original image_';
+
+  /**
    * Checks if there is at least one mapping defined.
    *
    * @return bool
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index a63744325f..024239032a 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -30,37 +30,58 @@
 
 /**
  * New users will be set to the default time zone at registration.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::TIMEZONE_DEFAULT instead.
  */
 const DRUPAL_USER_TIMEZONE_DEFAULT = 0;
 
 /**
  * New users will get an empty time zone at registration.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::TIMEZONE_EMPTY instead.
  */
 const DRUPAL_USER_TIMEZONE_EMPTY = 1;
 
 /**
  * New users will select their own timezone at registration.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::TIMEZONE_SELECT instead.
  */
 const DRUPAL_USER_TIMEZONE_SELECT = 2;
 
 /**
- * Disabled option on forms and settings
+ * Disabled option on forms and settings.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\Core\Form\FormInterface::DISABLED instead.
  */
 const DRUPAL_DISABLED = 0;
 
 /**
- * Optional option on forms and settings
+ * Optional option on forms and settings.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\Core\Form\FormInterface::OPTIONAL instead.
  */
 const DRUPAL_OPTIONAL = 1;
 
 /**
- * Required option on forms and settings
+ * Required option on forms and settings.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\Core\Form\FormInterface::REQUIRED instead.
  */
 const DRUPAL_REQUIRED = 2;
 
 /**
  * Return only visible regions.
  *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\block\BlockRepositoryInterface::REGIONS_VISIBLE instead.
+ *
  * @see system_region_list()
  */
 const REGIONS_VISIBLE = 'visible';
@@ -68,6 +89,9 @@
 /**
  * Return all regions.
  *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\block\BlockRepositoryInterface::REGIONS_ALL instead.
+ *
  * @see system_region_list()
  */
 const REGIONS_ALL = 'all';
diff --git a/core/modules/update/src/UpdateFetcherInterface.php b/core/modules/update/src/UpdateFetcherInterface.php
index 8d8f2a9f21..e9f441036e 100644
--- a/core/modules/update/src/UpdateFetcherInterface.php
+++ b/core/modules/update/src/UpdateFetcherInterface.php
@@ -8,6 +8,26 @@
 interface UpdateFetcherInterface {
 
   /**
+   * Project's status cannot be checked.
+   */
+  const NOT_CHECKED = -1;
+
+  /**
+   * No available update data was found for project.
+   */
+  const UNKNOWN = -2;
+
+  /**
+   * There was a failure fetching available update data for this project.
+   */
+  const NOT_FETCHED = -3;
+
+  /**
+   * We need to (re)fetch available update data for this project.
+   */
+  const FETCH_PENDING = -4;
+
+  /**
    * Returns the base of the URL to fetch available update data for a project.
    *
    * @param array $project
diff --git a/core/modules/update/src/UpdateManagerInterface.php b/core/modules/update/src/UpdateManagerInterface.php
index d3ea88f492..036138d4e0 100644
--- a/core/modules/update/src/UpdateManagerInterface.php
+++ b/core/modules/update/src/UpdateManagerInterface.php
@@ -8,6 +8,31 @@
 interface UpdateManagerInterface {
 
   /**
+   * Project is missing security update(s).
+   */
+  const NOT_SECURE = 1;
+
+  /**
+   * Current release has been unpublished and is no longer available.
+   */
+  const REVOKED = 2;
+
+  /**
+   * Current release is no longer supported by the project maintainer.
+   */
+  const NOT_SUPPORTED = 3;
+
+  /**
+   * Project has a new release available, but it is not a security release.
+   */
+  const NOT_CURRENT = 4;
+
+  /**
+   * Project is up to date.
+   */
+  const CURRENT = 5;
+
+  /**
    * Fetches an array of installed and enabled projects.
    *
    * This is only responsible for generating an array of projects (taking into
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index f45b5893ea..30c01b70aa 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -16,50 +16,79 @@
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Site\Settings;
 
-// These are internally used constants for this code, do not modify.
+/*
+ * These are internally used constants for this code, do not modify.
+ */
 
 /**
  * Project is missing security update(s).
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateManagerInterface::NOT_SECURE instead.
  */
 const UPDATE_NOT_SECURE = 1;
 
 /**
  * Current release has been unpublished and is no longer available.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateManagerInterface::REVOKED instead.
  */
 const UPDATE_REVOKED = 2;
 
 /**
  * Current release is no longer supported by the project maintainer.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateManagerInterface::NOT_SUPPORTED instead.
  */
 const UPDATE_NOT_SUPPORTED = 3;
 
 /**
  * Project has a new release available, but it is not a security release.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateManagerInterface::NOT_CURRENT instead.
  */
 const UPDATE_NOT_CURRENT = 4;
 
 /**
  * Project is up to date.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateManagerInterface::CURRENT instead.
  */
 const UPDATE_CURRENT = 5;
 
 /**
  * Project's status cannot be checked.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateFetcherInterface::NOT_CHECKED instead.
  */
 const UPDATE_NOT_CHECKED = -1;
 
 /**
  * No available update data was found for project.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateFetcherInterface::UNKNOWN instead.
  */
 const UPDATE_UNKNOWN = -2;
 
 /**
  * There was a failure fetching available update data for this project.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateFetcherInterface::NOT_FETCHED instead.
  */
 const UPDATE_NOT_FETCHED = -3;
 
 /**
  * We need to (re)fetch available update data for this project.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\update\UpdateFetcherInterface::FETCH_PENDING instead.
  */
 const UPDATE_FETCH_PENDING = -4;
 
diff --git a/core/modules/user/src/UserInterface.php b/core/modules/user/src/UserInterface.php
index 1aea757620..291a149a73 100644
--- a/core/modules/user/src/UserInterface.php
+++ b/core/modules/user/src/UserInterface.php
@@ -14,6 +14,44 @@
 interface UserInterface extends ContentEntityInterface, EntityChangedInterface, AccountInterface {
 
   /**
+   * Maximum length of username text field.
+   *
+   * Keep this under 191 characters so we can use a unique constraint in MySQL.
+   */
+  const USERNAME_MAX_LENGTH = 60;
+
+  /**
+   * Only administrators can create user accounts.
+   */
+  const REGISTER_ADMINISTRATORS_ONLY = 'admin_only';
+
+  /**
+   * Visitors can create their own accounts.
+   */
+  const REGISTER_VISITORS = 'visitors';
+
+  /**
+   * Visitors can create accounts, but they don't become active without
+   * administrative approval.
+   */
+  const REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL = 'visitors_admin_approval';
+
+  /**
+   * New users will be set to the default time zone at registration.
+   */
+  const TIMEZONE_DEFAULT = 0;
+
+  /**
+   * New users will get an empty time zone at registration.
+   */
+  const TIMEZONE_EMPTY = 1;
+
+  /**
+   * New users will select their own timezone at registration.
+   */
+  const TIMEZONE_SELECT = 2;
+
+  /**
    * Whether a user has a certain role.
    *
    * @param string $rid
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 90b813f6a6..00205a6249 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -28,22 +28,35 @@
  * Maximum length of username text field.
  *
  * Keep this under 191 characters so we can use a unique constraint in MySQL.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::USERNAME_MAX_LENGTH instead.
  */
 const USERNAME_MAX_LENGTH = 60;
 
 /**
  * Only administrators can create user accounts.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::REGISTER_ADMINISTRATORS_ONLY instead.
  */
 const USER_REGISTER_ADMINISTRATORS_ONLY = 'admin_only';
 
 /**
  * Visitors can create their own accounts.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::REGISTER_VISITORS instead.
  */
 const USER_REGISTER_VISITORS = 'visitors';
 
 /**
  * Visitors can create accounts, but they don't become active without
  * administrative approval.
+ *
+ * @deprecated in Drupal 8.3.x and will be removed before Drupal 9.0.0.
+ *   Use \Drupal\user\UserInterface::REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL
+ * instead.
  */
 const USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL = 'visitors_admin_approval';
 
