Index: src/wp-includes/widgets/class-wp-author-widget.php
===================================================================
--- src/wp-includes/widgets/class-wp-author-widget.php	(revision 0)
+++ src/wp-includes/widgets/class-wp-author-widget.php	(working copy)
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * Author Widget class
+ *
+ * @since 4.4.0
+ */
+class WP_Author_Widget extends WP_Widget {
+	public function __construct() {
+		parent::__construct( 'authors', __( 'Authors' ), array(
+				'classname'   => 'author_widget',
+				'description' => __( "Display blog's authors with avatars and archive links." ),
+			),
+			array(
+				'width' => 300,
+			)
+		);
+
+		add_action( 'save_post',      array( $this, 'flush_widget_cache' ) );
+		add_action( 'deleted_post',   array( $this, 'flush_widget_cache' ) );
+		add_action( 'switch_theme',   array( $this, 'flush_widget_cache' ) );
+		add_action( 'profile_update', array( $this, 'flush_widget_cache' ) );
+
+		if ( is_active_widget( false, false, $this->id_base ) ) {
+			add_action( 'wp_head', array( $this, 'author_style' ) );
+		}
+	}
+
+	public function widget( $args, $instance ) {
+		$cache = get_transient( 'author_widget_' . $this->id );
+
+		if ( ! empty( $cache ) ) {
+			echo $cache;
+			return;
+		}
+
+		$authors = get_users( array(
+			'fields' => array( 'ID', 'user_nicename', 'display_name' ),
+			'who'    => 'authors',
+		) );
+
+		$widget = $args['before_widget'];
+		if ( ! empty( $instance['title'] ) ) {
+			$widget .= $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
+		}
+		$widget .= '<ul>';
+
+		foreach ( $authors as $author ) {
+			if ( ! $instance['all'] && ! count_user_posts( $author->ID ) ) {
+				continue;
+			}
+
+			$avatar  = ( $instance['avatar_size'] > 0 ) ? get_avatar( $author->ID, $instance['avatar_size'] ) : '';
+			$widget .= sprintf(
+				'<li><a href="%1$s">%2$s<strong>%3$s</strong></a></li>',
+				esc_url( get_author_posts_url( $author->ID, $author->user_nicename ) ),
+				$avatar,
+				esc_html( $author->display_name )
+			);
+		}
+
+		$widget .= '</ul>';
+		$widget .= $args['after_widget'];
+
+		echo $widget;
+
+		set_transient( 'author_widget_' . $this->id, $widget, DAY_IN_SECONDS );
+	}
+
+	public function flush_widget_cache() {
+		delete_transient( 'author_widget_' . $this->id );
+	}
+
+	public function update( $new_instance, $old_instance ) {
+		$new_instance['title']       = strip_tags( $new_instance['title'] );
+		$new_instance['all']         = isset( $new_instance['all'] );
+		$new_instance['avatar_size'] = (int) $new_instance['avatar_size'];
+
+		$this->flush_widget_cache();
+
+		return $new_instance;
+	}
+
+	public function form( $instance ) {
+		$instance = wp_parse_args( $instance, array(
+			'title'       => '',
+			'all'         => false,
+			'avatar_size' => 48,
+		) );
+
+		?>
+		<p>
+			<label>
+				<?php _e( 'Title:' ); ?>
+				<input class="widefat" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $instance['title'] ); ?>" />
+			</label>
+		</p>
+		<p>
+			<label>
+				<input class="checkbox" type="checkbox" <?php checked( $instance['all'] ); ?> name="<?php echo $this->get_field_name( 'all' ); ?>" />
+				<?php _e( 'Include authors who have not written any posts' ); ?>
+			</label>
+		</p>
+		<p>
+			<label>
+				<?php _e( 'Avatar Size (px):' ); ?>
+				<select name="<?php echo $this->get_field_name( 'avatar_size' ); ?>">
+					<?php foreach ( array( '0' => __( 'No Avatars' ), '16' => '16x16', '32' => '32x32', '48' => '48x48', '96' => '96x96', '128' => '128x128' ) as $value => $label ) : ?>
+						<option value="<?php echo esc_attr( $value ); ?>" <?php selected( $value, $instance['avatar_size'] ); ?>><?php echo esc_html( $label ); ?></option>
+					<?php endforeach; ?>
+				</select>
+			</label>
+		</p>
+		<?php
+	}
+
+	public function author_style() {
+		if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876
+			|| ! apply_filters( 'show_author_widget_style', true, $this->id_base ) ) {
+			return;
+		}
+		?>
+		<style type="text/css">
+			.author_widget .avatar {
+				vertical-align: middle !important;
+			}
+			.author_widget .avatar-16 {
+				margin-right: 5px;
+			}
+			.author_widget .avatar + strong {
+				display: block;
+				margin: 5px 0;
+			}
+			.author_widget .avatar-16 + strong {
+				display: inline;
+				margin: 0;
+			}
+		</style>
+		<?php
+	}
+}
\ No newline at end of file
Index: src/wp-includes/widgets.php
===================================================================
--- src/wp-includes/widgets.php	(revision 36505)
+++ src/wp-includes/widgets.php	(working copy)
@@ -1467,6 +1467,8 @@
 
 	register_widget('WP_Nav_Menu_Widget');
 
+	register_widget( 'WP_Author_Widget' );
+
 	/**
 	 * Fires after all default WordPress widgets have been registered.
 	 *
