Index: src/wp-admin/includes/class-wp-plugin-install-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-plugin-install-list-table.php	(revision 29010)
+++ src/wp-admin/includes/class-wp-plugin-install-list-table.php	(working copy)
@@ -74,6 +74,9 @@
 					case 'tag':
 						$args['tag'] = sanitize_title_with_dashes( $term );
 						break;
+					case 'category':
+						$args['category'] = sanitize_title_with_dashes( $term );
+						break;
 					case 'term':
 						$args['search'] = $term;
 						break;
Index: src/wp-admin/includes/plugin-install.php
===================================================================
--- src/wp-admin/includes/plugin-install.php	(revision 29010)
+++ src/wp-admin/includes/plugin-install.php	(working copy)
@@ -125,35 +125,113 @@
 }
 
 function install_dashboard() {
-	?>
-	<p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="%1$s">WordPress Plugin Directory</a> or upload a plugin in .zip format via <a href="%2$s">this page</a>.' ), 'https://wordpress.org/plugins/', self_admin_url( 'plugin-install.php?tab=upload' ) ); ?></p>
+?>
+	<div class="tablenav top">
+		<div class="alignleft actions">
+			<?php install_search_form( false ); ?>
+		</div>
+	</div>
+	<div class="plugin-install-wrap">
+	
+		<?php install_category_list(); ?>
+		
+		<div class="top-plugins">
+			<div class="featured-plugins plugins-list">
+				<h4><?php _e( 'Featured plugins' ); ?></h4>
+				<?php install_short_plugin_list( 'featured' ); ?>
+			</div>
+	
+			<div class="popular-plugins plugins-list">
+				<h4><?php _e( 'Popular plugins' ); ?></h4>
+				<?php install_short_plugin_list( 'popular' ); ?>
+			</div>
 
-	<h4><?php _e('Search') ?></h4>
-	<?php install_search_form( false ); ?>
+			<br class="clear" />
+		</div>
+	</div>
+<?php
+}
+add_action('install_plugins_dashboard', 'install_dashboard');
 
-	<h4><?php _e('Popular tags') ?></h4>
-	<p class="install-help"><?php _e('You may also browse based on the most popular tags in the Plugin Directory:') ?></p>
-	<?php
+/**
+ * Display a brief unordered list of plugins.
+ */
+function install_short_plugin_list( $type, $limit = 10 ) {
+	$limit = intval( $limit );
+	if ( $limit < 1 )
+		$limit = 1;
+		
+	$key = "short_plugin_list_{$type}_{$limit}";
+	$api = get_site_transient( $key );
 
-	$api_tags = install_popular_tags();
+	if ( !$api ) {
+		$api = plugins_api( 'query_plugins', array( 'browse' => $type, 'page' => 1, 'per_page' => $limit ) );
+	
+		if ( is_wp_error( $api ) ) {
+			echo '<p>' . $api->get_error_message() . '</p>';
+			return $api;
+		}
+		set_site_transient( $key, $api, 3 * HOUR_IN_SECONDS );
+	}
+	
+	echo '<ul class="'.esc_attr( $type ).'-plugins">';
+	foreach ( $api->plugins as $plugin ) {
+		echo '<li>';
+		echo '<a href="' . self_admin_url( 'plugin-install.php?tab=plugin-information&amp;plugin=' . $plugin->slug .
+							'&amp;TB_iframe=true&amp;width=600&amp;height=550' ) . '" class="thickbox" title="' .
+							esc_attr( sprintf( __( 'More information about %s' ), $plugin->name ) ) . '">' . esc_html( $plugin->name ) . '</a>';
+		echo '</li>';
+	}
+	echo '</ul>';
+}
 
-	echo '<p class="popular-tags">';
-	if ( is_wp_error($api_tags) ) {
-		echo $api_tags->get_error_message();
-	} else {
-		//Set up the tags in a way which can be interpreted by wp_generate_tag_cloud()
-		$tags = array();
-		foreach ( (array)$api_tags as $tag )
-			$tags[ $tag['name'] ] = (object) array(
-									'link' => esc_url( self_admin_url('plugin-install.php?tab=search&type=tag&s=' . urlencode($tag['name'])) ),
-									'name' => $tag['name'],
-									'id' => sanitize_title_with_dashes($tag['name']),
-									'count' => $tag['count'] );
-		echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%s plugin'), 'multiple_text' => __('%s plugins') ) );
+/**
+ * Return a list of plugin categories.
+ */
+function install_get_category_list( $args = array() ) {
+	$key = md5(serialize($args));
+	if ( false !== ($categories = get_site_transient('plugin_categories_' . $key) ) )
+		return $categories;
+
+	$categories = plugins_api('hot_categories', $args);
+
+	if ( is_wp_error($categories) )
+		return $categories;
+
+	set_site_transient( 'plugin_categories_' . $key, $categories, 3 * HOUR_IN_SECONDS );
+
+	return $categories;
+}
+
+/**
+ * Display a list of plugin categories.
+ */
+function install_category_list() {
+	
+	$categories = install_get_category_list();
+	$categories = array_values( $categories );
+	
+	echo '<div class="plugin-categories">';
+	for ( $i=0; $i < 4; $i++ ) {
+		echo '<div class="plugin-category-big">';
+		echo '<a href="' . esc_url( self_admin_url('plugin-install.php?tab=search&type=category&s=' . urlencode($categories[$i]['name'])) ) . '">';
+		echo esc_html( $categories[ $i ]['name'] );
+		echo '</a>';
+		echo '</div>';
 	}
-	echo '</p><br class="clear" />';
+	echo '<br class="clear" />';
+	for ( $i=4; $i < 8; $i++ ) {
+		echo '<div class="plugin-category-small">';
+		echo '<a href="' . esc_url( self_admin_url('plugin-install.php?tab=search&type=category&s=' . urlencode($categories[$i]['name'])) ) . '">';
+		echo esc_html( $categories[ $i ]['name'] );
+		echo '</a>';
+		echo '</div>';
+	}
+	
+	echo '</div>';
+	echo '<br class="clear" />';
+	
 }
-add_action('install_plugins_dashboard', 'install_dashboard');
 
 /**
  * Display search form for searching plugins.
@@ -171,6 +249,7 @@
 			<option value="term"<?php selected('term', $type) ?>><?php _e('Keyword'); ?></option>
 			<option value="author"<?php selected('author', $type) ?>><?php _e('Author'); ?></option>
 			<option value="tag"<?php selected('tag', $type) ?>><?php _ex('Tag', 'Plugin Installer'); ?></option>
+			<option value="category"<?php selected('category', $type) ?>><?php _ex('Category', 'Plugin Installer'); ?></option>
 		</select>
 		<?php endif; ?>
 		<input type="search" name="s" value="<?php echo esc_attr($term) ?>" autofocus="autofocus" />
@@ -187,14 +266,16 @@
  */
 function install_plugins_upload( $page = 1 ) {
 ?>
-	<h4><?php _e('Install a plugin in .zip format'); ?></h4>
-	<p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.'); ?></p>
-	<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-plugin'); ?>">
-		<?php wp_nonce_field( 'plugin-upload'); ?>
-		<label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
-		<input type="file" id="pluginzip" name="pluginzip" />
-		<?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
-	</form>
+	<div class="plugin-install-wrap">
+		<h4><?php _e('Install a plugin in .zip format'); ?></h4>
+		<p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.'); ?></p>
+		<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-plugin'); ?>">
+			<?php wp_nonce_field( 'plugin-upload'); ?>
+			<label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
+			<input type="file" id="pluginzip" name="pluginzip" />
+			<?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
+		</form>
+	</div>
 <?php
 }
 add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
Index: src/wp-admin/plugin-install.php
===================================================================
--- src/wp-admin/plugin-install.php	(revision 29010)
+++ src/wp-admin/plugin-install.php	(working copy)
@@ -29,6 +29,7 @@
 $title = __('Install Plugins');
 $parent_file = 'plugins.php';
 
+wp_enqueue_style( 'plugins' );
 wp_enqueue_script( 'plugin-install' );
 if ( 'plugin-information' != $tab )
 	add_thickbox();
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 29010)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -607,6 +607,7 @@
 	$styles->add( 'wp-admin',           "/wp-admin/css/wp-admin$suffix.css", array( 'open-sans', 'dashicons' ) );
 	$styles->add( 'login',              "/wp-admin/css/login$suffix.css", array( 'buttons', 'open-sans', 'dashicons' ) );
 	$styles->add( 'install',            "/wp-admin/css/install$suffix.css", array( 'buttons', 'open-sans' ) );
+	$styles->add( 'plugins',            "/wp-admin/css/plugins$suffix.css" );
 	$styles->add( 'wp-color-picker',    "/wp-admin/css/color-picker$suffix.css" );
 	$styles->add( 'customize-controls', "/wp-admin/css/customize-controls$suffix.css", array( 'wp-admin', 'colors', 'ie', 'imgareaselect' ) );
 	$styles->add( 'customize-widgets',  "/wp-admin/css/customize-widgets$suffix.css", array( 'wp-admin', 'colors' ) );
