diff --git a/reviewboard/datagrids/columns.py b/reviewboard/datagrids/columns.py
index cfafd615d5bc5bc7612c7fad1ac4434d25657eaa..d9e79a1945325202770c8d104a4817bf81523c59 100644
--- a/reviewboard/datagrids/columns.py
+++ b/reviewboard/datagrids/columns.py
@@ -13,7 +13,8 @@ from djblets.siteconfig.models import SiteConfiguration
 
 from reviewboard.accounts.models import Profile, ReviewRequestVisit
 from reviewboard.avatars import avatar_services
-from reviewboard.reviews.models import ReviewRequest
+from reviewboard.diffviewer.models import DiffSet
+from reviewboard.reviews.models import ReviewRequest, Review
 from reviewboard.reviews.templatetags.reviewtags import render_star
 from reviewboard.site.urlresolvers import local_site_reverse
 
@@ -124,7 +125,7 @@ class UsernameColumn(Column):
         """
         user = self.get_user(obj)
 
-        # If avatars are eanbled, we'll want to include that in the resulting
+        # If avatars are enabled, we'll want to include that in the resulting
         # HTML.
         siteconfig = SiteConfiguration.objects.get_current()
         request = state.datagrid.request
@@ -194,6 +195,61 @@ class UsernameColumn(Column):
             })
 
 
+class LastUpdatedByColumn(UsernameColumn):
+    """Shows the user who is responsible for the latest update."""
+
+    def __init__(self, label=_('Last Updated By'), *args, **kwargs):
+        """Initialize the column.
+
+        Args:
+            label (unicode, optional):
+                The label for the column.
+
+            *args (tuple):
+                Additional positional arguments to pass to the column.
+
+            **kwargs (dict):
+                Additional keyword arguments to pass to the column.
+        """
+        super(LastUpdatedByColumn, self).__init__(
+            label=label, user_relation=['submitter'], *args, **kwargs)
+
+    def get_user(self, obj):
+        """Return the user associated with the last activity
+           that is made on this object.
+
+        Args:
+            obj (object):
+                The object provided to the column.
+
+        Returns:
+            django.contrib.auth.models.User:
+            The resulting user.
+
+        Raises:
+            AssertionError:
+                The updated object is of unknown type.
+        """
+        last_activity_info = obj.get_last_activity_info()
+        updated_object = last_activity_info['updated_object']
+        change_desc = last_activity_info['changedesc']
+
+        if isinstance(updated_object, ReviewRequest):
+            if (change_desc is not None):
+                user = change_desc.user
+            else:
+                user = updated_object.owner
+        elif isinstance(updated_object, Review):
+            user = updated_object.user
+        elif isinstance(updated_object, DiffSet):
+            user = obj.owner
+        else:
+            raise AssertionError(ugettext('The object that was updated '
+                                          'is of unknown type.'))
+
+        return user
+
+
 class FullNameColumn(Column):
     """Shows the full name of the user when appropriate."""
 
diff --git a/reviewboard/datagrids/grids.py b/reviewboard/datagrids/grids.py
index 3d6d7aa4c3447e1ec7bb1769038d865f8b4106c5..b572d9cf065de1e5cd876c83b7240ccf8a3406d0 100644
--- a/reviewboard/datagrids/grids.py
+++ b/reviewboard/datagrids/grids.py
@@ -22,6 +22,7 @@ from reviewboard.datagrids.columns import (BugsColumn,
                                            FullNameColumn,
                                            GroupMemberCountColumn,
                                            GroupsColumn,
+                                           LastUpdatedByColumn,
                                            MyCommentsColumn,
                                            NewUpdatesColumn,
                                            PendingCountColumn,
@@ -241,6 +242,8 @@ class ReviewRequestDataGrid(ShowClosedReviewRequestsMixin, DataGrid):
         db_field='last_updated',
         field_name='last_updated',
         css_class=lambda r: ageid(r.last_updated))
+    last_updated_by = LastUpdatedByColumn(
+        label=_('Last Updated By'))
     diff_updated_since = DiffUpdatedSinceColumn(
         detailed_label=_('Diff Updated (Relative)'),
         shrink=True,
diff --git a/reviewboard/datagrids/tests.py b/reviewboard/datagrids/tests.py
index d07a35a13709e36a79cad954c1c4c40289680d96..bead15d314d43f4f2b33ea9487312ecc6f1eb12d 100644
--- a/reviewboard/datagrids/tests.py
+++ b/reviewboard/datagrids/tests.py
@@ -12,12 +12,13 @@ from djblets.testing.decorators import add_fixtures
 
 from reviewboard.accounts.models import Profile, ReviewRequestVisit
 from reviewboard.datagrids.builtin_items import UserGroupsItem, UserProfileItem
-from reviewboard.datagrids.columns import (FullNameColumn, SummaryColumn,
-                                           UsernameColumn)
+from reviewboard.datagrids.columns import (FullNameColumn, LastUpdatedByColumn,
+                                           SummaryColumn, UsernameColumn)
 from reviewboard.reviews.models import (Group,
                                         ReviewRequest,
                                         ReviewRequestDraft,
                                         Review)
+
 from reviewboard.site.models import LocalSite
 from reviewboard.testing import TestCase
 
@@ -1259,3 +1260,57 @@ class UsernameColumnTests(BaseColumnTestCase):
         self.assertIn(
             'href="/s/%s/users/doc/"' % self.local_site_name,
             self.column.render_cell(self.stateful_column, user, None))
+
+
+class LastUpdatedByColumnTests(BaseColumnTestCase):
+    """Tests for reviewboard.datagrids.columns.LastUpdatedByColumn."""
+
+    column = LastUpdatedByColumn()
+
+    def test_last_updated_by_for_review_request(self):
+        """Testing LastUpdatedByColumn.get_user and
+           LastUpdatedByColumn.render_data for a Review Request object.
+        """
+        user = User.objects.create_user(username='veni')
+
+        review_request = self.create_review_request(publish=True,
+                                                    submitter=user)
+
+        self.assertEqual(user, self.column.get_user(review_request))
+        self.assertIn(
+            'veni',
+            self.column.render_data(self.stateful_column, review_request))
+
+    def test_last_updated_by_for_review(self):
+        """Testing LastUpdatedByColumn.get_user and
+           LastUpdatedByColumn.render_data for a Review object.
+        """
+        user = User.objects.create_user(username='vidi')
+
+        review_request = self.create_review_request(publish=True,
+                                                    submitter='doc')
+        self.create_review(review_request=review_request,
+                           user=user,
+                           publish=True)
+
+        self.assertEqual(user, self.column.get_user(review_request))
+        self.assertIn(
+            'vidi',
+            self.column.render_data(self.stateful_column, review_request))
+
+    @add_fixtures(['test_scmtools'])
+    def test_last_updated_by_for_diffset(self):
+        """Testing LastUpdatedByColumn.get_user and
+           LastUpdatedByColumn.render_data for a Diffset object.
+        """
+        user = User.objects.create_user(username='vici')
+
+        review_request = self.create_review_request(create_repository=True,
+                                                    publish=True,
+                                                    submitter=user)
+        self.create_diffset(review_request=review_request)
+
+        self.assertEqual(user, self.column.get_user(review_request))
+        self.assertIn(
+            'vici',
+            self.column.render_data(self.stateful_column, review_request))
