Index: bp-activity/bp-activity-functions.php
===================================================================
--- bp-activity/bp-activity-functions.php
+++ bp-activity/bp-activity-functions.php
@@ -1201,7 +1201,7 @@ function bp_activity_new_comment( $args = '' ) {
 	// Clear the comment cache for this activity
 	wp_cache_delete( 'bp_activity_comments_' . $parent_id );
 
-	do_action( 'bp_activity_comment_posted', $comment_id, $params );
+	do_action( 'bp_activity_comment_posted', $comment_id, $params, $activity );
 
 	return $comment_id;
 }
@@ -1658,7 +1658,6 @@ function bp_activity_mark_as_ham( &$activity, $source = 'by_a_person' ) {
 	do_action( 'bp_activity_mark_as_ham', $activity, $source );
 }
 
-
 /** Embeds *******************************************************************/
 
 /**
Index: bp-blogs/bp-blogs-activity.php
===================================================================
--- bp-blogs/bp-blogs-activity.php
+++ bp-blogs/bp-blogs-activity.php
@@ -128,3 +128,139 @@ function bp_blogs_delete_activity( $args = true ) {
 		'secondary_item_id' => $secondary_item_id
 	) );
 }
+
+/**
+ * Syncs activity comments and posts them back as blog comments.
+ *
+ * Note: This is only a one-way sync - activity comments -> blog comment.
+ *
+ * For example, if a blog comment is made from a blog post page, that comment
+ * will *not* be added into the nested blog post's activity item.  It will
+ * create a new activity entry.  This needs additional R&D.
+ *
+ * @since BuddyPress (1.9)
+ *
+ * @param int $comment_id The activity ID for the posted activity comment.
+ * @param array $params Parameters for the activity comment.
+ * @param obj Parameters of the parent activity item (in this case, the blog post).
+ */
+function bp_blogs_sync_add_from_activity_comment( $comment_id, $params, $parent_activity ) {
+	// if parent activity isn't a blog post, stop now!
+	if ( $parent_activity->type != 'new_blog_post' ) {
+		return;
+	}
+
+	// if activity comments are disabled for blog posts, stop now!
+	//
+	// not using bp_disable_blogforum_comments() as that uses bp_get_option(),
+	// which would suck on multisite installs.
+	$cannot_comment = isset( buddypress()->site_options['bp-disable-blogforum-comments'] ) ? buddypress()->site_options['bp-disable-blogforum-comments'] : false;
+
+	// if cannot comment, stop now!
+	if ( $cannot_comment ) {
+		return;
+	}
+
+	// get userdata
+	if ( $params['user_id'] == bp_loggedin_user_id() ) {
+		$user = buddypress()->loggedin_user->userdata;
+	} else {
+		$user = bp_core_get_core_userdata( $params['user_id'] );
+	}
+
+	// see if a parent WP comment ID exists
+	if ( ! empty( $params['parent_id'] ) ) {
+		$comment_parent = bp_activity_get_meta( $params['parent_id'], 'bp_blogs_post_comment_id' );
+	} else {
+		$comment_parent = 0;
+	}
+
+	// comment args
+	$args = array(
+		'comment_post_ID'      => $parent_activity->secondary_item_id,
+
+		// should this use display name?
+		// using username for now
+		'comment_author'       => bp_core_get_username( $params['user_id'], $user->user_nicename, $user->user_login ),
+
+		'comment_author_email' => $user->user_email,
+		'comment_author_url'   => bp_core_get_user_domain( $params['user_id'], $user->user_nicename, $user->user_login ),
+		'comment_content'      => $params['content'],
+		'comment_type'         => '', // could be interesting to add 'buddypress' here...
+		'comment_parent'       => (int) $comment_parent,
+		'user_id'              => $params['user_id'],
+
+		// commenting these out for now
+		//'comment_author_IP'    => '127.0.0.1',
+		//'comment_agent'        => '',
+
+		'comment_date'         => bp_core_current_time(),
+		'comment_approved'     => 1		
+	);
+
+	// prevent separate activity entry being made
+	remove_action( 'comment_post', 'bp_blogs_record_comment', 10, 2 );
+
+	// handle multisite
+	switch_to_blog( $parent_activity->item_id );
+
+	// post the comment
+	$post_comment_id = wp_insert_comment( $args );
+	
+	// add meta to comment
+	add_comment_meta( $post_comment_id, 'bp_activity_comment_id', $comment_id );
+
+	// add meta to activity comment
+	bp_activity_update_meta( $comment_id, 'bp_blogs_post_comment_id', $post_comment_id );
+
+	// multisite again!
+	restore_current_blog();
+
+	do_action( 'bp_blogs_sync_add_from_activity_comment', $comment_id, $args, $parent_activity, $user );
+}
+
+/**
+ * Deletes the blog comment when the associated activity comment is deleted.
+ *
+ * @since BuddyPress (1.9)
+ *
+ * @param int $activity_id The activity ID for the posted activity comment.
+ * @param array $params Parameters for the activity comment.
+ * @param obj Parameters of the parent activity item (in this case, the blog post).
+ */
+function bp_blogs_sync_delete_from_activity_comment( $activity_id, $comment_id ) {
+	// not using bp_disable_blogforum_comments() as that uses bp_get_option(),
+	// which would suck on multisite installs.
+	$cannot_comment = isset( buddypress()->site_options['bp-disable-blogforum-comments'] ) ? buddypress()->site_options['bp-disable-blogforum-comments'] : false;
+
+	// if cannot comment, stop now!
+	if ( $cannot_comment ) {
+		return;
+	}
+
+	// query args
+	$query_args = array(
+		'meta_query' => array(
+			array(
+				'key'   => 'bp_activity_comment_id',
+				'value' => $comment_id
+			)
+		)
+	);
+	
+	// get comment
+	$comment_query = new WP_Comment_Query;
+	$comment = $comment_query->query( $query_args );
+
+	// no comment? stop now!
+	if ( empty( $comment[0] ) ) {
+		return;
+	} else {
+		$comment = $comment[0];
+	}
+
+	// delete the comment
+	// we force delete the comment, since activity items are deleted immediately
+	wp_delete_comment( $comment->comment_ID, true );
+}
+
Index: bp-blogs/bp-blogs-functions.php
===================================================================
--- bp-blogs/bp-blogs-functions.php
+++ bp-blogs/bp-blogs-functions.php
@@ -504,10 +504,40 @@ function bp_blogs_remove_post( $post_id, $blog_id = 0, $user_id = 0 ) {
 add_action( 'delete_post', 'bp_blogs_remove_post' );
 
 function bp_blogs_remove_comment( $comment_id ) {
-	global $wpdb;
+	// get BP's activity comment status for blog / forum posts
+	$cannot_activity_comment = isset( buddypress()->site_options['bp-disable-blogforum-comments'] ) ? buddypress()->site_options['bp-disable-blogforum-comments'] : false;
 
-	// Delete activity stream item
-	bp_blogs_delete_activity( array( 'item_id' => $wpdb->blogid, 'secondary_item_id' => $comment_id, 'type' => 'new_blog_comment' ) );
+	// activity comments are disabled for blog posts
+	// which means that individual activity items exist for blog comments
+	if ( $cannot_activity_comment ) {
+		global $wpdb;
+
+		// Delete the individual activity stream item
+		bp_blogs_delete_activity( array( 'item_id' => $wpdb->blogid, 'secondary_item_id' => $comment_id, 'type' => 'new_blog_comment' ) );
+
+	// activity comments are enabled for blog posts
+	// remove the associated activity item
+	} else {
+		// get associated activity ID from comment meta
+		$activity_id = get_comment_meta( $comment_id, 'bp_activity_comment_id', true );
+
+		// delete the associated activity comment
+		//
+		// @todo WP moves nested comments up a level when a comment is deleted,
+		//       while BP deletes all nested activity comments...
+		//
+		//       right now, we're simply deleting the singular activity comment
+		//       with bp_activity_delete() and not using bp_activity_delete_comment()
+		//       b/c that deletes activity comment children
+		//
+		//       this needs further research:
+		//       - how hard would it be to emulate WP's model?
+		//       - what would happen if BP_Activity_Activity::rebuild_activity_comment_tree()
+		//         is used when the main activity comment is not deleted?
+		bp_activity_delete( array(
+			'id' => $activity_id
+		) );
+	}
 
 	do_action( 'bp_blogs_remove_comment', $wpdb->blogid, $comment_id, bp_loggedin_user_id() );
 }
Index: bp-blogs/bp-blogs-loader.php
===================================================================
--- bp-blogs/bp-blogs-loader.php
+++ bp-blogs/bp-blogs-loader.php
@@ -62,6 +62,12 @@ class BP_Blogs_Component extends BP_Component {
 
 		// Setup the globals
 		parent::setup_globals( $globals );
+
+		// Activity comment post callback
+		$this->activity_comment_post_callback = apply_filters( 'bp_blogs_activity_comment_post_callback', array(
+			'add'    => 'bp_blogs_sync_add_from_activity_comment',
+			'delete' => 'bp_blogs_sync_delete_from_activity_comment'
+		) );
 	}
 
 	/**
Index: bp-core/bp-core-component.php
===================================================================
--- bp-core/bp-core-component.php
+++ bp-core/bp-core-component.php
@@ -247,35 +247,38 @@ class BP_Component {
 	public function setup_actions() {
 
 		// Setup globals
-		add_action( 'bp_setup_globals',          array( $this, 'setup_globals'          ), 10 );
+		add_action( 'bp_setup_globals',          array( $this, 'setup_globals'                  ), 10 );
 
 		// Include required files. Called early to ensure that BP core
 		// components are loaded before plugins that hook their loader functions
 		// to bp_include with the default priority of 10. This is for backwards
 		// compatibility; henceforth, plugins should register themselves by
 		// extending this base class.
-		add_action( 'bp_include',                array( $this, 'includes'               ), 8 );
+		add_action( 'bp_include',                array( $this, 'includes'                       ), 10 );
 
 		// Setup navigation
-		add_action( 'bp_setup_nav',              array( $this, 'setup_nav'              ), 10 );
+		add_action( 'bp_setup_nav',              array( $this, 'setup_nav'                      ), 10 );
 
 		// Setup WP Toolbar menus
-		add_action( 'bp_setup_admin_bar',        array( $this, 'setup_admin_bar'        ), 10 );
+		add_action( 'bp_setup_admin_bar',        array( $this, 'setup_admin_bar'                ), 10 );
 
 		// Setup component title
-		add_action( 'bp_setup_title',            array( $this, 'setup_title'            ), 10 );
+		add_action( 'bp_setup_title',            array( $this, 'setup_title'                    ), 10 );
 
 		// Register post types
-		add_action( 'bp_register_post_types',    array( $this, 'register_post_types'    ), 10 );
+		add_action( 'bp_register_post_types',    array( $this, 'register_post_types'            ), 10 );
 
 		// Register taxonomies
-		add_action( 'bp_register_taxonomies',    array( $this, 'register_taxonomies'    ), 10 );
+		add_action( 'bp_register_taxonomies',    array( $this, 'register_taxonomies'            ), 10 );
 
 		// Add the rewrite tags
-		add_action( 'bp_add_rewrite_tags',       array( $this, 'add_rewrite_tags'       ), 10 );
+		add_action( 'bp_add_rewrite_tags',       array( $this, 'add_rewrite_tags'               ), 10 );
 
 		// Generate rewrite rules
-		add_action( 'bp_generate_rewrite_rules', array( $this, 'generate_rewrite_rules' ), 10 );
+		add_action( 'bp_generate_rewrite_rules', array( $this, 'generate_rewrite_rules'         ), 10 );
+
+		// Activity comment callback setup
+		add_action( 'bp_setup_globals',          array( $this, 'activity_comment_post_callback' ), 10 );
 
 		// Additional actions can be attached here
 		do_action( 'bp_' . $this->id . '_setup_actions' );
@@ -394,5 +397,33 @@ class BP_Component {
 	public function generate_rewrite_rules() {
 		do_action( 'bp_' . $this->id . '_generate_rewrite_rules' );
 	}
+
+	/**
+	 * Setup activity comment post callbacka.
+	 *
+	 * If a component has the 'activity_comment_post_callback' property set,
+	 * automatically setup the hooks to be used.
+	 *
+	 * @since BuddyPress (1.9)
+	 */
+	public function activity_comment_post_callback() {
+		// if activity component is not active or callback is not an array, stop now!
+		if ( ! bp_is_active( 'activity' ) || ! is_array( $this->activity_comment_post_callback ) ) {
+			return;
+		}
+
+		$callback = $this->activity_comment_post_callback;
+
+		// Activity comment addition callback
+		if ( ! empty( $callback['add'] ) && is_callable( $callback['add'] ) ) {
+			add_action( 'bp_activity_comment_posted', $callback['add'],    10, 3 );
+		}
+
+		// Activity comment deletion callback
+		if ( ! empty( $callback['delete'] ) && is_callable( $callback['delete'] ) ) {
+			add_action( 'bp_activity_delete_comment', $callback['delete'], 10, 2 );
+		}
+
+	}
 }
 endif; // BP_Component
