Index: wp-admin/includes/schema.php
===================================================================
--- wp-admin/includes/schema.php	(revision 20143)
+++ wp-admin/includes/schema.php	(working copy)
@@ -364,6 +364,8 @@
 	'blogname' => __('My Site'),
 	/* translators: blog tagline */
 	'blogdescription' => __('Just another WordPress site'),
+	/* translators: default meta description of the site */
+	'metadescription' => __(''),
 	'users_can_register' => 0,
 	'admin_email' => 'you@example.com',
 	/* translators: default start of the week. 0 = Sunday, 1 = Monday */
Index: wp-admin/options-general.php
===================================================================
--- wp-admin/options-general.php	(revision 20143)
+++ wp-admin/options-general.php	(working copy)
@@ -59,7 +59,7 @@
 add_action('admin_head', 'add_js');
 
 $options_help = '<p>' . __('The fields on this screen determine some of the basics of your site setup.') . '</p>' .
-	'<p>' . __('Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes.') . '</p>';
+	'<p>' . __('Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes. The description is used by themes to provide information about the site to search engines.') . '</p>';
 
 if ( ! is_multisite() ) {
 	$options_help .= '<p>' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '</p>' .
@@ -101,6 +101,11 @@
 <td><input name="blogdescription" type="text" id="blogdescription" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
 <span class="description"><?php _e('In a few words, explain what this site is about.') ?></span></td>
 </tr>
+<tr valign="top">
+<th scope="row"><label for="metadescription"><?php _e('Description') ?></label></th>
+<td><input name="metadescription" type="text" id="metadescription" value="<?php form_option('metadescription'); ?>" class="regular-text" />
+<span class="description"><?php _e('In short plain language, describe this blog for search engines.') ?></span></td>
+</tr>
 <?php if ( !is_multisite() ) { ?>
 <tr valign="top">
 <th scope="row"><label for="siteurl"><?php _e('WordPress Address (URL)') ?></label></th>
@@ -326,4 +331,4 @@
 
 </div>
 
-<?php include('./admin-footer.php') ?>
+<?php include('./admin-footer.php') ?>
\ No newline at end of file
Index: wp-admin/options.php
===================================================================
--- wp-admin/options.php	(revision 20143)
+++ wp-admin/options.php	(working copy)
@@ -59,7 +59,7 @@
 	wp_die(__('Cheatin&#8217; uh?'));
 
 $whitelist_options = array(
-	'general' => array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ),
+	'general' => array( 'blogname', 'blogdescription', 'metadescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ),
 	'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ),
 	'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type', 'embed_autourls', 'embed_size_w', 'embed_size_h' ),
 	'privacy' => array( 'blog_public' ),
Index: wp-includes/class-wp-customize.php
===================================================================
--- wp-includes/class-wp-customize.php	(revision 20143)
+++ wp-includes/class-wp-customize.php	(working copy)
@@ -599,10 +599,10 @@
 			'capability'     => 'manage_options'
 		) );
 
-		/* Site Title & Tagline */
+		/* Site Title, Tagline & Description*/
 
 		$this->add_section( 'strings', array(
-			'title'          => __( 'Site Title & Tagline' ),
+			'title'          => __( 'Site Title, Tagline & Description' ),
 			'description'    => __( 'Customize some strings.' ),
 		) );
 
@@ -621,6 +621,14 @@
 			'type'           => 'option',
 			'capability'     => 'manage_options'
 		) );
+
+		$this->add_setting( 'metadescription', array(
+			'label'          => __( 'Description' ),
+			'section'        => 'strings',
+			'default'        => get_option( 'metadescription' ),
+			'type'           => 'option',
+			'capability'     => 'manage_options'
+		) );
 	}
 };
 
Index: wp-includes/class-wp-xmlrpc-server.php
===================================================================
--- wp-includes/class-wp-xmlrpc-server.php	(revision 20143)
+++ wp-includes/class-wp-xmlrpc-server.php	(working copy)
@@ -359,6 +359,11 @@
 				'readonly'      => false,
 				'option'        => 'blogdescription'
 			),
+			'blog_description'      => array(
+				'desc'          => __( 'Site Description' ),
+				'readonly'      => false,
+				'option'        => 'metadescription'
+			),
 			'date_format'       => array(
 				'desc'          => __( 'Date Format' ),
 				'readonly'      => false,
Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 20143)
+++ wp-includes/default-filters.php	(working copy)
@@ -208,6 +208,7 @@
 add_action( 'wp_head',             'wp_print_styles',                  8    );
 add_action( 'wp_head',             'wp_print_head_scripts',            9    );
 add_action( 'wp_head',             'wp_generator'                           );
+add_action( 'wp_head',             'wp_meta_description'                     );
 add_action( 'wp_head',             'rel_canonical'                          );
 add_action( 'wp_footer',           'wp_print_footer_scripts',         20    );
 add_action( 'wp_head',             'wp_shortlink_wp_head',            10, 0 );
Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 20143)
+++ wp-includes/formatting.php	(working copy)
@@ -2675,6 +2675,7 @@
 				$value = 'closed';
 			break;
 
+		case 'metadescription':
 		case 'blogdescription':
 		case 'blogname':
 			$value = addslashes($value);
Index: wp-includes/general-template.php
===================================================================
--- wp-includes/general-template.php	(revision 20143)
+++ wp-includes/general-template.php	(working copy)
@@ -412,6 +412,9 @@
 		case 'description':
 			$output = get_option('blogdescription');
 			break;
+		case 'metadescription':
+			$output = get_option('metadescription');
+			break;
 		case 'rdf_url':
 			$output = get_feed_link('rdf');
 			break;
@@ -2212,6 +2215,90 @@
 }
 
 /**
+ * Display the XHTML description that is generated on the wp_head hook.
+ *
+ * @since 2.5.0
+ */
+function wp_meta_description() {
+	the_meta_description( apply_filters( 'wp_meta_description_type', 'xhtml' ) );
+}
+
+/**
+ * Display the description XML or Comment
+ *
+ * Returns the description supplied in the general settings
+ *
+ * @since 3.4.0
+ * @uses apply_filters() Calls 'the_meta_description' hook.
+ *
+ * @param string $type The type of generator to output - (html|xhtml|comment).
+ */
+function the_meta_description( $type ) {
+	echo apply_filters('the_meta_description', get_the_meta_description($type), $type) . "\n";
+}
+
+/**
+ * Creates the description XML or Comment
+ *
+ * Returns the description supplied in the general settings. Allows
+ * for a plugin to filter generators on an individual basis using the
+ * 'get_the_meta_description_{$type}' filter.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'get_the_meta_description_$type' hook.
+ *
+ * @param string $type The type of generator to return - (html|xhtml|comment).
+ * @return string The metadescription option value in the form requested
+ */
+function get_the_meta_description( $type = '' ) {
+	if ( empty( $type ) ) {
+
+		$current_filter = current_filter();
+		if ( empty( $current_filter ) )
+			return;
+
+		switch ( $current_filter ) {
+			case 'rss2_head' :
+			case 'commentsrss2_head' :
+				$type = 'rss2';
+				break;
+			case 'rss_head' :
+			case 'opml_head' :
+				$type = 'comment';
+				break;
+			case 'rdf_header' :
+				$type = 'rdf';
+				break;
+			case 'atom_head' :
+			case 'comments_atom_head' :
+			case 'app_head' :
+				$type = 'atom';
+				break;
+		}
+	}
+
+	$rawdescription = get_bloginfo( 'metadescription' );
+	
+	if ( $rawdescription > '' ) {
+		switch ( $type ) {
+			case 'html':
+				$desc = '<meta name="description" content="' . esc_attr( $rawdescription ) . '">';
+				break;
+			case 'xhtml':
+				$desc = '<meta name="description" content="' . esc_attr( $rawdescription ) . '">';
+				break;
+			case 'comment':
+				$desc = '<!-- description="' . esc_attr( $rawdescription ). '" -->';
+				break;
+		}
+	} else {
+		$desc = '';
+	}
+	
+	return apply_filters( "get_the_meta_description_{$type}", $desc, $type );
+}
+
+/**
  * Outputs the html checked attribute.
  *
  * Compares the first two arguments and if identical marks as checked
