diff --git a/.gitignore b/.gitignore
index 2c05c8e..7b6d518 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 *~
 .openstackclient-venv
 .venv
+AUTHORS
 build
 dist
 python_openstackclient.egg-info
diff --git a/openstackclient/openstack/common/setup.py b/openstackclient/openstack/common/setup.py
index 4376102..60c731a 100644
--- a/openstackclient/openstack/common/setup.py
+++ b/openstackclient/openstack/common/setup.py
@@ -37,8 +37,8 @@ def parse_mailmap(mailmap='.mailmap'):
 
 
 def canonicalize_emails(changelog, mapping):
-    """ Takes in a string and an email alias mapping and replaces all
-        instances of the aliases in the string with their real email
+    """Takes in a string and an email alias mapping and replaces all
+       instances of the aliases in the string with their real email.
     """
     for alias, email in mapping.iteritems():
         changelog = changelog.replace(alias, email)
@@ -97,7 +97,7 @@ def _run_shell_command(cmd):
 
 
 def write_vcsversion(location):
-    """ Produce a vcsversion dict that mimics the old one produced by bzr
+    """Produce a vcsversion dict that mimics the old one produced by bzr.
     """
     if os.path.isdir('.git'):
         branch_nick_cmd = 'git branch | grep -Ei "\* (.*)" | cut -f2 -d" "'
@@ -118,7 +118,7 @@ version_info = {
 
 
 def write_git_changelog():
-    """Write a changelog based on the git changelog"""
+    """Write a changelog based on the git changelog."""
     if os.path.isdir('.git'):
         git_log_cmd = 'git log --stat'
         changelog = _run_shell_command(git_log_cmd)
@@ -128,13 +128,18 @@ def write_git_changelog():
 
 
 def generate_authors():
-    """Create AUTHORS file using git commits"""
+    """Create AUTHORS file using git commits."""
     jenkins_email = 'jenkins@review.openstack.org'
+    old_authors = 'AUTHORS.in'
+    new_authors = 'AUTHORS'
     if os.path.isdir('.git'):
         # don't include jenkins email address in AUTHORS file
         git_log_cmd = "git log --format='%aN <%aE>' | sort -u | " \
                       "grep -v " + jenkins_email
         changelog = _run_shell_command(git_log_cmd)
         mailmap = parse_mailmap()
-        with open("AUTHORS", "w") as authors_file:
-            authors_file.write(canonicalize_emails(changelog, mailmap))
+        with open(new_authors, 'w') as new_authors_fh:
+            new_authors_fh.write(canonicalize_emails(changelog, mailmap))
+            if os.path.exists(old_authors):
+                with open(old_authors, "r") as old_authors_fh:
+                    new_authors_fh.write('\n' + old_authors_fh.read())
diff --git a/setup.py b/setup.py
index adba47a..9a9eca9 100644
--- a/setup.py
+++ b/setup.py
@@ -2,6 +2,7 @@ import os
 
 import setuptools
 
+from openstackclient.openstack.common.setup import generate_authors
 from openstackclient.openstack.common.setup import parse_requirements
 from openstackclient.openstack.common.setup import parse_dependency_links
 from openstackclient.openstack.common.setup import write_git_changelog
@@ -10,6 +11,7 @@ from openstackclient.openstack.common.setup import write_git_changelog
 requires = parse_requirements()
 dependency_links = parse_dependency_links()
 write_git_changelog()
+generate_authors()
 
 
 def read(fname):