Index: src/wp-admin/css/common.css
===================================================================
--- src/wp-admin/css/common.css	(revision 41820)
+++ src/wp-admin/css/common.css	(working copy)
@@ -764,6 +764,7 @@
 
 /* @todo can we combine these into a class or use an existing dashicon one? */
 .welcome-panel .welcome-panel-close:before,
+.try-gutenberg-panel .try-gutenberg-panel-close:before,
 .tagchecklist .ntdelbutton .remove-tag-icon:before,
 #bulk-titles div a:before,
 .notice-dismiss:before {
Index: src/wp-admin/css/dashboard.css
===================================================================
--- src/wp-admin/css/dashboard.css	(revision 41820)
+++ src/wp-admin/css/dashboard.css	(working copy)
@@ -98,7 +98,8 @@
 }
 
 /* Welcome Panel */
-.welcome-panel {
+.welcome-panel,
+.try-gutenberg-panel {
 	position: relative;
 	overflow: auto;
 	margin: 16px 0;
@@ -110,14 +111,16 @@
 	line-height: 2.1em;
 }
 
-.welcome-panel h2 {
+.welcome-panel h2,
+.try-gutenberg-panel h2 {
 	margin: 0;
 	font-size: 21px;
 	font-weight: 400;
 	line-height: 1.2;
 }
 
-.welcome-panel h3 {
+.welcome-panel h3,
+.try-gutenberg-panel h3 {
 	margin: 1.33em 0 0;
 	font-size: 16px;
 }
@@ -126,20 +129,24 @@
 	font-size: 14px;
 }
 
-.welcome-panel p {
+.welcome-panel p,
+.try-gutenberg-panel p {
 	color: #72777c;
 }
 
-.welcome-panel a {
+.welcome-panel a,
+.try-gutenberg-panel a {
 	text-decoration: none;
 }
 
-.welcome-panel .about-description {
+.welcome-panel .about-description,
+.try-gutenberg-panel .about-description {
 	font-size: 16px;
 	margin: 0;
 }
 
-.welcome-panel .welcome-panel-close {
+.welcome-panel .welcome-panel-close,
+.try-gutenberg-panel .try-gutenberg-panel-close {
 	position: absolute;
 	top: 10px;
 	right: 10px;
@@ -149,7 +156,8 @@
 	text-decoration: none;
 }
 
-.welcome-panel .welcome-panel-close:before {
+.welcome-panel .welcome-panel-close:before,
+.try-gutenberg-panel .try-gutenberg-panel-close:before {
 	position: absolute;
 	top: 8px;
 	left: 0;
@@ -164,11 +172,23 @@
 	white-space: normal;
 }
 
-.welcome-panel-content {
-	margin-left: 13px;
+.welcome-panel-content,
+.try-gutenberg-panel-content {
+	margin: 0 13px;
 	max-width: 1500px;
 }
 
+.try-gutenberg-panel img {
+	width: 400px;
+	float: left;
+	padding: 0 20px 20px 0;
+}
+
+.try-gutenberg-panel .install-now.updating-message:before,
+.try-gutenberg-panel .install-now.updated-message:before {
+	margin-top: 11px;
+}
+
 .welcome-panel .welcome-panel-column-container {
 	clear: both;
 	position: relative;
@@ -1224,6 +1244,11 @@
 		margin: 0.4em 0 0;
 	}
 
+	.try-gutenberg-panel img {
+		padding-top: 15px;
+		width: 100%;
+	}
+
 }
 
 @media screen and ( max-width: 782px ) {
@@ -1266,7 +1291,8 @@
 /* Smartphone */
 @media screen and (max-width: 600px) {
 	/* Keep the close icon from overlapping the Welcome text. */
-	.welcome-panel .welcome-panel-close {
+	.welcome-panel .welcome-panel-close,
+	.try-gutenberg-panel .try-gutenberg-panel-close {
 		overflow: hidden;
 		text-indent: 40px;
 		white-space: nowrap;
@@ -1278,7 +1304,8 @@
 	}
 
 	/* Make the close icon larger for tappability. */
-	.welcome-panel .welcome-panel-close:before {
+	.welcome-panel .welcome-panel-close:before,
+	.try-gutenberg-panel .try-gutenberg-panel-close:before {
 		font-size: 20px;
 		top: 5px;
 		left: -35px;
Index: src/wp-admin/includes/dashboard.php
===================================================================
--- src/wp-admin/includes/dashboard.php	(revision 41820)
+++ src/wp-admin/includes/dashboard.php	(working copy)
@@ -1619,3 +1619,39 @@
 	</div>
 	<?php
 }
+
+/**
+ * Displays a Try Gutenberg Panel, to introduce people to Gutenberg
+ *
+ * @since 4.9.0
+ */
+function wp_try_gutenberg_panel() {
+	$plugins = get_plugins();
+	$action = $url = $classes = '';
+
+	if ( current_user_can( 'install_plugins' ) && empty( $plugins['gutenberg/gutenberg.php'] ) ) {
+		$action = __( 'Download today' );
+		$url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=gutenberg' ), 'install-plugin_gutenberg' );
+		$classes = ' install-now';
+	} else if ( current_user_can( 'install_plugins' ) && is_plugin_inactive( 'gutenberg/gutenberg.php' ) ) {
+		$action = __( 'Activate today' );
+		$url = wp_nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=gutenberg/gutenberg.php' ), 'activate-plugin_gutenberg/gutenberg.php' );
+	} else if ( current_user_can( 'edit_posts' ) ) {
+		$action = __( 'Try today' );
+		$url = admin_url( 'admin.php?page=gutenberg' );
+	}
+
+	?>
+	<div id="plugin-filter" class="try-gutenberg-panel-content plugin-card-gutenberg">
+		<img src="https://wordpress.org/gutenberg/files/2017/08/colimage-Gutenberg-1.gif" alt="" />
+		<h2><?php _e( 'Try the new editing experience' ); ?></h2>
+		<p class="about-description"><?php _e( 'Discover the project codenamed Gutenberg today' ); ?></p>
+		<?php if ( $action ) { ?>
+			<p><a class="button button-primary button-hero<?php echo $classes; ?>" data-slug="gutenberg" href="<?php echo esc_url( $url ); ?>"><?php echo $action; ?></a></p>
+		<?php } ?>
+		<h3><?php _e( 'Want to get involved?' ); ?></h3>
+		<p><?php printf( __( 'Learn more about this project <a href="%s">right here</a>.' ), 'https://wordpress.org/gutenberg/' ); ?></p>
+		<p><?php printf( __( 'Help <a href="%1$s">with testing</a>, or contribute on the <a href="%2$s">GitHub repository</a>.' ), '', 'https://github.com/WordPress/gutenberg/' ); ?></p>
+	</div>
+	<?php
+}
Index: src/wp-admin/index.php
===================================================================
--- src/wp-admin/index.php	(revision 41820)
+++ src/wp-admin/index.php	(working copy)
@@ -103,6 +103,33 @@
 <div class="wrap">
 	<h1><?php echo esc_html( $title ); ?></h1>
 
+	<?php if ( has_action( 'try_gutenberg_panel' ) ) :
+	$classes = 'try-gutenberg-panel';
+
+	$option = get_user_meta( get_current_user_id(), 'show_try_gutenberg_panel', true );
+	echo $option;
+	// 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner
+	$hide = 0 === $option || ( 2 === $option && wp_get_current_user()->user_email !== get_option( 'admin_email' ) );
+	if ( $hide )
+		$classes .= ' hidden'; ?>
+
+	<div id="gutenpanel" class="<?php echo esc_attr( $classes ); ?>">
+		<?php wp_nonce_field( 'try-gutenberg-panel-nonce', 'trygutenbergpanelnonce', false ); ?>
+		<a class="try-gutenberg-panel-close" href="<?php echo esc_url( admin_url( '?try_gutenberg=0' ) ); ?>" aria-label="<?php esc_attr_e( 'Dismiss the Try Gutenberg panel' ); ?>"><?php _e( 'Dismiss' ); ?></a>
+		<?php
+		/**
+		 * Add content to the Try Gutenberg panel on the admin dashboard.
+		 *
+		 * To remove the Try Gutenberg panel, use remove_action():
+		 *
+		 *     remove_action( 'try_gutenberg_panel', 'wp_try_gutenberg_panel' );
+		 *
+		 * @since 4.9.0
+		 */
+		do_action( 'try_gutenberg_panel' );
+		?>
+	</div>
+<?php endif; ?>
 <?php if ( has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) :
 	$classes = 'welcome-panel';
 
Index: src/wp-admin/js/updates.js
===================================================================
--- src/wp-admin/js/updates.js	(revision 41820)
+++ src/wp-admin/js/updates.js	(working copy)
@@ -585,10 +585,18 @@
 
 		$message
 			.removeClass( 'updating-message' )
-			.addClass( 'updated-message installed button-disabled' )
+			.addClass( 'updated-message installed' )
 			.attr( 'aria-label', wp.updates.l10n.pluginInstalledLabel.replace( '%s', response.pluginName ) )
 			.text( wp.updates.l10n.pluginInstalled );
 
+		if ( $message.hasClass( 'button-primary' ) ) {
+			$message.addClass( 'button-primary-disabled' );
+		} else if ( $message.hasClass( 'button-secondary' ) ) {
+			$message.addClass( 'button-secondary-disabled' );
+		} else {
+			$message.addClass( 'button-disabled' );
+		}
+
 		wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
 
 		$document.trigger( 'wp-plugin-install-success', response );
@@ -597,7 +605,8 @@
 			setTimeout( function() {
 
 				// Transform the 'Install' button into an 'Activate' button.
-				$message.removeClass( 'install-now installed button-disabled updated-message' ).addClass( 'activate-now button-primary' )
+				$message.removeClass( 'install-now installed button-primary-disabled button-secondary-disabled button-disabled updated-message' )
+					.addClass( 'activate-now button-primary' )
 					.attr( 'href', response.activateUrl )
 					.attr( 'aria-label', wp.updates.l10n.activatePluginLabel.replace( '%s', response.pluginName ) )
 					.text( wp.updates.l10n.activatePlugin );
Index: src/wp-includes/default-filters.php
===================================================================
--- src/wp-includes/default-filters.php	(revision 41820)
+++ src/wp-includes/default-filters.php	(working copy)
@@ -322,6 +322,7 @@
 add_action( 'admin_init',                 'send_frame_options_header',               10, 0 );
 add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment'                           );
 add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment'                           );
+add_action( 'try_gutenberg_panel',        'wp_try_gutenberg_panel'                         );
 add_action( 'welcome_panel',              'wp_welcome_panel'                               );
 
 // Navigation menu actions
