Developer Log
=============

This file is a running log of developers given permissions on SourceForge.

The purpose is to provide some institutional memory of who was given access
and why.

The first entry starts in April 2005.  In keeping with the style of
Misc/NEWS, newer entries should be added to the top.  Any markup should
be in the form of ReST.  Entries should include the initials of the
project admin who made the change or granted access.  Feel free to revise
the format to accommodate documentation needs as they arise.

Note, when giving new commit permissions, be sure to get a contributor
agreement from the committer.  See http://www.python.org/psf/contrib/
for details.  When the agreement is signed, please note it in this log.

This file is encoded in UTF-8.  If the usual form for a name is not in
a Latin or extended Latin alphabet, make sure to include an ASCII
transliteration too.

Permissions History
-------------------

- David Malcolm was given commit access on Oct 27 2010 by GFB,
  at recommendation by Antoine Pitrou and Raymond Hettinger.

- Tal Einat was given commit access on Oct 4 2010 by MvL,
  for improving IDLE.

- Łukasz Langa was given commit access on Sep 08 2010 by GFB,
  at suggestion of Antoine Pitrou, for general bug fixing.

- Daniel Stutzbach was given commit access on Aug 22 2010 by MvL,
  for general bug fixing.

- Ask Solem was given commit access on Aug 17 2010 by MvL,
  on recommendation by Jesse Noller, for work on the multiprocessing
  library.

- George Boutsioukis was given commit access on Aug 10 2010
  by MvL, for work on 2to3.

- Éric Araujo was given commit access on Aug 10 2010 by BAC,
  at suggestion of Tarek Ziadé.

- Terry Reedy was given commit access on Aug 04 2010 by MvL,
  at suggestion of Nick Coghlan.

- Brian Quinlan was given commit access on Jul 26 2010 by GFB,
  for work related to PEP 3148.

- Reid Kleckner was given commit access on Jul 11 2010 by GFB,
  for work on the py3k-jit branch, at suggestion of the Unladen
  Swallow team.

- Alexander Belopolsky was given commit access on May 25 2010
  by MvL at suggestion of Mark Dickinson.

- Tim Golden was given commit access on April 21 2010 by MvL,
  at suggestion of Michael Foord.

- Giampaolo Rodolà was given commit access on April 17 2010 by
  MvL, at suggestion of R. David Murray.

- Jean-Paul Calderone was given commit access on April 6 2010 by
  GFB, at suggestion of Michael Foord and others.

- Brian Curtin was given commit access on March 24 2010 by MvL.

- Florent Xicluna was given commit access on February 25 2010 by
  MvL, based on Antoine Pitrou's recommendation.

- Dino Viehland was given SVN access on February 23 2010 by Brett
  Cannon, for backporting tests from IronPython.

- Larry Hastings was given SVN access on February 22 2010 by
  Andrew Kuchling, based on Brett Cannon's recommendation.

- Victor Stinner was given SVN access on January 30 2010 by MvL,
  at recommendation by Mark Dickinson and Amaury Forgeot d'Arc.

- Stefan Krah was given SVN access on January 5 2010 by GFB, at
  suggestion of Mark Dickinson, for work on the decimal module.

- Doug Hellmann was given SVN access on September 19 2009 by GFB, at
  suggestion of Jesse Noller, for documentation work.

- Ezio Melotti was given SVN access on June 7 2009 by GFB, for work on and
  fixes to the documentation.

- Paul Kippes was given commit privileges at PyCon 2009 by BAC to work on 3to2.

- Ron DuPlain was given commit privileges at PyCon 2009 by BAC to work on 3to2.

- Several developers of alternative Python implementations where
  given access for test suite and library adaptions by MvL:
  Allison Randal (Parrot), Michael Foord (IronPython),
  Jim Baker, Philip Jenvey, and Frank Wierzbicki (all Jython).

- R. David Murray was given SVN access on March 30 2009 by MvL, after
  recommendation by BAC.

- Chris Withers was given SVN access on March 8 2009 by MvL,
  after recommendation by GvR.

- Tarek Ziadé was given SVN access on December 21 2008 by NCN,
  for maintenance of distutils.

- Hirokazu Yamamoto was given SVN access on August 12 2008 by MvL,
  for contributions to the Windows build.

- Antoine Pitrou was given SVN access on July 16 2008, by recommendation
  from GvR, for general contributions to Python.

- Jesse Noller was given SVN access on 16 June 2008 by GFB,
  for work on the multiprocessing module.

- Gregor Lingl was given SVN access on 10 June 2008 by MvL,
  for work on the turtle module.

- Robert Schuppenies was given SVN access on 21 May 2008 by MvL,
  for GSoC contributions.

- Rodrigo Bernardo Pimentel was given SVN access on 29 April 2008 by MvL,
  for GSoC contributions.

- Heiko Weinen was given SVN access on 29 April 2008 by MvL,
  for GSoC contributions.

- Jesus Cea was given SVN access on 24 April 2008 by MvL,
  for maintenance of bsddb.

- Guilherme Polo was given SVN access on 24 April 2008 by MvL,
  for GSoC contributions.

- Thomas Lee was given SVN access on 21 April 2008 by NCN,
  for work on branches (ast/optimizer related).

- Jeroen Ruigrok van der Werven was given SVN access on 12 April 2008
  by GFB, for documentation work.

- Josiah Carlson was given SVN access on 26 March 2008 by GFB,
  for work on asyncore/asynchat.

- Benjamin Peterson was given SVN access on 25 March 2008 by GFB,
  for bug triage work.

- Jerry Seutter was given SVN access on 20 March 2008 by BAC, for
  general contributions to Python.

- Jeff Rush was given SVN access on 18 March 2008 by AMK, for Distutils work.

- David Wolever was given SVN access on 17 March 2008 by MvL,
  for 2to3 work.

- Trent Nelson was given SVN access on 17 March 2008 by MvL,
  for general contributions to Python.

- Mark Dickinson was given SVN access on 6 January 2008 by Facundo
  Batista for his work on mathemathics and number related issues.

- Amaury Forgeot d'Arc was given SVN access on 9 November 2007 by MvL,
  for general contributions to Python.

- Christian Heimes was given SVN access on 31 October 2007 by MvL,
  for general contributions to Python.

- Chris Monson was given SVN access on 20 October 2007 by NCN,
  for his work on editing PEPs.

- Bill Janssen was given SVN access on 28 August 2007 by NCN,
  for his work on the SSL module and other things related to (SSL) sockets.

- Jeffrey Yasskin was given SVN access on 9 August 2007 by NCN,
  for his work on PEPs and other general patches.

- Mark Summerfield was given SVN access on 1 August 2007 by GFB,
  for work on documentation.

- Armin Ronacher was given SVN access on 23 July 2007 by GFB,
  for work on the documentation toolset.  He now maintains the
  ast module.

- Senthil Kumaran was given SVN access on 16 June 2007 by MvL,
  for his Summer-of-Code project, mentored by Skip Montanaro.

- Alexandre Vassalotti was given SVN access on 21 May 2007 by MvL,
  for his Summer-of-Code project, mentored by Brett Cannon.

- Travis Oliphant was given SVN access on 17 Apr 2007 by MvL,
  for implementing the extended buffer protocol.

- Ziga Seilnacht was given SVN access on 09 Mar 2007 by MvL,
  for general maintenance.

- Pete Shinners was given SVN access on 04 Mar 2007 by NCN,
  for PEP 3101 work in the sandbox.

- Pat Maupin and Eric V. Smith were given SVN access on 28 Feb 2007 by NCN,
  for PEP 3101 work in the sandbox.

- Steven Bethard (SF name "bediviere") added to the SourceForge Python
  project 26 Feb 2007, by NCN, as a tracker tech.

- Josiah Carlson (SF name "josiahcarlson") added to the SourceForge Python
  project 06 Jan 2007, by NCN, as a tracker tech.  He will maintain asyncore.

- Collin Winter was given SVN access on 05 Jan 2007 by NCN, for PEP
  update access.

- Lars Gustaebel was given SVN access on 20 Dec 2006 by NCN, for tarfile.py
  related work.

- 2006 Summer of Code entries: SoC developers are expected to work
  primarily in nondist/sandbox or on a branch of their own, and will
  have their work reviewed before changes are accepted into the trunk.

  - Matt Fleming was added on 25 May 2006 by AMK; he'll be working on
    enhancing the Python debugger.

  - Jackilyn Hoxworth was added on 25 May 2006 by AMK; she'll be adding logging
    to the standard library.

  - Mateusz Rukowicz was added on 30 May 2006 by AMK; he'll be
    translating the decimal module into C.

- SVN access granted to the "Need for Speed" Iceland sprint attendees,
  between May 17 and 21, 2006, by Tim Peters.  All work is to be done
  in new sandbox projects or on new branches, with merging to the
  trunk as approved:

  Andrew Dalke
  Christian Tismer
  Jack Diederich
  John Benediktsson
  Kristján V. Jónsson
  Martin Blais
  Richard Emslie
  Richard Jones
  Runar Petursson
  Steve Holden
  Richard M. Tew

- Steven Bethard was given SVN access on 27 Apr 2006 by DJG, for PEP
  update access.

- Talin was given SVN access on 27 Apr 2006 by DJG, for PEP update
  access.

- George Yoshida (SF name "quiver") added to the SourceForge Python
  project 14 Apr 2006, by Tim Peters, as a tracker admin.  See
  contemporaneous python-checkins thread with the unlikely Subject:

      r45329 - python/trunk/Doc/whatsnew/whatsnew25.tex

- Ronald Oussoren was given SVN access on 3 Mar 2006 by NCN, for Mac
  related work.

- Bob Ippolito was given SVN access on 2 Mar 2006 by NCN, for Mac
  related work.

- Nick Coghlan requested CVS access so he could update his PEP directly.
  Granted by GvR on 16 Oct 2005.

- Added two new developers for the Summer of Code project. 8 July 2005
  by RDH.  Andrew Kuchling will be mentoring Gregory K Johnson for a
  project to enhance mailbox.  Brett Cannon requested access for Flovis
  Bruynooghe (sirolf) to work on pstats, profile, and hotshot.  Both users
  are expected to work primarily in nondist/sandbox and have their work
  reviewed before making updates to active code.

- Georg Brandl was given SF tracker permissions on 28 May 2005
  by RDH.  Since the beginning of 2005, he has been active in discussions
  on python-dev and has submitted a dozen patch reviews.  The permissions
  add the ability to change tracker status and to attach patches.  On
  3 June 2005, this was expanded by RDH to include checkin permissions.

- Terry Reedy was given SF tracker permissions on 7 Apr 2005 by RDH.

- Nick Coghlan was given SF tracker permissions on 5 Apr 2005 by RDH.
  For several months, he has been active in reviewing and contributing
  patches.  The added permissions give him greater flexibility in
  working with the tracker.

- Eric Price was made a developer on 2 May 2003 by TGP.  This was
  specifically to work on the new ``decimal`` package, which lived in
  ``nondist/sandbox/decimal/`` at the time.

- Eric S. Raymond was made a developer on 2 Jul 2000 by TGP, for general
  library work.  His request is archived here:

      http://mail.python.org/pipermail/python-dev/2000-July/005314.html


Permissions Dropped on Request
------------------------------

- Roy Smith, Matt Fleming and Richard Emslie sent drop requests.
  4 Aug 2008 GFB

- Per note from Andrew Kuchling, the permissions for Gregory K Johnson
  and the Summer Of Code project are no longer needed.  4 Aug 2008 GFB

- Per note from Andrew Kuchling, the permissions for Gregory K Johnson
  and the Summer Of Code project are no longer needed.  AMK will make
  any future checkins directly.  16 Oct 2005 RDH

- Johannes Gijsbers sent a drop request.  27 July 2005 RDH

- Flovis Bruynooghe sent a drop request.  14 July 2005 RDH

- Paul Prescod sent a drop request.  30 Apr 2005 RDH

- Finn Bock sent a drop request.  13 Apr 2005 RDH

- Eric Price sent a drop request.  10 Apr 2005 RDH

- Irmen de Jong requested dropping CVS access while keeping tracker
  access.  10 Apr 2005 RDH

- Moshe Zadka and Ken Manheimer sent drop requests.  8 Apr 2005 by RDH

- Steve Holden, Gerhard Haring, and David Cole sent email stating that
  they no longer use their access.   7 Apr 2005 RDH


Permissions Dropped after Loss of Contact
-----------------------------------------

- Several unsuccessful efforts were made to contact Charles G Waldman.
  Removed on 8 Apr 2005 by RDH.


Initials of Project Admins
--------------------------

TGP:  Tim Peters
GFB:  Georg Brandl
BAC:  Brett Cannon
NCN:  Neal Norwitz
DJG:  David Goodger
MvL:  Martin v. Loewis
GvR:  Guido van Rossum
RDH:  Raymond Hettinger
