# This file lists people who have contributed code to
# plan9port, as recorded by the Mercurial and CVS logs.
# The list is incomplete but a start.
# My thanks to the people not listed here too.

Albert Lee <trisk@acm.jhu.edu>
André Günther <Andre.G@gmx.de>
Benjamin Huntsman <BHuntsman@mail2.cu-portland.edu>
Enrique Soriano <enrique.soriano@gmail.com>
Fazlul Shahriar <fshahriar@gmail.com>
J.R. Mauro <jrm8005@gmail.com>
Jeff Sickel <jas@corpus-callosum.com>
Kris Maglione <jg@suckless.org>
Mathieu Lonjaret <lejatorn@gmail.com>
Michael Teichgräber <mt4swm@googlemail.com>
Michael Teichgräber <mt@ib.wmipf.de>
Russ Cox <rsc@swtch.com>
Tim Newsham <tim.newsham@gmail.com>
Tony Lainson <t.lainson@gmail.com>
Venkatesh Srinivas <extrudedaluminiu@gmail.com>
grai <t.lainson@gmail.com>
