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 mathematics 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
