The list of contributors in committers.py should be a separate JSON
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Apr 2013 18:41:11 +0000 (18:41 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Apr 2013 18:41:11 +0000 (18:41 +0000)
https://bugs.webkit.org/show_bug.cgi?id=114673

Reviewed by Anders Carlsson.

Tools:

Added webkitpy/common/config/contributors.json, made CommitterList load it.

* EWSTools/start-queue-mac.sh:
* EWSTools/start-queue.sh:
* Scripts/webkitpy/common/checkout/commitinfo.py:
(CommitInfo.committer):
* Scripts/webkitpy/common/config/contributors.json: Added.
* Scripts/webkitpy/common/config/committers.py:
(Reviewer.__init__):
(CommitterList.__init__):
(CommitterList.load_json): Added.
(CommitterList.load_json.emails):
(CommitterList.load_json.nicks):
* Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
(MockCommitInfo.author):

Websites/bugs.webkit.org:

Updated the Bugzilla autocompletion code to use contributors.json.
Basically, this removes a large chunk of this JavaScript file.

* committers-autocomplete.js:
(WebKitCommitters):

Websites/webkit.org:

Updated the website to refer to contributors.json instead of committers.py.

* coding/commit-review-policy.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@148527 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/EWSTools/start-queue-mac.sh
Tools/EWSTools/start-queue.sh
Tools/Scripts/webkitpy/common/checkout/commitinfo.py
Tools/Scripts/webkitpy/common/config/committers.py
Tools/Scripts/webkitpy/common/config/contributors.json [new file with mode: 0644]
Tools/Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py
Websites/bugs.webkit.org/ChangeLog
Websites/bugs.webkit.org/committers-autocomplete.js
Websites/webkit.org/ChangeLog
Websites/webkit.org/coding/commit-review-policy.html

index be23804..95f0f0a 100644 (file)
@@ -1,3 +1,26 @@
+2013-04-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        The list of contributors in committers.py should be a separate JSON
+        https://bugs.webkit.org/show_bug.cgi?id=114673
+
+        Reviewed by Anders Carlsson.
+
+        Added webkitpy/common/config/contributors.json, made CommitterList load it.
+
+        * EWSTools/start-queue-mac.sh:
+        * EWSTools/start-queue.sh:
+        * Scripts/webkitpy/common/checkout/commitinfo.py:
+        (CommitInfo.committer):
+        * Scripts/webkitpy/common/config/contributors.json: Added.
+        * Scripts/webkitpy/common/config/committers.py:
+        (Reviewer.__init__):
+        (CommitterList.__init__):
+        (CommitterList.load_json): Added.
+        (CommitterList.load_json.emails):
+        (CommitterList.load_json.nicks):
+        * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
+        (MockCommitInfo.author):
+
 2013-04-16  Manuel Rego Casasnovas  <rego@igalia.com>
 
         [EFL] Bump libsoup dependency to 2.42.0
index 1168115..5fc05a3 100755 (executable)
@@ -69,6 +69,6 @@ do
     ./Tools/Scripts/test-webkitpy
 
     # We use --exit-after-iteration to pick up any changes to webkit-patch, including
-    # changes to the committers.py file.
+    # changes to the contributors.json file.
     ./Tools/Scripts/webkit-patch $QUEUE_NAME --bot-id=$BOT_ID --no-confirm --exit-after-iteration $RESET_AFTER_ITERATION $QUEUE_PARAMS
 done
index e1f86b3..c1d544d 100755 (executable)
@@ -81,6 +81,6 @@ do
     fi
 
     # We use --exit-after-iteration to pick up any changes to webkit-patch, including
-    # changes to the committers.py file.
+    # changes to the contributors.json file.
     ./Tools/Scripts/webkit-patch $QUEUE_NAME --bot-id=$BOT_ID --no-confirm --exit-after-iteration $RESET_AFTER_ITERATION $QUEUE_PARAMS
 done
index cba3fdd..79cb79f 100644 (file)
@@ -45,7 +45,7 @@ class CommitInfo(object):
         return self._revision
 
     def committer(self):
-        return self._committer  # None if committer isn't in committers.py
+        return self._committer  # None if committer isn't in contributors.json
 
     def committer_email(self):
         return self._committer_email
index 9309936..7e90701 100644 (file)
 #
 # WebKit's Python module for committer and reviewer validation.
 
-from webkitpy.common.editdistance import edit_distance
 import fnmatch
+import json
+
+from webkitpy.common.editdistance import edit_distance
+from webkitpy.common.memoized import memoized
+from webkitpy.common.system.filesystem import FileSystem
+
+
+# The list of contributors have been moved to contributors.json
 
 
 class Contributor(object):
@@ -96,511 +103,20 @@ class Reviewer(Committer):
         self.can_review = True
 
 
-
-# This is a list of people (or bots) who are neither committers nor reviewers, but get
-# frequently CC'ed by others on Bugzilla bugs, so their names should be
-# supported by autocomplete. No review needed to add to the list.
-
-
-contributors_who_are_not_committers = [
-    Contributor("Adobe Bug Tracker", "WebkitBugTracker@adobe.com"),
-    Contributor("Aharon Lanin", "aharon@google.com"),
-    Contributor("Alan Cutter", "alancutter@chromium.org", "alancutter"),
-    Contributor("Alan Stearns", "stearns@adobe.com", "astearns"),
-    Contributor("Alejandro Pineiro", "apinheiro@igalia.com"),
-    Contributor("Alexey Marinichev", ["amarinichev@chromium.org", "amarinichev@google.com"], "amarinichev"),
-    Contributor("Andras Piroska", "pandras@inf.u-szeged.hu", "andris88"),
-    Contributor("Anne van Kesteren", "annevk@annevk.nl", "annevk"),
-    Contributor("Annie Sullivan", "sullivan@chromium.org", "annie"),
-    Contributor("Anton Vayvod", "avayvod@chromium.org", "avayvod"),
-    Contributor("Aryeh Gregor", "ayg@aryeh.name", "AryehGregor"),
-    Contributor("Balazs Ankes", "bank@inf.u-szeged.hu", "abalazs"),
-    Contributor("Bem Jones-Bey", "bjonesbe@adobe.com", "bemjb"),
-    Contributor("Brian Salomon", "bsalomon@google.com"),
-    Contributor("Christian Biesinger", "cbiesinger@chromium.org", "cbiesinger"),
-    Contributor("Commit Queue", "commit-queue@webkit.org"),
-    Contributor("Daniel Sievers", "sievers@chromium.org"),
-    Contributor("David Dorwin", "ddorwin@chromium.org", "ddorwin"),
-    Contributor("David Reveman", "reveman@chromium.org", "reveman"),
-    Contributor("Dongsung Huang", "luxtella@company100.net", "Huang"),
-    Contributor("Douglas Davidson", "ddavidso@apple.com"),
-    Contributor("Douglas Stockwell", "dstockwell@chromium.org", "dstockwell"),
-    Contributor("Edward O'Connor", "eoconnor@apple.com", "hober"),
-    Contributor("Eric Penner", "epenner@chromium.org", "epenner"),
-    Contributor("Felician Marton", ["felician@inf.u-szeged.hu", "marton.felician.zoltan@stud.u-szeged.hu"], "Felician"),
-    Contributor("Finnur Thorarinsson", ["finnur@chromium.org", "finnur.webkit@gmail.com"], "finnur"),
-    Contributor("Forms Bugs", "forms-bugs@chromium.org"),
-    Contributor("Gabor Ballabas", "gaborb@inf.u-szeged.hu", "bgabor"),
-    Contributor("Grace Kloba", "klobag@chromium.org", "klobag"),
-    Contributor("Greg Simon", "gregsimon@chromium.org", "gregsimon"),
-    Contributor("Hao Zheng", "zhenghao@chromium.org"),
-    Contributor("Harald Alvestrand", "hta@google.com", "hta"),
-    Contributor("Ian Hickson", "ian@hixie.ch", "hixie"),
-    Contributor("Jae Hyun Park", "jae.park@company100.net", "jaepark"),
-    Contributor("James Craig", "james@cookiecrook.com", "jcraig"),
-    Contributor("Jonathan Backer", "backer@chromium.org", "backer"),
-    Contributor("Jeff Timanus", ["twiz@chromium.org", "twiz@google.com"], "twiz"),
-    Contributor("Jing Zhao", "jingzhao@chromium.org"),
-    Contributor("John Bates", ["jbates@google.com", "jbates@chromium.org"], "jbates"),
-    Contributor("John Bauman", ["jbauman@chromium.org", "jbauman@google.com"], "jbauman"),
-    Contributor("John Mellor", "johnme@chromium.org", "johnme"),
-    Contributor("Kulanthaivel Palanichamy", "kulanthaivel@codeaurora.org", "kvel"),
-    Contributor("Koji Hara", "kojih@chromium.org", "kojih"),
-    Contributor("Koji Ishii", "kojiishi@gmail.com"),
-    Contributor("Michael Pruett", "michael@68k.org", "mpruett"),
-    Contributor("Mihai Balan", "mibalan@adobe.com", "miChou"),
-    Contributor("Mihai Maerean", "mmaerean@adobe.com", "mmaerean"),
-    Contributor("Min Qin", "qinmin@chromium.org"),
-    Contributor("Nandor Huszka", "hnandor@inf.u-szeged.hu", "hnandor"),
-    Contributor("Nils Barth", "nbarth@chromium.org", "nbarth"),
-    Contributor("Oliver Varga", ["voliver@inf.u-szeged.hu", "Varga.Oliver@stud.u-szeged.hu"], "TwistO"),
-    Contributor("Peter Gal", "galpeter@inf.u-szeged.hu", "elecro"),
-    Contributor("Peter Linss", "peter.linss@hp.com", "plinss"),
-    Contributor("Radar WebKit Bug Importer", "webkit-bug-importer@group.apple.com"),
-    Contributor("Raul Hudea", "rhudea@adobe.com", "rhudea"),
-    Contributor("Roland Takacs", "rtakacs@inf.u-szeged.hu", "rtakacs"),
-    Contributor("Tab Atkins", ["tabatkins@google.com", "jackalmage@gmail.com"], "tabatkins"),
-    Contributor("Tamas Czene", ["tczene@inf.u-szeged.hu", "Czene.Tamas@stud.u-szeged.hu"], "tczene"),
-    Contributor("Tien-Ren Chen", "trchen@chromium.org", "trchen"),
-    Contributor("Tim 'mithro' Ansell", "mithro@mithis.com", "mithro"),
-    Contributor("Tim Volodine", "timvolodine@chromium.org", "timvolodine"),
-    Contributor("WebKit Review Bot", "webkit.review.bot@gmail.com", "sheriff-bot"),
-    Contributor("Web Components Team", "webcomponents-bugzilla@chromium.org"),
-    Contributor("Wyatt Carss", ["wcarss@chromium.org", "wcarss@google.com"], "wcarss"),
-    Contributor("Zeev Lieber", "zlieber@chromium.org"),
-    Contributor("Zsolt Feher", "feherzs@inf.u-szeged.hu", "Smith"),
-]
-
-
-# This is intended as a canonical, machine-readable list of all non-reviewer
-# committers for WebKit.  If your name is missing here and you are a committer,
-# please add it.  No review needed.  All reviewers are committers, so this list
-# is only of committers who are not reviewers.
-
-
-committers_unable_to_review = [
-    Committer("Aaron Boodman", "aa@chromium.org", "aboodman"),
-    Committer("Aaron Colwell", "acolwell@chromium.org", "acolwell"),
-    Committer("Adam Bergkvist", "adam.bergkvist@ericsson.com", "adambe"),
-    Committer("Adam Kallai", "kadam@inf.u-szeged.hu", "kadam"),
-    Committer("Adam Klein", "adamk@chromium.org", "aklein"),
-    Committer("Adam Langley", "agl@chromium.org", "agl"),
-    Committer("Ademar de Souza Reis Jr", ["ademar.reis@gmail.com", "ademar@webkit.org"], "ademar"),
-    Committer("Albert J. Wong", "ajwong@chromium.org"),
-    Committer("Alec Flett", ["alecflett@chromium.org", "alecflett@google.com"], "alecf"),
-    Committer(u"Alexander F\u00e6r\u00f8y", ["ahf@0x90.dk", "alexander.faeroy@nokia.com"], "ahf"),
-    Committer("Alexander Kellett", ["lypanov@mac.com", "a-lists001@lypanov.net", "lypanov@kde.org"], "lypanov"),
-    Committer("Alexandre Elias", ["aelias@chromium.org", "aelias@google.com"], "aelias"),
-    Committer("Alexandru Chiculita", "achicu@adobe.com", "achicu"),
-    Committer("Alice Boxhall", "aboxhall@chromium.org", "aboxhall"),
-    Committer("Alok Priyadarshi", "alokp@chromium.org", "alokp"),
-    Committer("Ami Fischman", ["fischman@chromium.org", "fischman@google.com"], "fischman"),
-    Committer("Amruth Raj", "amruthraj@motorola.com", "amruthraj"),
-    Committer("Andre Boule", "aboule@apple.com"),
-    Committer("Andrei Bucur", "abucur@adobe.com", "abucur"),
-    Committer("Andrei Popescu", "andreip@google.com", "andreip"),
-    Committer("Andrew Wellington", ["andrew@webkit.org", "proton@wiretapped.net"], "proton"),
-    Committer("Andrew Scherkus", "scherkus@chromium.org", "scherkus"),
-    Committer("Andrey Adaykin", "aandrey@chromium.org", "aandrey"),
-    Committer("Andrey Kosyakov", "caseq@chromium.org", "caseq"),
-    Committer("Andras Becsi", ["abecsi@webkit.org", "andras.becsi@digia.com"], "bbandix"),
-    Committer("Andy Wingo", "wingo@igalia.com", "wingo"),
-    Committer("Anna Cavender", "annacc@chromium.org", "annacc"),
-    Committer("Anthony Ricaud", "rik@webkit.org", "rik"),
-    Committer("Antoine Labour", "piman@chromium.org", "piman"),
-    Committer("Antoine Quint", "graouts@apple.com", "graouts"),
-    Committer("Anton D'Auria", "adauria@apple.com", "antonlefou"),
-    Committer("Anton Muhin", "antonm@chromium.org", "antonm"),
-    Committer("Arko Saha", "arko@motorola.com", "arkos"),
-    Committer("Arvid Nilsson", ["anilsson@blackberry.com", "anilsson@rim.com"], "anilsson"),
-    Committer("Balazs Kelemen", "kbalazs@webkit.org", "kbalazs"),
-    Committer("Bear Travis", "betravis@adobe.com", "betravis"),
-    Committer("Ben Murdoch", "benm@google.com", "benm"),
-    Committer("Ben Wells", "benwells@chromium.org", "benwells"),
-    Committer("Benjamin C Meyer", ["ben@meyerhome.net", "ben@webkit.org"], "icefox"),
-    Committer("Benjamin Kalman", ["kalman@chromium.org", "kalman@google.com"], "kalman"),
-    Committer("Benjamin Otte", ["otte@gnome.org", "otte@webkit.org"], "otte"),
-    Committer("Bill Budge", ["bbudge@chromium.org", "bbudge@gmail.com"], "bbudge"),
-    Committer("Brett Wilson", "brettw@chromium.org", "brettx"),
-    Committer("Bruno de Oliveira Abinader", ["bruno.abinader@basyskom.com", "brunoabinader@gmail.com"], "abinader"),
-    Committer("Byungwoo Lee", ["bw80.lee@samsung.com", "bw80.lee@gmail.com"], "byungwoo"),
-    Committer("Cameron McCormack", ["cam@mcc.id.au", "cam@webkit.org"], "heycam"),
-    Committer("Carol Szabo", ["carol@webkit.org", "carol.szabo@nokia.com"], "cszabo1"),
-    Committer("Cary Clark", ["caryclark@google.com", "caryclark@chromium.org"], "caryclark"),
-    Committer("Charles Reis", "creis@chromium.org", "creis"),
-    Committer("Charles Wei", ["charles.wei@torchmobile.com.cn"], "cswei"),
-    Committer("Chris Evans", ["cevans@google.com", "cevans@chromium.org"]),
-    Committer("Chris Guillory", ["ctguil@chromium.org", "chris.guillory@google.com"], "ctguil"),
-    Committer("Chris Petersen", "cpetersen@apple.com", "cpetersen"),
-    Committer("Christian Dywan", ["christian@twotoasts.de", "christian@webkit.org", "christian@lanedo.com"]),
-    Committer("Christophe Dumez", ["dchris@gmail.com", "ch.dumez@sisa.samsung.com"], "cdumez"),
-    Committer("Claudio Saavedra", "csaavedra@igalia.com", "claudio___"),
-    Committer("Collin Jackson", "collinj@webkit.org", "collinjackson"),
-    Committer("Cris Neckar", "cdn@chromium.org", "cneckar"),
-    Committer("Dan Winship", "danw@gnome.org", "danw"),
-    Committer("Dana Jansens", "danakj@chromium.org", "danakj"),
-    Committer("Daniel Cheng", "dcheng@chromium.org", "dcheng"),
-    Committer("Dave Barton", "dbarton@mathscribe.com", "davebarton"),
-    Committer("Dave Tharp", "dtharp@codeaurora.org", "dtharp"),
-    Committer("David Michael Barr", ["davidbarr@chromium.org", "davidbarr@google.com", "b@rr-dav.id.au"], "barrbrain"),
-    Committer("David Grogan", ["dgrogan@chromium.org", "dgrogan@google.com"], "dgrogan"),
-    Committer("David Smith", ["catfish.man@gmail.com", "dsmith@webkit.org"], "catfishman"),
-    Committer("Diego Gonzalez", ["diegohcg@webkit.org", "diego.gonzalez@openbossa.org"], "diegohcg"),
-    Committer("Dinu Jacob", "dinu.s.jacob@intel.com", "dsjacob"),
-    Committer("Dmitry Gorbik", "dgorbik@apple.com", "dgorbik"),
-    Committer("Dmitry Lomov", ["dslomov@google.com", "dslomov@chromium.org"], "dslomov"),
-    Committer("Dominic Cooney", ["dominicc@chromium.org", "dominicc@google.com"], "dominicc"),
-    Committer("Dominic Mazzoni", ["dmazzoni@google.com", "dmazzoni@chromium.org"], "dmazzoni"),
-    Committer(u"Dominik R\u00f6ttsches", ["dominik.rottsches@intel.com", "d-r@roettsches.de"], "drott"),
-    Committer("Dongwoo Joshua Im", ["dw.im@samsung.com", "dwim79@gmail.com"], "dwim"),
-    Committer("Drew Wilson", "atwilson@chromium.org", "atwilson"),
-    Committer("Eli Fidler", ["efidler@blackberry.com", "efidler@rim.com"], "efidler"),
-    Committer("Elliot Poger", "epoger@chromium.org", "epoger"),
-    Committer("Erik Arvidsson", "arv@chromium.org", "arv"),
-    Committer("Eric Roman", "eroman@chromium.org", "eroman"),
-    Committer("Eric Uhrhane", "ericu@chromium.org", "ericu"),
-    Committer("Eugene Klyuchnikov", "eustas@chromium.org", "eustas"),
-    Committer("Evan Martin", "evan@chromium.org", "evmar"),
-    Committer("Evan Stade", "estade@chromium.org", "estade"),
-    Committer("Fady Samuel", "fsamuel@chromium.org", "fsamuel"),
-    Committer("Feng Qian", "feng@chromium.org"),
-    Committer("Florin Malita", ["fmalita@chromium.org", "fmalita@google.com"], "fmalita"),
-    Committer("Fumitoshi Ukai", "ukai@chromium.org", "ukai"),
-    Committer("Gabor Loki", "loki@webkit.org", "loki04"),
-    Committer("Gabor Rapcsanyi", ["rgabor@webkit.org", "rgabor@inf.u-szeged.hu"], "rgabor"),
-    Committer("Gavin Peters", ["gavinp@chromium.org", "gavinp@webkit.org", "gavinp@google.com"], "gavinp"),
-    Committer("Girish Ramakrishnan", ["girish@forwardbias.in", "ramakrishnan.girish@gmail.com"], "girishr"),
-    Committer("Glenn Adams", "glenn@skynav.com", "gasubic"),
-    Committer("Graham Dennis", ["Graham.Dennis@gmail.com", "gdennis@webkit.org"]),
-    Committer("Greg Bolsinga", "bolsinga@apple.com"),
-    Committer("Gregg Tavares", ["gman@chromium.org", "gman@google.com"], "gman"),
-    Committer("Grzegorz Czajkowski", "g.czajkowski@samsung.com", "grzegorz"),
-    Committer("Hans Muller", "giles_joplin@yahoo.com", "hansmuller"),
-    Committer("Hans Wennborg", "hans@chromium.org", "hwennborg"),
-    Committer("Hayato Ito", "hayato@chromium.org", "hayato"),
-    Committer("Hironori Bono", "hbono@chromium.org", "hbono"),
-    Committer("Helder Correia", "helder.correia@nokia.com", "helder"),
-    Committer("Hin-Chung Lam", ["hclam@google.com", "hclam@chromium.org"]),
-    Committer("Hugo Parente Lima", "hugo.lima@openbossa.org", "hugopl"),
-    Committer("Ian Vollick", "vollick@chromium.org", "vollick"),
-    Committer("Igor Trindade Oliveira", ["igor.oliveira@webkit.org", "igor.o@sisa.samsung.com"], "igoroliveira"),
-    Committer("Ilya Sherman", "isherman@chromium.org", "isherman"),
-    Committer("Ilya Tikhonovsky", "loislo@chromium.org", "loislo"),
-    Committer("Ivan Krsti\u0107", "ike@apple.com"),
-    Committer("Jacky Jiang", ["jkjiang@webkit.org", "zkjiang008@gmail.com", "zhajiang@blackberry.com", "zhajiang@rim.com"], "jkjiang"),
-    Committer("Jakob Petsovits", ["jpetsovits@blackberry.com", "jpetsovits@rim.com", "jpetso@gmx.at"], "jpetso"),
-    Committer("Jakub Wieczorek", "jwieczorek@webkit.org", "fawek"),
-    Committer("James Hawkins", ["jhawkins@chromium.org", "jhawkins@google.com"], "jhawkins"),
-    Committer("James Kozianski", ["koz@chromium.org", "koz@google.com"], "koz"),
-    Committer("James Simonsen", "simonjam@chromium.org", "simonjam"),
-    Committer("Janos Badics", "jbadics@inf.u-szeged.hu", "dicska"),
-    Committer("Jarred Nicholls", ["jarred@webkit.org", "jarred@sencha.com"], "jarrednicholls"),
-    Committer("Jason Liu", ["jason.liu@torchmobile.com.cn", "jasonliuwebkit@gmail.com"], "jasonliu"),
-    Committer("Jay Civelli", "jcivelli@chromium.org", "jcivelli"),
-    Committer("Jeff Miller", "jeffm@apple.com", "jeffm7"),
-    Committer("Jeffrey Pfau", "jpfau@apple.com", "jpfau"),
-    Committer("Jenn Braithwaite", "jennb@chromium.org", "jennb"),
-    Committer("Jens Alfke", ["snej@chromium.org", "jens@apple.com"]),
-    Committer("Jeremy Moskovich", ["playmobil@google.com", "jeremy@chromium.org"], "jeremymos"),
-    Committer("Jesus Sanchez-Palencia", ["jesus@webkit.org", "jesus.palencia@openbossa.org"], "jeez_"),
-    Committer("Jia Pu", "jpu@apple.com"),
-    Committer("Joanmarie Diggs", "jdiggs@igalia.com", "joanie"),
-    Committer("Joe Thomas", "joethomas@motorola.com", "joethomas"),
-    Committer("John Abd-El-Malek", "jam@chromium.org", "jam"),
-    Committer("John Gregg", ["johnnyg@google.com", "johnnyg@chromium.org"], "johnnyg"),
-    Committer("John Knottenbelt", "jknotten@chromium.org", "jknotten"),
-    Committer("Johnny Ding", ["jnd@chromium.org", "johnnyding.webkit@gmail.com"], "johnnyding"),
-    Committer("Jon Lee", "jonlee@apple.com", "jonlee"),
-    Committer("Jonathan Dong", ["jonathan.dong.webkit@gmail.com"], "jondong"),
-    Committer("Joone Hur", ["joone@webkit.org", "joone.hur@intel.com"], "joone"),
-    Committer("Joost de Valk", ["joost@webkit.org", "webkit-dev@joostdevalk.nl"], "Altha"),
-    Committer("Joshua Bell", ["jsbell@chromium.org", "jsbell@google.com"], "jsbell"),
-    Committer("Julie Parent", ["jparent@google.com", "jparent@chromium.org"], "jparent"),
-    Committer("Jungshik Shin", "jshin@chromium.org"),
-    Committer("Justin Novosad", ["junov@google.com", "junov@chromium.org"], "junov"),
-    Committer("Justin Schuh", "jschuh@chromium.org", "jschuh"),
-    Committer("Kangil Han", ["kangil.han@samsung.com", "kangil.han@gmail.com"], "kangil"),
-    Committer("Karen Grunberg", "kareng@chromium.org", "kareng"),
-    Committer("Kaustubh Atrawalkar", ["kaustubh@motorola.com"], "silverroots"),
-    Committer("Keishi Hattori", "keishi@webkit.org", "keishi"),
-    Committer("Kelly Norton", "knorton@alum.mit.edu"),
-    Committer("Ken Buchanan", "kenrb@chromium.org", "kenrb"),
-    Committer("Kenichi Ishibashi", "bashi@chromium.org", "bashi"),
-    Committer("Kenji Imasaki", "imasaki@chromium.org", "imasaki"),
-    Committer("Kent Hansen", "kent.hansen@nokia.com", "khansen"),
-    Committer("Kihong Kwon", "kihong.kwon@samsung.com", "kihong"),
-    Committer(u"Kim Gr\u00f6nholm", "kim.1.gronholm@nokia.com"),
-    Committer("Kimmo Kinnunen", ["kimmo.t.kinnunen@nokia.com", "kimmok@iki.fi", "ktkinnun@webkit.org"], "kimmok"),
-    Committer("Kinuko Yasuda", "kinuko@chromium.org", "kinuko"),
-    Committer("Kiran Muppala", "cmuppala@apple.com", "kiranm"),
-    Committer("Konrad Piascik", ["kpiascik@blackberry.com", "kpiascik@rim.com"], "kpiascik"),
-    Committer("Kristof Kosztyo", "kkristof@inf.u-szeged.hu", "kkristof"),
-    Committer("Krzysztof Kowalczyk", "kkowalczyk@gmail.com"),
-    Committer("Kwang Yul Seo", ["skyul@company100.net", "kseo@webkit.org"], "kseo"),
-    Committer("Lauro Neto", "lauro.neto@openbossa.org", "lmoura"),
-    Committer("Leandro Gracia Gil", "leandrogracia@chromium.org", "leandrogracia"),
-    Committer("Leandro Pereira", ["leandro@profusion.mobi", "leandro@webkit.org"], "acidx"),
-    Committer("Leo Yang", ["leoyang@blackberry.com", "leoyang@rim.com", "leoyang@webkit.org", "leoyang.webkit@gmail.com"], "leoyang"),
-    Committer("Li Yin", ["li.yin@intel.com"], "liyin"),
-    Committer("Lucas De Marchi", ["demarchi@webkit.org", "lucas.demarchi@profusion.mobi"], "demarchi"),
-    Committer("Lucas Forschler", ["lforschler@apple.com"], "lforschler"),
-    Committer("Luciano Wolf", "luciano.wolf@openbossa.org", "luck"),
-    Committer("Luke Macpherson", ["macpherson@chromium.org", "macpherson@google.com"], "macpherson"),
-    Committer("Mads Ager", "ager@chromium.org"),
-    Committer("Mahesh Kulkarni", ["mahesh.kulkarni@nokia.com", "maheshk@webkit.org"], "maheshk"),
-    Committer("Marcus Voltis Bulach", "bulach@chromium.org"),
-    Committer("Mario Sanchez Prada", ["mario@webkit.org", "mario.prada@samsung.com"], "msanchez"),
-    Committer("Mark Lam", "mark.lam@apple.com", "mlam"),
-    Committer("Mark Pilgrim", "pilgrim@chromium.org", "pilgrim_google"),
-    Committer("Mary Wu", ["mary.wu@torchmobile.com.cn", "wwendy2007@gmail.com"], "marywu"),
-    Committer("Matt Delaney", "mdelaney@apple.com"),
-    Committer("Matt Falkenhagen", "falken@chromium.org", "falken"),
-    Committer("Matt Lilek", ["mlilek@apple.com", "webkit@mattlilek.com", "pewtermoose@webkit.org"], "pewtermoose"),
-    Committer("Matt Perry", "mpcomplete@chromium.org"),
-    Committer("Max Vujovic", ["mvujovic@adobe.com", "maxvujovic@gmail.com"], "mvujovic"),
-    Committer("Maxime Britto", ["maxime.britto@gmail.com", "britto@apple.com"]),
-    Committer("Maxime Simon", ["simon.maxime@gmail.com", "maxime.simon@webkit.org"], "maxime.simon"),
-    Committer(u"Michael Br\u00fcning", ["michael.bruning@digia.com", "michaelbruening@gmail.com"], "mibrunin"),
-    Committer("Michael Nordman", "michaeln@google.com", "michaeln"),
-    Committer("Michelangelo De Simone", "michelangelo@webkit.org", "michelangelo"),
-    Committer("Mihnea Ovidenie", "mihnea@adobe.com", "mihnea"),
-    Committer("Mike Belshe", ["mbelshe@chromium.org", "mike@belshe.com"]),
-    Committer("Mike Fenton", ["mifenton@blackberry.com", "mifenton@rim.com", "mike.fenton@torchmobile.com"], "mfenton"),
-    Committer("Mike Lawther", "mikelawther@chromium.org", "mikelawther"),
-    Committer("Mike Reed", "reed@google.com", "reed"),
-    Committer("Mike Thole", ["mthole@mikethole.com", "mthole@apple.com"]),
-    Committer("Mike West", ["mkwst@chromium.org", "mike@mikewest.org"], "mkwst"),
-    Committer("Mikhail Naganov", "mnaganov@chromium.org"),
-    Committer("Mikhail Pozdnyakov", "mikhail.pozdnyakov@intel.com", "MPozdnyakov"),
-    Committer("Naoki Takano", ["honten@chromium.org", "takano.naoki@gmail.com"], "honten"),
-    Committer("Nat Duca", ["nduca@chromium.org", "nduca@google.com"], "nduca"),
-    Committer("Nayan Kumar K", ["nayankk@motorola.com", "nayankk@gmail.com"], "xc0ffee"),
-    Committer("Nima Ghanavatian", ["nghanavatian@blackberry.com", "nghanavatian@rim.com", "nima.ghanavatian@gmail.com"], "nghanavatian"),
-    Committer("Noel Gordon", ["noel.gordon@gmail.com", "noel@chromium.org", "noel@google.com"], "noel"),
-    Committer("Pablo Flouret", ["pablof@motorola.com", "pf@parb.es"], "pablof"),
-    Committer("Pam Greene", "pam@chromium.org", "pamg"),
-    Committer("Patrick Gansterer", ["paroga@paroga.com", "paroga@webkit.org"], "paroga"),
-    Committer("Pavel Podivilov", "podivilov@chromium.org", "podivilov"),
-    Committer("Peter Beverloo", ["peter@chromium.org", "peter@webkit.org", "beverloo@google.com"], "beverloo"),
-    Committer("Peter Kasting", ["pkasting@google.com", "pkasting@chromium.org"], "pkasting"),
-    Committer("Peter Varga", ["pvarga@webkit.org", "pvarga@inf.u-szeged.hu"], "stampho"),
-    Committer("Pierre d'Herbemont", ["pdherbemont@free.fr", "pdherbemont@apple.com"], "pdherbemont"),
-    Committer("Pierre-Olivier Latour", "pol@apple.com", "pol"),
-    Committer("Pierre Rossi", "pierre.rossi@gmail.com", "elproxy"),
-    Committer("Pratik Solanki", "psolanki@apple.com", "psolanki"),
-    Committer("Pravin D", ["pravind@webkit.org", "pravin.d@samsung.com"], "pravind"),
-    Committer("Qi Zhang", "qi.zhang02180@gmail.com", "qi"),
-    Committer("Rafael Antognolli", "antognolli@profusion.mobi", "antognolli"),
-    Committer("Rafael Brandao", "rafael.lobo@openbossa.org", "rafaelbrandao"),
-    Committer("Rafael Weinstein", "rafaelw@chromium.org", "rafaelw"),
-    Committer("Raphael Kubo da Costa", ["rakuco@webkit.org", "rakuco@FreeBSD.org", "raphael.kubo.da.costa@intel.com"], "rakuco"),
-    Committer("Ravi Kasibhatla", "ravi.kasibhatla@motorola.com", "kphanee"),
-    Committer("Raymond Toy", ["rtoy@google.com", "rtoy@chromium.org"], "rtoy"),
-    Committer("Renata Hodovan", "reni@webkit.org", "reni"),
-    Committer("Robert Hogan", ["robert@webkit.org", "robert@roberthogan.net", "lists@roberthogan.net"], "rhogan"),
-    Committer("Robert Kroeger", "rjkroege@chromium.org", "rjkroege"),
-    Committer("Roger Fong", "roger_fong@apple.com", "rfong"),
-    Committer("Roland Steiner", "rolandsteiner@chromium.org"),
-    Committer("Ryuan Choi", ["ryuan.choi@samsung.com", "ryuan.choi@gmail.com"],"ryuan"),
-    Committer("Sadrul Habib Chowdhury", "sadrul@chromium.org", ["sadrul", "sadrulhc"]),
-    Committer(u"Sami Ky\u00f6stil\u00e4", "skyostil@chromium.org", "skyostil"),
-    Committer("Satish Sampath", "satish@chromium.org"),
-    Committer("Scott Violet", "sky@chromium.org", "sky"),
-    Committer("Sergio Villar Senin", ["svillar@igalia.com", "sergio@webkit.org"], "svillar"),
-    Committer("Shawn Singh", "shawnsingh@chromium.org", "shawnsingh"),
-    Committer("Shinya Kawanaka", "shinyak@chromium.org", "shinyak"),
-    Committer("Siddharth Mathur", "siddharth.mathur@nokia.com", "simathur"),
-    Committer("Silvia Pfeiffer", "silviapf@chromium.org", "silvia"),
-    Committer("Simon Pena", "spena@igalia.com", "spenap"),
-    Committer("Steve Lacey", "sjl@chromium.org", "stevela"),
-    Committer("Sudarsana Nagineni", ["naginenis@gmail.com", "sudarsana.nagineni@linux.intel.com", "sudarsana.nagineni@intel.com"], "babu"),
-    Committer("Szilard Ledan-Muntean", "szledan@inf.u-szeged.hu", "szledan"),
-    Committer("Taiju Tsuiki", "tzik@chromium.org", "tzik"),
-    Committer("Takashi Sakamoto", "tasak@google.com", "tasak"),
-    Committer("Takashi Toyoshima", ["toyoshim@chromium.org", "toyoshim+watchlist@chromium.org"], "toyoshim"),
-    Committer("Terry Anderson", "tdanderson@chromium.org", "tdanderson"),
-    Committer("Thiago Marcos P. Santos", ["tmpsantos@gmail.com", "thiago.santos@intel.com"], "tmpsantos"),
-    Committer("Thomas Sepez", "tsepez@chromium.org", "tsepez"),
-    Committer("Tom Hudson", ["tomhudson@google.com", "tomhudson@chromium.org"], "tomhudson"),
-    Committer("Tom Zakrajsek", "tomz@codeaurora.org", "tomz"),
-    Committer("Tommy Widenflycht", "tommyw@google.com", "tommyw"),
-    Committer("Trey Matteson", "trey@usa.net", "trey"),
-    Committer("Tristan O'Tierney", ["tristan@otierney.net", "tristan@apple.com"]),
-    Committer("Vangelis Kokkevis", "vangelis@chromium.org", "vangelis"),
-    Committer("Viatcheslav Ostapenko", ["ostap73@gmail.com", "v.ostapenko@samsung.com", "v.ostapenko@sisa.samsung.com"], "ostap"),
-    Committer("Victor Carbune", ["vcarbune@chromium.org", "victor@rosedu.org"], "vcarbune"),
-    Committer("Victor Wang", "victorw@chromium.org", "victorw"),
-    Committer("Victoria Kirst", ["vrk@chromium.org", "vrk@google.com"], "vrk"),
-    Committer("Vincent Scheib", "scheib@chromium.org", "scheib"),
-    Committer("Vineet Chaudhary", "rgf748@motorola.com", "vineetc"),
-    Committer("Vitaly Repeshko", "vitalyr@chromium.org"),
-    Committer("Vivek Galatage", ["vivekg@webkit.org", "vivek.vg@samsung.com"], "vivekg"),
-    Committer("William Siegrist", "wsiegrist@apple.com", "wms"),
-    Committer("W. James MacLean", "wjmaclean@chromium.org", "seumas"),
-    Committer("Xianzhu Wang", ["wangxianzhu@chromium.org", "phnixwxz@gmail.com", "wangxianzhu@google.com"], "wangxianzhu"),
-    Committer("Xiaohai Wei", ["james.wei@intel.com", "wistoch@chromium.org"], "wistoch"),
-    Committer("Xiaomei Ji", "xji@chromium.org", "xji"),
-    Committer("Xingnan Wang", "xingnan.wang@intel.com", "xingnan"),
-    Committer("Yael Aharon", "yael@webkit.org", "yael"),
-    Committer("Yaar Schnitman", ["yaar@chromium.org", "yaar@google.com"]),
-    Committer("Yi Shen", ["max.hong.shen@gmail.com", "yi.shen@sisa.samsung.com", "yi.4.shen@nokia.com"]),
-    Committer("Yongjun Zhang", ["yongjun_zhang@apple.com", "yongjun.zhang@nokia.com"]),
-    Committer("Yoshifumi Inoue", "yosin@chromium.org", "yosin"),
-    Committer("Yuqiang Xian", "yuqiang.xian@intel.com"),
-    Committer("Yuzo Fujishima", "yuzo@google.com", "yuzo"),
-    Committer("Zalan Bujtas", ["zalan@apple.com", "zbujtas@gmail.com", "zalan.bujtas@nokia.com"], "zalan"),
-    Committer("Zeno Albisser", ["zeno@webkit.org", "zeno.albisser@nokia.com"], "zalbisser"),
-    Committer("Zhenyao Mo", "zmo@google.com", "zhenyao"),
-    Committer("Zoltan Arvai", "zarvai@inf.u-szeged.hu", "azbest_hu"),
-    Committer("Zoltan Horvath", ["zoltan@webkit.org", "hzoltan@inf.u-szeged.hu", "horvath.zoltan.6@stud.u-szeged.hu"], "zoltan"),
-    Committer(u"\u017dan Dober\u0161ek", "zandobersek@gmail.com", "zdobersek"),
-]
-
-
-# This is intended as a canonical, machine-readable list of all reviewers for
-# WebKit.  If your name is missing here and you are a reviewer, please add it.
-# No review needed.
-
-
-reviewers_list = [
-    Reviewer("Abhishek Arya", "inferno@chromium.org", "inferno-sec"),
-    Reviewer("Ada Chan", "adachan@apple.com", "chanada"),
-    Reviewer("Adam Barth", "abarth@webkit.org", "abarth"),
-    Reviewer("Adam Roben", ["aroben@webkit.org", "aroben@apple.com"], "aroben"),
-    Reviewer("Adam Treat", ["treat@kde.org", "treat@webkit.org"], "manyoso"),
-    Reviewer("Adele Peterson", "adele@apple.com", "adele"),
-    Reviewer("Adrienne Walker", ["enne@google.com", "enne@chromium.org"], "enne"),
-    Reviewer("Alejandro G. Castro", ["alex@igalia.com", "alex@webkit.org"], "alexg__"),
-    Reviewer("Alexander Pavlov", ["apavlov@chromium.org", "pavlov81@gmail.com"], "apavlov"),
-    Reviewer("Alexey Proskuryakov", ["ap@webkit.org", "ap@apple.com"], "ap"),
-    Reviewer("Alexis Menard", ["alexis@webkit.org", "menard@kde.org"], "darktears"),
-    Reviewer("Alice Liu", "alice.liu@apple.com", "aliu"),
-    Reviewer("Allan Sandfeld Jensen", ["allan.jensen@digia.com", "kde@carewolf.com", "sandfeld@kde.org", "allan.jensen@nokia.com"], "carewolf"),
-    Reviewer("Alp Toker", ["alp@nuanti.com", "alp@atoker.com", "alp@webkit.org"], "alp"),
-    Reviewer("Anders Carlsson", ["andersca@apple.com", "acarlsson@apple.com"], "andersca"),
-    Reviewer("Andreas Kling", ["akling@apple.com", "kling@webkit.org", "awesomekling@apple.com", "andreas.kling@nokia.com"], "kling"),
-    Reviewer("Andy Estes", "aestes@apple.com", "estes"),
-    Reviewer("Antonio Gomes", ["tonikitoo@webkit.org", "a1.gomes@sisa.samsung.com", "antonio.netto@samsung.com", "antonio.gomes@openbossa.org"], "tonikitoo"),
-    Reviewer("Antti Koivisto", ["koivisto@iki.fi", "antti@apple.com", "antti.j.koivisto@nokia.com"], "anttik"),
-    Reviewer("Ariya Hidayat", ["ariya.hidayat@gmail.com", "ariya@sencha.com", "ariya@webkit.org"], "ariya"),
-    Reviewer("Benjamin Poulain", ["benjamin@webkit.org", "benjamin.poulain@nokia.com", "ikipou@gmail.com"], "benjaminp"),
-    Reviewer("Beth Dakin", "bdakin@apple.com", "dethbakin"),
-    Reviewer("Brady Eidson", "beidson@apple.com", "bradee-oh"),
-    Reviewer("Brent Fulgham", "bfulgham@webkit.org", "bfulgham"),
-    Reviewer("Brian Weinstein", "bweinstein@apple.com", "bweinstein"),
-    Reviewer("Caio Marcelo de Oliveira Filho", ["cmarcelo@webkit.org", "cmarcelo@gmail.com", "caio.oliveira@openbossa.org"], "cmarcelo"),
-    Reviewer("Cameron Zwarich", ["zwarich@apple.com", "cwzwarich@apple.com", "cwzwarich@webkit.org"]),
-    Reviewer("Carlos Garcia Campos", ["cgarcia@igalia.com", "carlosgc@gnome.org", "carlosgc@webkit.org"], "KaL"),
-    Reviewer("Chang Shu", ["cshu@webkit.org", "c.shu@sisa.samsung.com"], "cshu"),
-    Reviewer("Chris Blumenberg", "cblu@apple.com", "cblu"),
-    Reviewer("Chris Marrin", "cmarrin@apple.com", "cmarrin"),
-    Reviewer("Chris Fleizach", "cfleizach@apple.com", "cfleizach"),
-    Reviewer("Chris Jerdonek", "cjerdonek@webkit.org", "cjerdonek"),
-    Reviewer("Chris Rogers", "crogers@google.com", "crogers"),
-    Reviewer(u"Csaba Osztrogon\u00e1c", "ossy@webkit.org", "ossy"),
-    Reviewer("Dan Bernstein", ["mitz@webkit.org", "mitz@apple.com"], "mitzpettel"),
-    Reviewer("Daniel Bates", "dbates@webkit.org", "dydz"),
-    Reviewer("Darin Adler", "darin@apple.com", "darin"),
-    Reviewer("Darin Fisher", ["fishd@chromium.org", "darin@chromium.org"], "fishd"),
-    Reviewer("David Harrison", "harrison@apple.com", "harrison"),
-    Reviewer("David Hyatt", "hyatt@apple.com", ["dhyatt", "hyatt"]),
-    Reviewer("David Kilzer", ["ddkilzer@webkit.org", "ddkilzer@apple.com"], "ddkilzer"),
-    Reviewer("David Levin", "levin@chromium.org", "dave_levin"),
-    Reviewer("Dean Jackson", "dino@apple.com", "dino"),
-    Reviewer("Dimitri Glazkov", "dglazkov@chromium.org", "dglazkov"),
-    Reviewer("Dirk Pranke", "dpranke@chromium.org", "dpranke"),
-    Reviewer("Dirk Schulze", "krit@webkit.org", "krit"),
-    Reviewer("Dmitry Titov", "dimich@chromium.org", "dimich"),
-    Reviewer("Don Melton", "gramps@apple.com", "gramps"),
-    Reviewer("Dumitru Daniliuc", "dumi@chromium.org", "dumi"),
-    Reviewer("Elliott Sprehn", ["esprehn@chromium.org", "esprehn+autocc@chromium.org"], "esprehn"),
-    Reviewer("Emil A Eklund", "eae@chromium.org", "eae"),
-    Reviewer("Enrica Casucci", "enrica@apple.com", "enrica"),
-    Reviewer("Eric Carlson", "eric.carlson@apple.com", "eric_carlson"),
-    Reviewer("Eric Seidel", "eric@webkit.org", "eseidel"),
-    Reviewer("Filip Pizlo", "fpizlo@apple.com", "pizlo"),
-    Reviewer("Gavin Barraclough", "barraclough@apple.com", "gbarra"),
-    Reviewer("Geoffrey Garen", "ggaren@apple.com", "ggaren"),
-    Reviewer("George Staikos", ["staikos@kde.org", "staikos@webkit.org"]),
-    Reviewer("Gustavo Noronha Silva", ["gns@gnome.org", "kov@webkit.org", "gustavo.noronha@collabora.co.uk", "gustavo.noronha@collabora.com"], "kov"),
-    Reviewer("Gyuyoung Kim", ["gyuyoung.kim@samsung.com", "gyuyoung.kim@webkit.org"], "gyuyoung"),
-    Reviewer("Hajime Morrita", ["morrita@google.com", "morrita@chromium.org"], "morrita"),
-    Reviewer("Holger Freyther", ["zecke@selfish.org", "zecke@webkit.org"], "zecke"),
-    Reviewer("James Robinson", ["jamesr@chromium.org", "jamesr@google.com"], "jamesr"),
-    Reviewer("Jan Alonzo", ["jmalonzo@gmail.com", "jmalonzo@webkit.org"], "janm"),
-    Reviewer("Jer Noble", "jer.noble@apple.com", "jernoble"),
-    Reviewer("Jeremy Orlow", ["jorlow@webkit.org", "jorlow@chromium.org"], "jorlow"),
-    Reviewer("Jessie Berlin", ["jberlin@webkit.org", "jberlin@apple.com"], "jessieberlin"),
-    Reviewer("Jian Li", "jianli@chromium.org", "jianli"),
-    Reviewer("Jocelyn Turcotte", ["jocelyn.turcotte@digia.com", "jocelyn.turcotte@nokia.com"], "jturcotte"),
-    Reviewer("Jochen Eisinger", "jochen@chromium.org", "jochen__"),
-    Reviewer("John Sullivan", "sullivan@apple.com", "sullivan"),
-    Reviewer("Jon Honeycutt", "jhoneycutt@apple.com", "jhoneycutt"),
-    Reviewer("Joseph Pecoraro", ["joepeck@webkit.org", "pecoraro@apple.com"], "JoePeck"),
-    Reviewer("Julien Chaffraix", ["jchaffraix@webkit.org", "julien.chaffraix@gmail.com", "jchaffraix@google.com", "jchaffraix@codeaurora.org"], "jchaffraix"),
-    Reviewer("Justin Garcia", "justin.garcia@apple.com", "justing"),
-    Reviewer("Ken Kocienda", "kocienda@apple.com"),
-    Reviewer("Kenneth Rohde Christiansen", ["kenneth@webkit.org", "kenneth.r.christiansen@intel.com", "kenneth.christiansen@gmail.com"], ["kenneth_", "kenneth", "kenne"]),
-    Reviewer("Kenneth Russell", ["kbr@google.com", "kbr@chromium.org"], ["kbr_google", "kbrgg"]),
-    Reviewer("Kent Tamura", ["tkent@chromium.org", "tkent@google.com"], "tkent"),
-    Reviewer("Kentaro Hara", ["haraken@chromium.org"], "haraken"),
-    Reviewer("Kevin Decker", "kdecker@apple.com", "superkevin"),
-    Reviewer("Kevin McCullough", "kmccullough@apple.com", "maculloch"),
-    Reviewer("Kevin Ollivier", ["kevino@theolliviers.com", "kevino@webkit.org"], "kollivier"),
-    Reviewer("Lars Knoll", ["lars@trolltech.com", "lars@kde.org", "lars.knoll@nokia.com"], "lars"),
-    Reviewer("Laszlo Gombos", ["laszlo.gombos@webkit.org", "l.gombos@samsung.com", "laszlo.gombos@gmail.com", "laszlo.1.gombos@nokia.com"], "lgombos"),
-    Reviewer("Levi Weintraub", ["leviw@chromium.org", "leviw@google.com", "lweintraub@apple.com"], "leviw"),
-    Reviewer("Luiz Agostini", ["luiz@webkit.org", "luiz.agostini@openbossa.org"], "lca"),
-    Reviewer("Maciej Stachowiak", "mjs@apple.com", "othermaciej"),
-    Reviewer("Mark Hahnenberg", "mhahnenberg@apple.com", "mhahnenberg"),
-    Reviewer("Mark Rowe", "mrowe@apple.com", "bdash"),
-    Reviewer("Martin Robinson", ["mrobinson@webkit.org", "mrobinson@igalia.com", "martin.james.robinson@gmail.com"], "mrobinson"),
-    Reviewer("Michael Saboff", "msaboff@apple.com", "msaboff"),
-    Reviewer("Mihai Parparita", "mihaip@chromium.org", "mihaip"),
-    Reviewer("Nate Chapin", "japhet@chromium.org", ["japhet", "natechapin"]),
-    Reviewer("Nico Weber", ["thakis@chromium.org", "thakis@google.com"], "thakis"),
-    Reviewer("Nikolas Zimmermann", ["zimmermann@kde.org", "zimmermann@physik.rwth-aachen.de", "zimmermann@webkit.org", "nzimmermann@blackberry.com", "nzimmermann@rim.com"], "wildfox"),
-    Reviewer("Noam Rosenthal", ["noam@webkit.org", "noam.rosenthal@nokia.com"], "noamr"),
-    Reviewer("Ojan Vafai", ["ojan@chromium.org", "ojan.autocc@gmail.com"], "ojan"),
-    Reviewer("Oliver Hunt", "oliver@apple.com", "olliej"),
-    Reviewer("Pavel Feldman", ["pfeldman@chromium.org", "pfeldman@google.com"], "pfeldman"),
-    Reviewer("Philip Rogers", ["pdr@google.com", "pdr@chromium.org"], "pdr"),
-    Reviewer("Philippe Normand", ["pnormand@igalia.com", "philn@webkit.org", "philn@igalia.com"], "philn"),
-    Reviewer("Richard Williamson", "rjw@apple.com", "rjw"),
-    Reviewer("Rob Buis", ["rwlbuis@gmail.com", "rwlbuis@webkit.org", "rbuis@blackberry.com", "rbuis@rim.com"], "rwlbuis"),
-    Reviewer("Ryosuke Niwa", "rniwa@webkit.org", "rniwa"),
-    Reviewer("Sam Weinig", ["sam@webkit.org", "weinig@apple.com"], "weinig"),
-    Reviewer("Shinichiro Hamaji", "hamaji@chromium.org", "hamaji"),
-    Reviewer("Simon Fraser", "simon.fraser@apple.com", "smfr"),
-    Reviewer("Simon Hausmann", ["hausmann@webkit.org", "hausmann@kde.org", "simon.hausmann@digia.com"], "tronical"),
-    Reviewer("Stephanie Lewis", "slewis@apple.com", "sundiamonde"),
-    Reviewer("Stephen Chenney", "schenney@chromium.org", "schenney"),
-    Reviewer("Stephen White", "senorblanco@chromium.org", "senorblanco"),
-    Reviewer("Steve Block", ["steveblock@chromium.org", "steveblock@google.com"], "steveblock"),
-    Reviewer("Steve Falkenburg", "sfalken@apple.com", "sfalken"),
-    Reviewer("Tim Omernick", "timo@apple.com"),
-    Reviewer("Timothy Hatcher", ["timothy@apple.com", "timothy@hatcher.name"], "xenon"),
-    Reviewer("Tim Horton", "timothy_horton@apple.com", "thorton"),
-    Reviewer("Tony Chang", "tony@chromium.org", "tony^work"),
-    Reviewer("Tony Gentilcore", "tonyg@chromium.org", "tonyg-cr"),
-    Reviewer(u"Tor Arne Vestb\u00f8", ["vestbo@webkit.org", "tor.arne.vestbo@nokia.com"], "torarne"),
-    Reviewer("Vicki Murley", "vicki@apple.com"),
-    Reviewer("Vsevolod Vlasov", "vsevik@chromium.org", "vsevik"),
-    Reviewer("Xan Lopez", ["xan.lopez@gmail.com", "xan@gnome.org", "xan@webkit.org", "xlopez@igalia.com"], "xan"),
-    Reviewer("Yong Li", ["yong.li.webkit@outlook.com"], "yoli"),
-    Reviewer("Yury Semikhatsky", "yurys@chromium.org", "yurys"),
-    Reviewer("Yuta Kitamura", "yutak@chromium.org", "yutak"),
-    Reviewer("Zack Rusin", "zack@kde.org", "zackr"),
-    Reviewer("Zoltan Herczeg", ["zherczeg@webkit.org", "zherczeg@inf.u-szeged.hu"], "zherczeg"),
-]
-
 class CommitterList(object):
 
     # Committers and reviewers are passed in to allow easy testing
     def __init__(self,
-                 committers=committers_unable_to_review,
-                 reviewers=reviewers_list,
-                 contributors=contributors_who_are_not_committers):
+                 committers=[],
+                 reviewers=[],
+                 contributors=[]):
+        # FIXME: These arguments only exist for testing. Clean it up.
+        if not (committers or reviewers or contributors):
+            loaded_data = self.load_json()
+            contributors = loaded_data['Contributors']
+            committers = loaded_data['Committers']
+            reviewers = loaded_data['Reviewers']
+
         self._contributors = contributors + committers + reviewers
         self._committers = committers + reviewers
         self._reviewers = reviewers
@@ -608,6 +124,19 @@ class CommitterList(object):
         self._accounts_by_email = {}
         self._accounts_by_login = {}
 
+    @staticmethod
+    @memoized
+    def load_json():
+        filesystem = FileSystem()
+        json_path = filesystem.join(filesystem.dirname(filesystem.path_to_module('webkitpy.common.config')), 'contributors.json')
+        contributors = json.loads(filesystem.read_text_file(json_path))
+
+        return {
+            'Contributors': [Contributor(name, data.get('emails'), data.get('nicks')) for name, data in contributors['Contributors'].iteritems()],
+            'Committers': [Committer(name, data.get('emails'), data.get('nicks')) for name, data in contributors['Committers'].iteritems()],
+            'Reviewers': [Reviewer(name, data.get('emails'), data.get('nicks')) for name, data in contributors['Reviewers'].iteritems()],
+        }
+
     def contributors(self):
         return self._contributors
 
diff --git a/Tools/Scripts/webkitpy/common/config/contributors.json b/Tools/Scripts/webkitpy/common/config/contributors.json
new file mode 100644 (file)
index 0000000..d3fa26f
--- /dev/null
@@ -0,0 +1,478 @@
+{
+    "Contributors": {
+        "Adobe Bug Tracker": {"emails": ["WebkitBugTracker@adobe.com"]},
+        "Aharon Lanin": {"emails": ["aharon@google.com"]},
+        "Alan Cutter": {"emails": ["alancutter@chromium.org"], "nicks": ["alancutter"]},
+        "Alan Stearns": {"emails": ["stearns@adobe.com"], "nicks": ["astearns"]},
+        "Alejandro Pineiro": {"emails": ["apinheiro@igalia.com"]},
+        "Alexey Marinichev": {"emails": ["amarinichev@chromium.org", "amarinichev@google.com"], "nicks": ["amarinichev"]},
+        "Andras Piroska": {"emails": ["pandras@inf.u-szeged.hu"], "nicks": ["andris88"]},
+        "Anne van Kesteren": {"emails": ["annevk@annevk.nl"], "nicks": ["annevk"]},
+        "Annie Sullivan": {"emails": ["sullivan@chromium.org"], "nicks": ["annie"]},
+        "Anton Vayvod": {"emails": ["avayvod@chromium.org"], "nicks": ["avayvod"]},
+        "Aryeh Gregor": {"emails": ["ayg@aryeh.name"], "nicks": ["AryehGregor"]},
+        "Balazs Ankes": {"emails": ["bank@inf.u-szeged.hu"], "nicks": ["abalazs"]},
+        "Bem Jones-Bey": {"emails": ["bjonesbe@adobe.com"], "nicks": ["bemjb"]},
+        "Brian Salomon": {"emails": ["bsalomon@google.com"]},
+        "Christian Biesinger": {"emails": ["cbiesinger@chromium.org"], "nicks": ["cbiesinger"]},
+        "Commit Queue": {"emails": ["commit-queue@webkit.org"]},
+        "Daniel Sievers": {"emails": ["sievers@chromium.org"]},
+        "David Dorwin": {"emails": ["ddorwin@chromium.org"], "nicks": ["ddorwin"]},
+        "David Reveman": {"emails": ["reveman@chromium.org"], "nicks": ["reveman"]},
+        "Dongsung Huang": {"emails": ["luxtella@company100.net"], "nicks": ["Huang"]},
+        "Douglas Davidson": {"emails": ["ddavidso@apple.com"]},
+        "Douglas Stockwell": {"emails": ["dstockwell@chromium.org"], "nicks": ["dstockwell"]},
+        "Edward O'Connor": {"emails": ["eoconnor@apple.com"], "nicks": ["hober"]},
+        "Eric Penner": {"emails": ["epenner@chromium.org"], "nicks": ["epenner"]},
+        "Felician Marton": {"emails": ["felician@inf.u-szeged.hu", "marton.felician.zoltan@stud.u-szeged.hu"], "nicks": ["Felician"]},
+        "Finnur Thorarinsson": {"emails": ["finnur@chromium.org", "finnur.webkit@gmail.com"], "nicks": ["finnur"]},
+        "Forms Bugs": {"emails": ["forms-bugs@chromium.org"]},
+        "Gabor Ballabas": {"emails": ["gaborb@inf.u-szeged.hu"], "nicks": ["bgabor"]},
+        "Grace Kloba": {"emails": ["klobag@chromium.org"], "nicks": ["klobag"]},
+        "Greg Simon": {"emails": ["gregsimon@chromium.org"], "nicks": ["gregsimon"]},
+        "Hao Zheng": {"emails": ["zhenghao@chromium.org"]},
+        "Harald Alvestrand": {"emails": ["hta@google.com"], "nicks": ["hta"]},
+        "Ian Hickson": {"emails": ["ian@hixie.ch"], "nicks": ["hixie"]},
+        "Jae Hyun Park": {"emails": ["jae.park@company100.net"], "nicks": ["jaepark"]},
+        "James Craig": {"emails": ["james@cookiecrook.com"], "nicks": ["jcraig"]},
+        "Jonathan Backer": {"emails": ["backer@chromium.org"], "nicks": ["backer"]},
+        "Jeff Timanus": {"emails": ["twiz@chromium.org", "twiz@google.com"], "nicks": ["twiz"]},
+        "Jing Zhao": {"emails": ["jingzhao@chromium.org"]},
+        "John Bates": {"emails": ["jbates@google.com", "jbates@chromium.org"], "nicks": ["jbates"]},
+        "John Bauman": {"emails": ["jbauman@chromium.org", "jbauman@google.com"], "nicks": ["jbauman"]},
+        "John Mellor": {"emails": ["johnme@chromium.org"], "nicks": ["johnme"]},
+        "Kulanthaivel Palanichamy": {"emails": ["kulanthaivel@codeaurora.org"], "nicks": ["kvel"]},
+        "Koji Hara": {"emails": ["kojih@chromium.org"], "nicks": ["kojih"]},
+        "Koji Ishii": {"emails": ["kojiishi@gmail.com"]},
+        "Michael Pruett": {"emails": ["michael@68k.org"], "nicks": ["mpruett"]},
+        "Mihai Balan": {"emails": ["mibalan@adobe.com"], "nicks": ["miChou"]},
+        "Mihai Maerean": {"emails": ["mmaerean@adobe.com"], "nicks": ["mmaerean"]},
+        "Min Qin": {"emails": ["qinmin@chromium.org"]},
+        "Nandor Huszka": {"emails": ["hnandor@inf.u-szeged.hu"], "nicks": ["hnandor"]},
+        "Nils Barth": {"emails": ["nbarth@chromium.org"], "nicks": ["nbarth"]},
+        "Oliver Varga": {"emails": ["voliver@inf.u-szeged.hu", "Varga.Oliver@stud.u-szeged.hu"], "nicks": ["TwistO"]},
+        "Peter Gal": {"emails": ["galpeter@inf.u-szeged.hu"], "nicks": ["elecro"]},
+        "Peter Linss": {"emails": ["peter.linss@hp.com"], "nicks": ["plinss"]},
+        "Radar WebKit Bug Importer": {"emails": ["webkit-bug-importer@group.apple.com"]},
+        "Raul Hudea": {"emails": ["rhudea@adobe.com"], "nicks": ["rhudea"]},
+        "Roland Takacs": {"emails": ["rtakacs@inf.u-szeged.hu"], "nicks": ["rtakacs"]},
+        "Tab Atkins": {"emails": ["tabatkins@google.com", "jackalmage@gmail.com"], "nicks": ["tabatkins"]},
+        "Tamas Czene": {"emails": ["tczene@inf.u-szeged.hu", "Czene.Tamas@stud.u-szeged.hu"], "nicks": ["tczene"]},
+        "Tien-Ren Chen": {"emails": ["trchen@chromium.org"], "nicks": ["trchen"]},
+        "Tim 'mithro' Ansell": {"emails": ["mithro@mithis.com"], "nicks": ["mithro"]},
+        "Tim Volodine": {"emails": ["timvolodine@chromium.org"], "nicks": ["timvolodine"]},
+        "WebKit Review Bot": {"emails": ["webkit.review.bot@gmail.com"], "nicks": ["sheriff-bot"]},
+        "Web Components Team": {"emails": ["webcomponents-bugzilla@chromium.org"]},
+        "Wyatt Carss": {"emails": ["wcarss@chromium.org", "wcarss@google.com"], "nicks": ["wcarss"]},
+        "Zeev Lieber": {"emails": ["zlieber@chromium.org"]},
+        "Zsolt Feher": {"emails": ["feherzs@inf.u-szeged.hu"], "nicks": ["Smith"]}
+    },
+    "Committers": {
+        "Aaron Boodman": {"emails": ["aa@chromium.org"], "nicks": ["aboodman"]},
+        "Aaron Colwell": {"emails": ["acolwell@chromium.org"], "nicks": ["acolwell"]},
+        "Adam Bergkvist": {"emails": ["adam.bergkvist@ericsson.com"], "nicks": ["adambe"]},
+        "Adam Kallai": {"emails": ["kadam@inf.u-szeged.hu"], "nicks": ["kadam"]},
+        "Adam Klein": {"emails": ["adamk@chromium.org"], "nicks": ["aklein"]},
+        "Adam Langley": {"emails": ["agl@chromium.org"], "nicks": ["agl"]},
+        "Ademar de Souza Reis Jr": {"emails": ["ademar.reis@gmail.com", "ademar@webkit.org"], "nicks": ["ademar"]},
+        "Albert J. Wong": {"emails": ["ajwong@chromium.org"]},
+        "Alec Flett": {"emails": ["alecflett@chromium.org", "alecflett@google.com"], "nicks": ["alecf"]},
+        "Alexander F\u00e6r\u00f8y": {"emails": ["ahf@0x90.dk", "alexander.faeroy@nokia.com"], "nicks": ["ahf"]},
+        "Alexander Kellett": {"emails": ["lypanov@mac.com", "a-lists001@lypanov.net", "lypanov@kde.org"], "nicks": ["lypanov"]},
+        "Alexandre Elias": {"emails": ["aelias@chromium.org", "aelias@google.com"], "nicks": ["aelias"]},
+        "Alexandru Chiculita": {"emails": ["achicu@adobe.com"], "nicks": ["achicu"]},
+        "Alice Boxhall": {"emails": ["aboxhall@chromium.org"], "nicks": ["aboxhall"]},
+        "Alok Priyadarshi": {"emails": ["alokp@chromium.org"], "nicks": ["alokp"]},
+        "Ami Fischman": {"emails": ["fischman@chromium.org", "fischman@google.com"], "nicks": ["fischman"]},
+        "Amruth Raj": {"emails": ["amruthraj@motorola.com"], "nicks": ["amruthraj"]},
+        "Andre Boule": {"emails": ["aboule@apple.com"]},
+        "Andrei Bucur": {"emails": ["abucur@adobe.com"], "nicks": ["abucur"]},
+        "Andrei Popescu": {"emails": ["andreip@google.com"], "nicks": ["andreip"]},
+        "Andrew Wellington": {"emails": ["andrew@webkit.org", "proton@wiretapped.net"], "nicks": ["proton"]},
+        "Andrew Scherkus": {"emails": ["scherkus@chromium.org"], "nicks": ["scherkus"]},
+        "Andrey Adaykin": {"emails": ["aandrey@chromium.org"], "nicks": ["aandrey"]},
+        "Andrey Kosyakov": {"emails": ["caseq@chromium.org"], "nicks": ["caseq"]},
+        "Andras Becsi": {"emails": ["abecsi@webkit.org", "andras.becsi@digia.com"], "nicks": ["bbandix"]},
+        "Andy Wingo": {"emails": ["wingo@igalia.com"], "nicks": ["wingo"]},
+        "Anna Cavender": {"emails": ["annacc@chromium.org"], "nicks": ["annacc"]},
+        "Anthony Ricaud": {"emails": ["rik@webkit.org"], "nicks": ["rik"]},
+        "Antoine Labour": {"emails": ["piman@chromium.org"], "nicks": ["piman"]},
+        "Antoine Quint": {"emails": ["graouts@apple.com"], "nicks": ["graouts"]},
+        "Anton D'Auria": {"emails": ["adauria@apple.com"], "nicks": ["antonlefou"]},
+        "Anton Muhin": {"emails": ["antonm@chromium.org"], "nicks": ["antonm"]},
+        "Arko Saha": {"emails": ["arko@motorola.com"], "nicks": ["arkos"]},
+        "Arvid Nilsson": {"emails": ["anilsson@blackberry.com", "anilsson@rim.com"], "nicks": ["anilsson"]},
+        "Balazs Kelemen": {"emails": ["kbalazs@webkit.org"], "nicks": ["kbalazs"]},
+        "Bear Travis": {"emails": ["betravis@adobe.com"], "nicks": ["betravis"]},
+        "Ben Murdoch": {"emails": ["benm@google.com"], "nicks": ["benm"]},
+        "Ben Wells": {"emails": ["benwells@chromium.org"], "nicks": ["benwells"]},
+        "Benjamin C Meyer": {"emails": ["ben@meyerhome.net", "ben@webkit.org"], "nicks": ["icefox"]},
+        "Benjamin Kalman": {"emails": ["kalman@chromium.org", "kalman@google.com"], "nicks": ["kalman"]},
+        "Benjamin Otte": {"emails": ["otte@gnome.org", "otte@webkit.org"], "nicks": ["otte"]},
+        "Bill Budge": {"emails": ["bbudge@chromium.org", "bbudge@gmail.com"], "nicks": ["bbudge"]},
+        "Brett Wilson": {"emails": ["brettw@chromium.org"], "nicks": ["brettx"]},
+        "Bruno de Oliveira Abinader": {"emails": ["bruno.abinader@basyskom.com", "brunoabinader@gmail.com"], "nicks": ["abinader"]},
+        "Byungwoo Lee": {"emails": ["bw80.lee@samsung.com", "bw80.lee@gmail.com"], "nicks": ["byungwoo"]},
+        "Cameron McCormack": {"emails": ["cam@mcc.id.au", "cam@webkit.org"], "nicks": ["heycam"]},
+        "Carol Szabo": {"emails": ["carol@webkit.org", "carol.szabo@nokia.com"], "nicks": ["cszabo1"]},
+        "Cary Clark": {"emails": ["caryclark@google.com", "caryclark@chromium.org"], "nicks": ["caryclark"]},
+        "Charles Reis": {"emails": ["creis@chromium.org"], "nicks": ["creis"]},
+        "Charles Wei": {"emails": ["charles.wei@torchmobile.com.cn"], "nicks": ["cswei"]},
+        "Chris Evans": {"emails": ["cevans@google.com", "cevans@chromium.org"]},
+        "Chris Guillory": {"emails": ["ctguil@chromium.org", "chris.guillory@google.com"], "nicks": ["ctguil"]},
+        "Chris Petersen": {"emails": ["cpetersen@apple.com"], "nicks": ["cpetersen"]},
+        "Christian Dywan": {"emails": ["christian@twotoasts.de", "christian@webkit.org", "christian@lanedo.com"]},
+        "Christophe Dumez": {"emails": ["dchris@gmail.com", "ch.dumez@sisa.samsung.com"], "nicks": ["cdumez"]},
+        "Claudio Saavedra": {"emails": ["csaavedra@igalia.com"], "nicks": ["claudio___"]},
+        "Collin Jackson": {"emails": ["collinj@webkit.org"], "nicks": ["collinjackson"]},
+        "Cris Neckar": {"emails": ["cdn@chromium.org"], "nicks": ["cneckar"]},
+        "Dan Winship": {"emails": ["danw@gnome.org"], "nicks": ["danw"]},
+        "Dana Jansens": {"emails": ["danakj@chromium.org"], "nicks": ["danakj"]},
+        "Daniel Cheng": {"emails": ["dcheng@chromium.org"], "nicks": ["dcheng"]},
+        "Dave Barton": {"emails": ["dbarton@mathscribe.com"], "nicks": ["davebarton"]},
+        "Dave Tharp": {"emails": ["dtharp@codeaurora.org"], "nicks": ["dtharp"]},
+        "David Michael Barr": {"emails": ["davidbarr@chromium.org", "davidbarr@google.com", "b@rr-dav.id.au"], "nicks": ["barrbrain"]},
+        "David Grogan": {"emails": ["dgrogan@chromium.org", "dgrogan@google.com"], "nicks": ["dgrogan"]},
+        "David Smith": {"emails": ["catfish.man@gmail.com", "dsmith@webkit.org"], "nicks": ["catfishman"]},
+        "Diego Gonzalez": {"emails": ["diegohcg@webkit.org", "diego.gonzalez@openbossa.org"], "nicks": ["diegohcg"]},
+        "Dinu Jacob": {"emails": ["dinu.s.jacob@intel.com"], "nicks": ["dsjacob"]},
+        "Dmitry Gorbik": {"emails": ["dgorbik@apple.com"], "nicks": ["dgorbik"]},
+        "Dmitry Lomov": {"emails": ["dslomov@google.com", "dslomov@chromium.org"], "nicks": ["dslomov"]},
+        "Dominic Cooney": {"emails": ["dominicc@chromium.org", "dominicc@google.com"], "nicks": ["dominicc"]},
+        "Dominic Mazzoni": {"emails": ["dmazzoni@google.com", "dmazzoni@chromium.org"], "nicks": ["dmazzoni"]},
+        "Dominik R\u00f6ttsches": {"emails": ["dominik.rottsches@intel.com", "d-r@roettsches.de"], "nicks": ["drott"]},
+        "Dongwoo Joshua Im": {"emails": ["dw.im@samsung.com", "dwim79@gmail.com"], "nicks": ["dwim"]},
+        "Drew Wilson": {"emails": ["atwilson@chromium.org"], "nicks": ["atwilson"]},
+        "Eli Fidler": {"emails": ["efidler@blackberry.com", "efidler@rim.com"], "nicks": ["efidler"]},
+        "Elliot Poger": {"emails": ["epoger@chromium.org"], "nicks": ["epoger"]},
+        "Erik Arvidsson": {"emails": ["arv@chromium.org"], "nicks": ["arv"]},
+        "Eric Roman": {"emails": ["eroman@chromium.org"], "nicks": ["eroman"]},
+        "Eric Uhrhane": {"emails": ["ericu@chromium.org"], "nicks": ["ericu"]},
+        "Eugene Klyuchnikov": {"emails": ["eustas@chromium.org"], "nicks": ["eustas"]},
+        "Evan Martin": {"emails": ["evan@chromium.org"], "nicks": ["evmar"]},
+        "Evan Stade": {"emails": ["estade@chromium.org"], "nicks": ["estade"]},
+        "Fady Samuel": {"emails": ["fsamuel@chromium.org"], "nicks": ["fsamuel"]},
+        "Feng Qian": {"emails": ["feng@chromium.org"]},
+        "Florin Malita": {"emails": ["fmalita@chromium.org", "fmalita@google.com"], "nicks": ["fmalita"]},
+        "Fumitoshi Ukai": {"emails": ["ukai@chromium.org"], "nicks": ["ukai"]},
+        "Gabor Loki": {"emails": ["loki@webkit.org"], "nicks": ["loki04"]},
+        "Gabor Rapcsanyi": {"emails": ["rgabor@webkit.org", "rgabor@inf.u-szeged.hu"], "nicks": ["rgabor"]},
+        "Gavin Peters": {"emails": ["gavinp@chromium.org", "gavinp@webkit.org", "gavinp@google.com"], "nicks": ["gavinp"]},
+        "Girish Ramakrishnan": {"emails": ["girish@forwardbias.in", "ramakrishnan.girish@gmail.com"], "nicks": ["girishr"]},
+        "Glenn Adams": {"emails": ["glenn@skynav.com"], "nicks": ["gasubic"]},
+        "Graham Dennis": {"emails": ["Graham.Dennis@gmail.com", "gdennis@webkit.org"]},
+        "Greg Bolsinga": {"emails": ["bolsinga@apple.com"]},
+        "Gregg Tavares": {"emails": ["gman@chromium.org", "gman@google.com"], "nicks": ["gman"]},
+        "Grzegorz Czajkowski": {"emails": ["g.czajkowski@samsung.com"], "nicks": ["grzegorz"]},
+        "Hans Muller": {"emails": ["giles_joplin@yahoo.com"], "nicks": ["hansmuller"]},
+        "Hans Wennborg": {"emails": ["hans@chromium.org"], "nicks": ["hwennborg"]},
+        "Hayato Ito": {"emails": ["hayato@chromium.org"], "nicks": ["hayato"]},
+        "Hironori Bono": {"emails": ["hbono@chromium.org"], "nicks": ["hbono"]},
+        "Helder Correia": {"emails": ["helder.correia@nokia.com"], "nicks": ["helder"]},
+        "Hin-Chung Lam": {"emails": ["hclam@google.com", "hclam@chromium.org"]},
+        "Hugo Parente Lima": {"emails": ["hugo.lima@openbossa.org"], "nicks": ["hugopl"]},
+        "Ian Vollick": {"emails": ["vollick@chromium.org"], "nicks": ["vollick"]},
+        "Igor Trindade Oliveira": {"emails": ["igor.oliveira@webkit.org", "igor.o@sisa.samsung.com"], "nicks": ["igoroliveira"]},
+        "Ilya Sherman": {"emails": ["isherman@chromium.org"], "nicks": ["isherman"]},
+        "Ilya Tikhonovsky": {"emails": ["loislo@chromium.org"], "nicks": ["loislo"]},
+        "Ivan Krsti\u0107": {"emails": ["ike@apple.com"]},
+        "Jacky Jiang": {"emails": ["jkjiang@webkit.org", "zkjiang008@gmail.com", "zhajiang@blackberry.com", "zhajiang@rim.com"], "nicks": ["jkjiang"]},
+        "Jakob Petsovits": {"emails": ["jpetsovits@blackberry.com", "jpetsovits@rim.com", "jpetso@gmx.at"], "nicks": ["jpetso"]},
+        "Jakub Wieczorek": {"emails": ["jwieczorek@webkit.org"], "nicks": ["fawek"]},
+        "James Hawkins": {"emails": ["jhawkins@chromium.org", "jhawkins@google.com"], "nicks": ["jhawkins"]},
+        "James Kozianski": {"emails": ["koz@chromium.org", "koz@google.com"], "nicks": ["koz"]},
+        "James Simonsen": {"emails": ["simonjam@chromium.org"], "nicks": ["simonjam"]},
+        "Janos Badics": {"emails": ["jbadics@inf.u-szeged.hu"], "nicks": ["dicska"]},
+        "Jarred Nicholls": {"emails": ["jarred@webkit.org", "jarred@sencha.com"], "nicks": ["jarrednicholls"]},
+        "Jason Liu": {"emails": ["jason.liu@torchmobile.com.cn", "jasonliuwebkit@gmail.com"], "nicks": ["jasonliu"]},
+        "Jay Civelli": {"emails": ["jcivelli@chromium.org"], "nicks": ["jcivelli"]},
+        "Jeff Miller": {"emails": ["jeffm@apple.com"], "nicks": ["jeffm7"]},
+        "Jeffrey Pfau": {"emails": ["jpfau@apple.com"], "nicks": ["jpfau"]},
+        "Jenn Braithwaite": {"emails": ["jennb@chromium.org"], "nicks": ["jennb"]},
+        "Jens Alfke": {"emails": ["snej@chromium.org", "jens@apple.com"]},
+        "Jeremy Moskovich": {"emails": ["playmobil@google.com", "jeremy@chromium.org"], "nicks": ["jeremymos"]},
+        "Jesus Sanchez-Palencia": {"emails": ["jesus@webkit.org", "jesus.palencia@openbossa.org"], "nicks": ["jeez_"]},
+        "Jia Pu": {"emails": ["jpu@apple.com"]},
+        "Joanmarie Diggs": {"emails": ["jdiggs@igalia.com"], "nicks": ["joanie"]},
+        "Joe Thomas": {"emails": ["joethomas@motorola.com"], "nicks": ["joethomas"]},
+        "John Abd-El-Malek": {"emails": ["jam@chromium.org"], "nicks": ["jam"]},
+        "John Gregg": {"emails": ["johnnyg@google.com", "johnnyg@chromium.org"], "nicks": ["johnnyg"]},
+        "John Knottenbelt": {"emails": ["jknotten@chromium.org"], "nicks": ["jknotten"]},
+        "Johnny Ding": {"emails": ["jnd@chromium.org", "johnnyding.webkit@gmail.com"], "nicks": ["johnnyding"]},
+        "Jon Lee": {"emails": ["jonlee@apple.com"], "nicks": ["jonlee"]},
+        "Jonathan Dong": {"emails": ["jonathan.dong.webkit@gmail.com"], "nicks": ["jondong"]},
+        "Joone Hur": {"emails": ["joone@webkit.org", "joone.hur@intel.com"], "nicks": ["joone"]},
+        "Joost de Valk": {"emails": ["joost@webkit.org", "webkit-dev@joostdevalk.nl"], "nicks": ["Altha"]},
+        "Joshua Bell": {"emails": ["jsbell@chromium.org", "jsbell@google.com"], "nicks": ["jsbell"]},
+        "Julie Parent": {"emails": ["jparent@google.com", "jparent@chromium.org"], "nicks": ["jparent"]},
+        "Jungshik Shin": {"emails": ["jshin@chromium.org"]},
+        "Justin Novosad": {"emails": ["junov@google.com", "junov@chromium.org"], "nicks": ["junov"]},
+        "Justin Schuh": {"emails": ["jschuh@chromium.org"], "nicks": ["jschuh"]},
+        "Kangil Han": {"emails": ["kangil.han@samsung.com", "kangil.han@gmail.com"], "nicks": ["kangil"]},
+        "Karen Grunberg": {"emails": ["kareng@chromium.org"], "nicks": ["kareng"]},
+        "Kaustubh Atrawalkar": {"emails": ["kaustubh@motorola.com"], "nicks": ["silverroots"]},
+        "Keishi Hattori": {"emails": ["keishi@webkit.org"], "nicks": ["keishi"]},
+        "Kelly Norton": {"emails": ["knorton@alum.mit.edu"]},
+        "Ken Buchanan": {"emails": ["kenrb@chromium.org"], "nicks": ["kenrb"]},
+        "Kenichi Ishibashi": {"emails": ["bashi@chromium.org"], "nicks": ["bashi"]},
+        "Kenji Imasaki": {"emails": ["imasaki@chromium.org"], "nicks": ["imasaki"]},
+        "Kent Hansen": {"emails": ["kent.hansen@nokia.com"], "nicks": ["khansen"]},
+        "Kihong Kwon": {"emails": ["kihong.kwon@samsung.com"], "nicks": ["kihong"]},
+        "Kim Gr\u00f6nholm": {"emails": ["kim.1.gronholm@nokia.com"]},
+        "Kimmo Kinnunen": {"emails": ["kimmo.t.kinnunen@nokia.com", "kimmok@iki.fi", "ktkinnun@webkit.org"], "nicks": ["kimmok"]},
+        "Kinuko Yasuda": {"emails": ["kinuko@chromium.org"], "nicks": ["kinuko"]},
+        "Kiran Muppala": {"emails": ["cmuppala@apple.com"], "nicks": ["kiranm"]},
+        "Konrad Piascik": {"emails": ["kpiascik@blackberry.com", "kpiascik@rim.com"], "nicks": ["kpiascik"]},
+        "Kristof Kosztyo": {"emails": ["kkristof@inf.u-szeged.hu"], "nicks": ["kkristof"]},
+        "Krzysztof Kowalczyk": {"emails": ["kkowalczyk@gmail.com"]},
+        "Kwang Yul Seo": {"emails": ["skyul@company100.net", "kseo@webkit.org"], "nicks": ["kseo"]},
+        "Lauro Neto": {"emails": ["lauro.neto@openbossa.org"], "nicks": ["lmoura"]},
+        "Leandro Gracia Gil": {"emails": ["leandrogracia@chromium.org"], "nicks": ["leandrogracia"]},
+        "Leandro Pereira": {"emails": ["leandro@profusion.mobi", "leandro@webkit.org"], "nicks": ["acidx"]},
+        "Leo Yang": {"emails": ["leoyang@blackberry.com", "leoyang@rim.com", "leoyang@webkit.org", "leoyang.webkit@gmail.com"], "nicks": ["leoyang"]},
+        "Li Yin": {"emails": ["li.yin@intel.com"], "nicks": ["liyin"]},
+        "Lucas De Marchi": {"emails": ["demarchi@webkit.org", "lucas.demarchi@profusion.mobi"], "nicks": ["demarchi"]},
+        "Lucas Forschler": {"emails": ["lforschler@apple.com"], "nicks": ["lforschler"]},
+        "Luciano Wolf": {"emails": ["luciano.wolf@openbossa.org"], "nicks": ["luck"]},
+        "Luke Macpherson": {"emails": ["macpherson@chromium.org", "macpherson@google.com"], "nicks": ["macpherson"]},
+        "Mads Ager": {"emails": ["ager@chromium.org"]},
+        "Mahesh Kulkarni": {"emails": ["mahesh.kulkarni@nokia.com", "maheshk@webkit.org"], "nicks": ["maheshk"]},
+        "Marcus Voltis Bulach": {"emails": ["bulach@chromium.org"]},
+        "Mario Sanchez Prada": {"emails": ["mario@webkit.org", "mario.prada@samsung.com"], "nicks": ["msanchez"]},
+        "Mark Lam": {"emails": ["mark.lam@apple.com"], "nicks": ["mlam"]},
+        "Mark Pilgrim": {"emails": ["pilgrim@chromium.org"], "nicks": ["pilgrim_google"]},
+        "Mary Wu": {"emails": ["mary.wu@torchmobile.com.cn", "wwendy2007@gmail.com"], "nicks": ["marywu"]},
+        "Matt Delaney": {"emails": ["mdelaney@apple.com"]},
+        "Matt Falkenhagen": {"emails": ["falken@chromium.org"], "nicks": ["falken"]},
+        "Matt Lilek": {"emails": ["mlilek@apple.com", "webkit@mattlilek.com", "pewtermoose@webkit.org"], "nicks": ["pewtermoose"]},
+        "Matt Perry": {"emails": ["mpcomplete@chromium.org"]},
+        "Max Vujovic": {"emails": ["mvujovic@adobe.com", "maxvujovic@gmail.com"], "nicks": ["mvujovic"]},
+        "Maxime Britto": {"emails": ["maxime.britto@gmail.com", "britto@apple.com"]},
+        "Maxime Simon": {"emails": ["simon.maxime@gmail.com", "maxime.simon@webkit.org"], "nicks": ["maxime.simon"]},
+        "Michael Br\u00fcning": {"emails": ["michael.bruning@digia.com", "michaelbruening@gmail.com"], "nicks": ["mibrunin"]},
+        "Michael Nordman": {"emails": ["michaeln@google.com"], "nicks": ["michaeln"]},
+        "Michelangelo De Simone": {"emails": ["michelangelo@webkit.org"], "nicks": ["michelangelo"]},
+        "Mihnea Ovidenie": {"emails": ["mihnea@adobe.com"], "nicks": ["mihnea"]},
+        "Mike Belshe": {"emails": ["mbelshe@chromium.org", "mike@belshe.com"]},
+        "Mike Fenton": {"emails": ["mifenton@blackberry.com", "mifenton@rim.com", "mike.fenton@torchmobile.com"], "nicks": ["mfenton"]},
+        "Mike Lawther": {"emails": ["mikelawther@chromium.org"], "nicks": ["mikelawther"]},
+        "Mike Reed": {"emails": ["reed@google.com"], "nicks": ["reed"]},
+        "Mike Thole": {"emails": ["mthole@mikethole.com", "mthole@apple.com"]},
+        "Mike West": {"emails": ["mkwst@chromium.org", "mike@mikewest.org"], "nicks": ["mkwst"]},
+        "Mikhail Naganov": {"emails": ["mnaganov@chromium.org"]},
+        "Mikhail Pozdnyakov": {"emails": ["mikhail.pozdnyakov@intel.com"], "nicks": ["MPozdnyakov"]},
+        "Naoki Takano": {"emails": ["honten@chromium.org", "takano.naoki@gmail.com"], "nicks": ["honten"]},
+        "Nat Duca": {"emails": ["nduca@chromium.org", "nduca@google.com"], "nicks": ["nduca"]},
+        "Nayan Kumar K": {"emails": ["nayankk@motorola.com", "nayankk@gmail.com"], "nicks": ["xc0ffee"]},
+        "Nima Ghanavatian": {"emails": ["nghanavatian@blackberry.com", "nghanavatian@rim.com", "nima.ghanavatian@gmail.com"], "nicks": ["nghanavatian"]},
+        "Noel Gordon": {"emails": ["noel.gordon@gmail.com", "noel@chromium.org", "noel@google.com"], "nicks": ["noel"]},
+        "Pablo Flouret": {"emails": ["pablof@motorola.com", "pf@parb.es"], "nicks": ["pablof"]},
+        "Pam Greene": {"emails": ["pam@chromium.org"], "nicks": ["pamg"]},
+        "Patrick Gansterer": {"emails": ["paroga@paroga.com", "paroga@webkit.org"], "nicks": ["paroga"]},
+        "Pavel Podivilov": {"emails": ["podivilov@chromium.org"], "nicks": ["podivilov"]},
+        "Peter Beverloo": {"emails": ["peter@chromium.org", "peter@webkit.org", "beverloo@google.com"], "nicks": ["beverloo"]},
+        "Peter Kasting": {"emails": ["pkasting@google.com", "pkasting@chromium.org"], "nicks": ["pkasting"]},
+        "Peter Varga": {"emails": ["pvarga@webkit.org", "pvarga@inf.u-szeged.hu"], "nicks": ["stampho"]},
+        "Pierre d'Herbemont": {"emails": ["pdherbemont@free.fr", "pdherbemont@apple.com"], "nicks": ["pdherbemont"]},
+        "Pierre-Olivier Latour": {"emails": ["pol@apple.com"], "nicks": ["pol"]},
+        "Pierre Rossi": {"emails": ["pierre.rossi@gmail.com"], "nicks": ["elproxy"]},
+        "Pratik Solanki": {"emails": ["psolanki@apple.com"], "nicks": ["psolanki"]},
+        "Pravin D": {"emails": ["pravind@webkit.org", "pravin.d@samsung.com"], "nicks": ["pravind"]},
+        "Qi Zhang": {"emails": ["qi.zhang02180@gmail.com"], "nicks": ["qi"]},
+        "Rafael Antognolli": {"emails": ["antognolli@profusion.mobi"], "nicks": ["antognolli"]},
+        "Rafael Brandao": {"emails": ["rafael.lobo@openbossa.org"], "nicks": ["rafaelbrandao"]},
+        "Rafael Weinstein": {"emails": ["rafaelw@chromium.org"], "nicks": ["rafaelw"]},
+        "Raphael Kubo da Costa": {"emails": ["rakuco@webkit.org", "rakuco@FreeBSD.org", "raphael.kubo.da.costa@intel.com"], "nicks": ["rakuco"]},
+        "Ravi Kasibhatla": {"emails": ["ravi.kasibhatla@motorola.com"], "nicks": ["kphanee"]},
+        "Raymond Toy": {"emails": ["rtoy@google.com", "rtoy@chromium.org"], "nicks": ["rtoy"]},
+        "Renata Hodovan": {"emails": ["reni@webkit.org"], "nicks": ["reni"]},
+        "Robert Hogan": {"emails": ["robert@webkit.org", "robert@roberthogan.net", "lists@roberthogan.net"], "nicks": ["rhogan"]},
+        "Robert Kroeger": {"emails": ["rjkroege@chromium.org"], "nicks": ["rjkroege"]},
+        "Roger Fong": {"emails": ["roger_fong@apple.com"], "nicks": ["rfong"]},
+        "Roland Steiner": {"emails": ["rolandsteiner@chromium.org"]},
+        "Ryuan Choi": {"emails": ["ryuan.choi@samsung.com", "ryuan.choi@gmail.com"], "nicks": ["ryuan"]},
+        "Sadrul Habib Chowdhury": {"emails": ["sadrul@chromium.org"], "nicks": ["sadrul", "sadrulhc"]},
+        "Sami Ky\u00f6stil\u00e4": {"emails": ["skyostil@chromium.org"], "nicks": ["skyostil"]},
+        "Satish Sampath": {"emails": ["satish@chromium.org"]},
+        "Scott Violet": {"emails": ["sky@chromium.org"], "nicks": ["sky"]},
+        "Sergio Villar Senin": {"emails": ["svillar@igalia.com", "sergio@webkit.org"], "nicks": ["svillar"]},
+        "Shawn Singh": {"emails": ["shawnsingh@chromium.org"], "nicks": ["shawnsingh"]},
+        "Shinya Kawanaka": {"emails": ["shinyak@chromium.org"], "nicks": ["shinyak"]},
+        "Siddharth Mathur": {"emails": ["siddharth.mathur@nokia.com"], "nicks": ["simathur"]},
+        "Silvia Pfeiffer": {"emails": ["silviapf@chromium.org"], "nicks": ["silvia"]},
+        "Simon Pena": {"emails": ["spena@igalia.com"], "nicks": ["spenap"]},
+        "Steve Lacey": {"emails": ["sjl@chromium.org"], "nicks": ["stevela"]},
+        "Sudarsana Nagineni": {"emails": ["naginenis@gmail.com", "sudarsana.nagineni@linux.intel.com", "sudarsana.nagineni@intel.com"], "nicks": ["babu"]},
+        "Szilard Ledan-Muntean": {"emails": ["szledan@inf.u-szeged.hu"], "nicks": ["szledan"]},
+        "Taiju Tsuiki": {"emails": ["tzik@chromium.org"], "nicks": ["tzik"]},
+        "Takashi Sakamoto": {"emails": ["tasak@google.com"], "nicks": ["tasak"]},
+        "Takashi Toyoshima": {"emails": ["toyoshim@chromium.org", "toyoshim+watchlist@chromium.org"], "nicks": ["toyoshim"]},
+        "Terry Anderson": {"emails": ["tdanderson@chromium.org"], "nicks": ["tdanderson"]},
+        "Thiago Marcos P. Santos": {"emails": ["tmpsantos@gmail.com", "thiago.santos@intel.com"], "nicks": ["tmpsantos"]},
+        "Thomas Sepez": {"emails": ["tsepez@chromium.org"], "nicks": ["tsepez"]},
+        "Tom Hudson": {"emails": ["tomhudson@google.com", "tomhudson@chromium.org"], "nicks": ["tomhudson"]},
+        "Tom Zakrajsek": {"emails": ["tomz@codeaurora.org"], "nicks": ["tomz"]},
+        "Tommy Widenflycht": {"emails": ["tommyw@google.com"], "nicks": ["tommyw"]},
+        "Trey Matteson": {"emails": ["trey@usa.net"], "nicks": ["trey"]},
+        "Tristan O'Tierney": {"emails": ["tristan@otierney.net", "tristan@apple.com"]},
+        "Vangelis Kokkevis": {"emails": ["vangelis@chromium.org"], "nicks": ["vangelis"]},
+        "Viatcheslav Ostapenko": {"emails": ["ostap73@gmail.com", "v.ostapenko@samsung.com", "v.ostapenko@sisa.samsung.com"], "nicks": ["ostap"]},
+        "Victor Carbune": {"emails": ["vcarbune@chromium.org", "victor@rosedu.org"], "nicks": ["vcarbune"]},
+        "Victor Wang": {"emails": ["victorw@chromium.org"], "nicks": ["victorw"]},
+        "Victoria Kirst": {"emails": ["vrk@chromium.org", "vrk@google.com"], "nicks": ["vrk"]},
+        "Vincent Scheib": {"emails": ["scheib@chromium.org"], "nicks": ["scheib"]},
+        "Vineet Chaudhary": {"emails": ["rgf748@motorola.com"], "nicks": ["vineetc"]},
+        "Vitaly Repeshko": {"emails": ["vitalyr@chromium.org"]},
+        "Vivek Galatage": {"emails": ["vivekg@webkit.org", "vivek.vg@samsung.com"], "nicks": ["vivekg"]},
+        "William Siegrist": {"emails": ["wsiegrist@apple.com"], "nicks": ["wms"]},
+        "W. James MacLean": {"emails": ["wjmaclean@chromium.org"], "nicks": ["seumas"]},
+        "Xianzhu Wang": {"emails": ["wangxianzhu@chromium.org", "phnixwxz@gmail.com", "wangxianzhu@google.com"], "nicks": ["wangxianzhu"]},
+        "Xiaohai Wei": {"emails": ["james.wei@intel.com", "wistoch@chromium.org"], "nicks": ["wistoch"]},
+        "Xiaomei Ji": {"emails": ["xji@chromium.org"], "nicks": ["xji"]},
+        "Xingnan Wang": {"emails": ["xingnan.wang@intel.com"], "nicks": ["xingnan"]},
+        "Yael Aharon": {"emails": ["yael@webkit.org"], "nicks": ["yael"]},
+        "Yaar Schnitman": {"emails": ["yaar@chromium.org", "yaar@google.com"]},
+        "Yi Shen": {"emails": ["max.hong.shen@gmail.com", "yi.shen@sisa.samsung.com", "yi.4.shen@nokia.com"]},
+        "Yongjun Zhang": {"emails": ["yongjun_zhang@apple.com", "yongjun.zhang@nokia.com"]},
+        "Yoshifumi Inoue": {"emails": ["yosin@chromium.org"], "nicks": ["yosin"]},
+        "Yuqiang Xian": {"emails": ["yuqiang.xian@intel.com"]},
+        "Yuzo Fujishima": {"emails": ["yuzo@google.com"], "nicks": ["yuzo"]},
+        "Zalan Bujtas": {"emails": ["zalan@apple.com", "zbujtas@gmail.com", "zalan.bujtas@nokia.com"], "nicks": ["zalan"]},
+        "Zeno Albisser": {"emails": ["zeno@webkit.org", "zeno.albisser@nokia.com"], "nicks": ["zalbisser"]},
+        "Zhenyao Mo": {"emails": ["zmo@google.com"], "nicks": ["zhenyao"]},
+        "Zoltan Arvai": {"emails": ["zarvai@inf.u-szeged.hu"], "nicks": ["azbest_hu"]},
+        "Zoltan Horvath": {"emails": ["zoltan@webkit.org", "hzoltan@inf.u-szeged.hu", "horvath.zoltan.6@stud.u-szeged.hu"], "nicks": ["zoltan"]},
+        "\u017dan Dober\u0161ek": {"emails": ["zandobersek@gmail.com"], "nicks": ["zdobersek"]}
+    },
+    "Reviewers": {
+        "Abhishek Arya": {"emails": ["inferno@chromium.org"], "nicks": ["inferno-sec"]},
+        "Ada Chan": {"emails": ["adachan@apple.com"], "nicks": ["chanada"]},
+        "Adam Barth": {"emails": ["abarth@webkit.org"], "nicks": ["abarth"]},
+        "Adam Roben": {"emails": ["aroben@webkit.org", "aroben@apple.com"], "nicks": ["aroben"]},
+        "Adam Treat": {"emails": ["treat@kde.org", "treat@webkit.org"], "nicks": ["manyoso"]},
+        "Adele Peterson": {"emails": ["adele@apple.com"], "nicks": ["adele"]},
+        "Adrienne Walker": {"emails": ["enne@google.com", "enne@chromium.org"], "nicks": ["enne"]},
+        "Alejandro G. Castro": {"emails": ["alex@igalia.com", "alex@webkit.org"], "nicks": ["alexg__"]},
+        "Alexander Pavlov": {"emails": ["apavlov@chromium.org", "pavlov81@gmail.com"], "nicks": ["apavlov"]},
+        "Alexey Proskuryakov": {"emails": ["ap@webkit.org", "ap@apple.com"], "nicks": ["ap"]},
+        "Alexis Menard": {"emails": ["alexis@webkit.org", "menard@kde.org"], "nicks": ["darktears"]},
+        "Alice Liu": {"emails": ["alice.liu@apple.com"], "nicks": ["aliu"]},
+        "Allan Sandfeld Jensen": {"emails": ["allan.jensen@digia.com", "kde@carewolf.com", "sandfeld@kde.org", "allan.jensen@nokia.com"], "nicks": ["carewolf"]},
+        "Alp Toker": {"emails": ["alp@nuanti.com", "alp@atoker.com", "alp@webkit.org"], "nicks": ["alp"]},
+        "Anders Carlsson": {"emails": ["andersca@apple.com", "acarlsson@apple.com"], "nicks": ["andersca"]},
+        "Andreas Kling": {"emails": ["akling@apple.com", "kling@webkit.org", "awesomekling@apple.com", "andreas.kling@nokia.com"], "nicks": ["kling"]},
+        "Andy Estes": {"emails": ["aestes@apple.com"], "nicks": ["estes"]},
+        "Antonio Gomes": {"emails": ["tonikitoo@webkit.org", "a1.gomes@sisa.samsung.com", "antonio.netto@samsung.com", "antonio.gomes@openbossa.org"], "nicks": ["tonikitoo"]},
+        "Antti Koivisto": {"emails": ["koivisto@iki.fi", "antti@apple.com", "antti.j.koivisto@nokia.com"], "nicks": ["anttik"]},
+        "Ariya Hidayat": {"emails": ["ariya.hidayat@gmail.com", "ariya@sencha.com", "ariya@webkit.org"], "nicks": ["ariya"]},
+        "Benjamin Poulain": {"emails": ["benjamin@webkit.org", "benjamin.poulain@nokia.com", "ikipou@gmail.com"], "nicks": ["benjaminp"]},
+        "Beth Dakin": {"emails": ["bdakin@apple.com"], "nicks": ["dethbakin"]},
+        "Brady Eidson": {"emails": ["beidson@apple.com"], "nicks": ["bradee-oh"]},
+        "Brent Fulgham": {"emails": ["bfulgham@webkit.org"], "nicks": ["bfulgham"]},
+        "Brian Weinstein": {"emails": ["bweinstein@apple.com"], "nicks": ["bweinstein"]},
+        "Caio Marcelo de Oliveira Filho": {"emails": ["cmarcelo@webkit.org", "cmarcelo@gmail.com", "caio.oliveira@openbossa.org"], "nicks": ["cmarcelo"]},
+        "Cameron Zwarich": {"emails": ["zwarich@apple.com", "cwzwarich@apple.com", "cwzwarich@webkit.org"]},
+        "Carlos Garcia Campos": {"emails": ["cgarcia@igalia.com", "carlosgc@gnome.org", "carlosgc@webkit.org"], "nicks": ["KaL"]},
+        "Chang Shu": {"emails": ["cshu@webkit.org", "c.shu@sisa.samsung.com"], "nicks": ["cshu"]},
+        "Chris Blumenberg": {"emails": ["cblu@apple.com"], "nicks": ["cblu"]},
+        "Chris Marrin": {"emails": ["cmarrin@apple.com"], "nicks": ["cmarrin"]},
+        "Chris Fleizach": {"emails": ["cfleizach@apple.com"], "nicks": ["cfleizach"]},
+        "Chris Jerdonek": {"emails": ["cjerdonek@webkit.org"], "nicks": ["cjerdonek"]},
+        "Chris Rogers": {"emails": ["crogers@google.com"], "nicks": ["crogers"]},
+        "Csaba Osztrogon\u00e1c": {"emails": ["ossy@webkit.org"], "nicks": ["ossy"]},
+        "Dan Bernstein": {"emails": ["mitz@webkit.org", "mitz@apple.com"], "nicks": ["mitzpettel"]},
+        "Daniel Bates": {"emails": ["dbates@webkit.org"], "nicks": ["dydz"]},
+        "Darin Adler": {"emails": ["darin@apple.com"], "nicks": ["darin"]},
+        "Darin Fisher": {"emails": ["fishd@chromium.org", "darin@chromium.org"], "nicks": ["fishd"]},
+        "David Harrison": {"emails": ["harrison@apple.com"], "nicks": ["harrison"]},
+        "David Hyatt": {"emails": ["hyatt@apple.com"], "nicks": ["dhyatt", "hyatt"]},
+        "David Kilzer": {"emails": ["ddkilzer@webkit.org", "ddkilzer@apple.com"], "nicks": ["ddkilzer"]},
+        "David Levin": {"emails": ["levin@chromium.org"], "nicks": ["dave_levin"]},
+        "Dean Jackson": {"emails": ["dino@apple.com"], "nicks": ["dino"]},
+        "Dimitri Glazkov": {"emails": ["dglazkov@chromium.org"], "nicks": ["dglazkov"]},
+        "Dirk Pranke": {"emails": ["dpranke@chromium.org"], "nicks": ["dpranke"]},
+        "Dirk Schulze": {"emails": ["krit@webkit.org"], "nicks": ["krit"]},
+        "Dmitry Titov": {"emails": ["dimich@chromium.org"], "nicks": ["dimich"]},
+        "Don Melton": {"emails": ["gramps@apple.com"], "nicks": ["gramps"]},
+        "Dumitru Daniliuc": {"emails": ["dumi@chromium.org"], "nicks": ["dumi"]},
+        "Elliott Sprehn": {"emails": ["esprehn@chromium.org", "esprehn+autocc@chromium.org"], "nicks": ["esprehn"]},
+        "Emil A Eklund": {"emails": ["eae@chromium.org"], "nicks": ["eae"]},
+        "Enrica Casucci": {"emails": ["enrica@apple.com"], "nicks": ["enrica"]},
+        "Eric Carlson": {"emails": ["eric.carlson@apple.com"], "nicks": ["eric_carlson"]},
+        "Eric Seidel": {"emails": ["eric@webkit.org"], "nicks": ["eseidel"]},
+        "Filip Pizlo": {"emails": ["fpizlo@apple.com"], "nicks": ["pizlo"]},
+        "Gavin Barraclough": {"emails": ["barraclough@apple.com"], "nicks": ["gbarra"]},
+        "Geoffrey Garen": {"emails": ["ggaren@apple.com"], "nicks": ["ggaren"]},
+        "George Staikos": {"emails": ["staikos@kde.org", "staikos@webkit.org"]},
+        "Gustavo Noronha Silva": {"emails": ["gns@gnome.org", "kov@webkit.org", "gustavo.noronha@collabora.co.uk", "gustavo.noronha@collabora.com"], "nicks": ["kov"]},
+        "Gyuyoung Kim": {"emails": ["gyuyoung.kim@samsung.com", "gyuyoung.kim@webkit.org"], "nicks": ["gyuyoung"]},
+        "Hajime Morrita": {"emails": ["morrita@google.com", "morrita@chromium.org"], "nicks": ["morrita"]},
+        "Holger Freyther": {"emails": ["zecke@selfish.org", "zecke@webkit.org"], "nicks": ["zecke"]},
+        "James Robinson": {"emails": ["jamesr@chromium.org", "jamesr@google.com"], "nicks": ["jamesr"]},
+        "Jan Alonzo": {"emails": ["jmalonzo@gmail.com", "jmalonzo@webkit.org"], "nicks": ["janm"]},
+        "Jer Noble": {"emails": ["jer.noble@apple.com"], "nicks": ["jernoble"]},
+        "Jeremy Orlow": {"emails": ["jorlow@webkit.org", "jorlow@chromium.org"], "nicks": ["jorlow"]},
+        "Jessie Berlin": {"emails": ["jberlin@webkit.org", "jberlin@apple.com"], "nicks": ["jessieberlin"]},
+        "Jian Li": {"emails": ["jianli@chromium.org"], "nicks": ["jianli"]},
+        "Jocelyn Turcotte": {"emails": ["jocelyn.turcotte@digia.com", "jocelyn.turcotte@nokia.com"], "nicks": ["jturcotte"]},
+        "Jochen Eisinger": {"emails": ["jochen@chromium.org"], "nicks": ["jochen__"]},
+        "John Sullivan": {"emails": ["sullivan@apple.com"], "nicks": ["sullivan"]},
+        "Jon Honeycutt": {"emails": ["jhoneycutt@apple.com"], "nicks": ["jhoneycutt"]},
+        "Joseph Pecoraro": {"emails": ["joepeck@webkit.org", "pecoraro@apple.com"], "nicks": ["JoePeck"]},
+        "Julien Chaffraix": {"emails": ["jchaffraix@webkit.org", "julien.chaffraix@gmail.com", "jchaffraix@google.com", "jchaffraix@codeaurora.org"], "nicks": ["jchaffraix"]},
+        "Justin Garcia": {"emails": ["justin.garcia@apple.com"], "nicks": ["justing"]},
+        "Ken Kocienda": {"emails": ["kocienda@apple.com"]},
+        "Kenneth Rohde Christiansen": {"emails": ["kenneth@webkit.org", "kenneth.r.christiansen@intel.com", "kenneth.christiansen@gmail.com"], "nicks": ["kenneth_", "kenneth", "kenne"]},
+        "Kenneth Russell": {"emails": ["kbr@google.com", "kbr@chromium.org"], "nicks": ["kbr_google", "kbrgg"]},
+        "Kent Tamura": {"emails": ["tkent@chromium.org", "tkent@google.com"], "nicks": ["tkent"]},
+        "Kentaro Hara": {"emails": ["haraken@chromium.org"], "nicks": ["haraken"]},
+        "Kevin Decker": {"emails": ["kdecker@apple.com"], "nicks": ["superkevin"]},
+        "Kevin McCullough": {"emails": ["kmccullough@apple.com"], "nicks": ["maculloch"]},
+        "Kevin Ollivier": {"emails": ["kevino@theolliviers.com", "kevino@webkit.org"], "nicks": ["kollivier"]},
+        "Lars Knoll": {"emails": ["lars@trolltech.com", "lars@kde.org", "lars.knoll@nokia.com"], "nicks": ["lars"]},
+        "Laszlo Gombos": {"emails": ["laszlo.gombos@webkit.org", "l.gombos@samsung.com", "laszlo.gombos@gmail.com", "laszlo.1.gombos@nokia.com"], "nicks": ["lgombos"]},
+        "Levi Weintraub": {"emails": ["leviw@chromium.org", "leviw@google.com", "lweintraub@apple.com"], "nicks": ["leviw"]},
+        "Luiz Agostini": {"emails": ["luiz@webkit.org", "luiz.agostini@openbossa.org"], "nicks": ["lca"]},
+        "Maciej Stachowiak": {"emails": ["mjs@apple.com"], "nicks": ["othermaciej"]},
+        "Mark Hahnenberg": {"emails": ["mhahnenberg@apple.com"], "nicks": ["mhahnenberg"]},
+        "Mark Rowe": {"emails": ["mrowe@apple.com"], "nicks": ["bdash"]},
+        "Martin Robinson": {"emails": ["mrobinson@webkit.org", "mrobinson@igalia.com", "martin.james.robinson@gmail.com"], "nicks": ["mrobinson"]},
+        "Michael Saboff": {"emails": ["msaboff@apple.com"], "nicks": ["msaboff"]},
+        "Mihai Parparita": {"emails": ["mihaip@chromium.org"], "nicks": ["mihaip"]},
+        "Nate Chapin": {"emails": ["japhet@chromium.org"], "nicks": ["japhet", "natechapin"]},
+        "Nico Weber": {"emails": ["thakis@chromium.org", "thakis@google.com"], "nicks": ["thakis"]},
+        "Nikolas Zimmermann": {"emails": ["zimmermann@kde.org", "zimmermann@physik.rwth-aachen.de", "zimmermann@webkit.org", "nzimmermann@blackberry.com", "nzimmermann@rim.com"], "nicks": ["wildfox"]},
+        "Noam Rosenthal": {"emails": ["noam@webkit.org", "noam.rosenthal@nokia.com"], "nicks": ["noamr"]},
+        "Ojan Vafai": {"emails": ["ojan@chromium.org", "ojan.autocc@gmail.com"], "nicks": ["ojan"]},
+        "Oliver Hunt": {"emails": ["oliver@apple.com"], "nicks": ["olliej"]},
+        "Pavel Feldman": {"emails": ["pfeldman@chromium.org", "pfeldman@google.com"], "nicks": ["pfeldman"]},
+        "Philip Rogers": {"emails": ["pdr@google.com", "pdr@chromium.org"], "nicks": ["pdr"]},
+        "Philippe Normand": {"emails": ["pnormand@igalia.com", "philn@webkit.org", "philn@igalia.com"], "nicks": ["philn"]},
+        "Richard Williamson": {"emails": ["rjw@apple.com"], "nicks": ["rjw"]},
+        "Rob Buis": {"emails": ["rwlbuis@gmail.com", "rwlbuis@webkit.org", "rbuis@blackberry.com", "rbuis@rim.com"], "nicks": ["rwlbuis"]},
+        "Ryosuke Niwa": {"emails": ["rniwa@webkit.org"], "nicks": ["rniwa"]},
+        "Sam Weinig": {"emails": ["sam@webkit.org", "weinig@apple.com"], "nicks": ["weinig"]},
+        "Shinichiro Hamaji": {"emails": ["hamaji@chromium.org"], "nicks": ["hamaji"]},
+        "Simon Fraser": {"emails": ["simon.fraser@apple.com"], "nicks": ["smfr"]},
+        "Simon Hausmann": {"emails": ["hausmann@webkit.org", "hausmann@kde.org", "simon.hausmann@digia.com"], "nicks": ["tronical"]},
+        "Stephanie Lewis": {"emails": ["slewis@apple.com"], "nicks": ["sundiamonde"]},
+        "Stephen Chenney": {"emails": ["schenney@chromium.org"], "nicks": ["schenney"]},
+        "Stephen White": {"emails": ["senorblanco@chromium.org"], "nicks": ["senorblanco"]},
+        "Steve Block": {"emails": ["steveblock@chromium.org", "steveblock@google.com"], "nicks": ["steveblock"]},
+        "Steve Falkenburg": {"emails": ["sfalken@apple.com"], "nicks": ["sfalken"]},
+        "Tim Omernick": {"emails": ["timo@apple.com"]},
+        "Timothy Hatcher": {"emails": ["timothy@apple.com", "timothy@hatcher.name"], "nicks": ["xenon"]},
+        "Tim Horton": {"emails": ["timothy_horton@apple.com"], "nicks": ["thorton"]},
+        "Tony Chang": {"emails": ["tony@chromium.org"], "nicks": ["tony^work"]},
+        "Tony Gentilcore": {"emails": ["tonyg@chromium.org"], "nicks": ["tonyg-cr"]},
+        "Tor Arne Vestb\u00f8": {"emails": ["vestbo@webkit.org", "tor.arne.vestbo@nokia.com"], "nicks": ["torarne"]},
+        "Vicki Murley": {"emails": ["vicki@apple.com"]},
+        "Vsevolod Vlasov": {"emails": ["vsevik@chromium.org"], "nicks": ["vsevik"]},
+        "Xan Lopez": {"emails": ["xan.lopez@gmail.com", "xan@gnome.org", "xan@webkit.org", "xlopez@igalia.com"], "nicks": ["xan"]},
+        "Yong Li": {"emails": ["yong.li.webkit@outlook.com"], "nicks": ["yoli"]},
+        "Yury Semikhatsky": {"emails": ["yurys@chromium.org"], "nicks": ["yurys"]},
+        "Yuta Kitamura": {"emails": ["yutak@chromium.org"], "nicks": ["yutak"]},
+        "Zack Rusin": {"emails": ["zack@kde.org"], "nicks": ["zackr"]},
+        "Zoltan Herczeg": {"emails": ["zherczeg@webkit.org", "zherczeg@inf.u-szeged.hu"], "nicks": ["zherczeg"]}
+    }
+}
index 3fb3c83..5e30a66 100644 (file)
@@ -46,7 +46,7 @@ class MockCommitInfo(object):
 
     def author(self):
         # It's definitely possible to have commits with authors who
-        # are not in our committers.py list.
+        # are not in our contributors.json list.
         if not self._author_email:
             return None
         return Committer("Mock Committer", self._author_email)
index 6e3bd03..b4b9077 100644 (file)
@@ -1,3 +1,16 @@
+2013-04-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        The list of contributors in committers.py should be a separate JSON
+        https://bugs.webkit.org/show_bug.cgi?id=114673
+
+        Reviewed by Anders Carlsson.
+
+        Updated the Bugzilla autocompletion code to use contributors.json.
+        Basically, this removes a large chunk of this JavaScript file.
+
+        * committers-autocomplete.js:
+        (WebKitCommitters):
+
 2013-04-13  Ryosuke Niwa  <rniwa@webkit.org>
 
         Delete bubbles from webkit-commit-queue.appspot.com now that we've completed the transition
index 40bb17e..50d48aa 100644 (file)
 // DAMAGE.
 
 WebKitCommitters = (function() {
-    var COMMITTERS_URL = 'https://svn.webkit.org/repository/webkit/trunk/Tools/Scripts/webkitpy/common/config/committers.py';
+    var COMMITTERS_URL = 'https://svn.webkit.org/repository/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json';
     var m_committers;
 
-    function getValues(param) {
-        var nextQuote = /^[^"]*"/g;
-        var values = [];
-        nextQuote.lastIndex = 0;
-        while (nextQuote.exec(param) != null) {
-            var nextIndex = param.indexOf('"', nextQuote.lastIndex); // For emacs " to balance the quotes.
-            values.push(param.substring(nextQuote.lastIndex, nextIndex));
-            param = param.substring(nextIndex + 1);
-            nextQuote.lastIndex = 0;
-        }
-        return values;
-    }
-
-    function parseRecord(key, record) {
-        var keyIndex = record.indexOf(key);
-        if (keyIndex < 0)
-            return null;
-        record = record.substring(keyIndex + key.length);
-
-        var firstParen = /^\s*\(\s*/g;
-        firstParen.lastIndex = 0;
-        if (!firstParen.exec(record))
-            return null;
-        record = record.substring(firstParen.lastIndex);
-
-        var parsedResult = {};
-
-        // full name
-        var param = /^\s*((\[[^\]]+\])|(u?)("[^"]+"))\s*/g; // For emacs " to balance the quotes.
-        param.lastIndex = 0;
-        var nameParam = param.exec(record);
-        if (!nameParam)
-            return null;
-        record = record.substring(param.lastIndex);
-
-        // Save the name without the quotes.
-        var name = nameParam[4].slice(1, nameParam[4].length - 1);
-
-        // Convert unicode characters
-        if (nameParam[3] == 'u') {
-            var unicode = /\\u([a-f\d]{4})/i;
-            var match = unicode.exec(name);
-            while (match) {
-                name = name.replace(match[0], String.fromCharCode(parseInt(match[1], 16)));
-                match = unicode.exec(name);
-            }
-        }
-
-        parsedResult.name = name;
-
-        var paramSeparator = /^\s*,\s*/g;
-        paramSeparator.lastIndex = 0;
-        if (!paramSeparator.exec(record))
-            return null;
-        record = record.substring(paramSeparator.lastIndex);
-
-        // email
-        param.lastIndex = 0;
-        emailParam = param.exec(record);
-        if (!emailParam)
-            return null;
-
-        emails = getValues(emailParam[0]);
-        parsedResult.emails = emails;
-        record = record.substring(param.lastIndex);
-
-        paramSeparator.lastIndex = 0;
-        if (!paramSeparator.exec(record))
-            return parsedResult;
-        record = record.substring(paramSeparator.lastIndex);
-
-        // irc
-        param.lastIndex = 0;
-        ircParam = param.exec(record);
-        if (!ircParam)
-            return parsedResult;
-        record = record.substring(param.lastIndex);
-
-        irc = getValues(ircParam[0]);
-        parsedResult.irc = irc;
-        return parsedResult;
-    }
-
     function parseType(key, records, type) {
-        for (var i = 0; i < records.length; ++i) {
-            var record = records[i];
-            var result = parseRecord(key, record);
-            if (!result)
-                continue;
+        for (var name in records) {
+            var record = records[name];
+            result.name = name;
+            result.emails = record.emails;
+            result.irc = record.nicks;
             result.type = type;
             m_committers.push(result);
         }
     }
 
     function parseCommittersPy(text) {
+        var parsedContributorsJSON = JSON.parse(text);
+
         m_committers = [];
 
         var records = text.split('\n');
-        parseType('Committer', records, 'c');
-        parseType('Reviewer', records, 'r');
-        parseType('Contributor', records);
+        parseType('Committer', parsedContributorsJSON['Committers'], 'c');
+        parseType('Reviewer', parsedContributorsJSON['Reviewers'], 'r');
+        parseType('Contributor', parsedContributorsJSON['Contributors']);
     }
 
     function loadCommitters(callback) {
@@ -140,7 +59,7 @@ WebKitCommitters = (function() {
         };
 
         xhr.onerror = function() {
-            console.log('Unable to load committers.py');
+            console.log('Unable to load contributors.json');
             callback();
         };
 
index f5f7bcb..7a31fc9 100644 (file)
@@ -1,3 +1,14 @@
+2013-04-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        The list of contributors in committers.py should be a separate JSON
+        https://bugs.webkit.org/show_bug.cgi?id=114673
+
+        Reviewed by Anders Carlsson.
+
+        Updated the website to refer to contributors.json instead of committers.py.
+
+        * coding/commit-review-policy.html:
+
 2013-04-07  Benjamin Poulain  <bpoulain@apple.com>
 
         Simplify the page "Getting the Code" on WebKit.org
index 278c5b2..eb4e229 100644 (file)
@@ -39,7 +39,7 @@ received.</p>
 the nominating Reviewer or another responsible party should inform the
 candidate and ask for indication of acceptance from the potential new
 reviewer. If the candidate accepts,
-<a href="http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py">committers.py</a>
+<a href="http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json">contributors.json</a>
 will be updated.</p>
 
 <h3>Criteria for Committers</h3>