The following people have commit access to the Shindig sources.
Note that this is not a full list of Shindig's authors, however --
for that, you'd need to look over the log messages to see all the
patch contributors.

If you have a question or comment, it's probably best to mail
dev@shindig.apache.org, rather than mailing any of these
people directly.

Blanket commit access:

	   lindner	Paul Lindner        lindner@apache.org       PMC Chair 
	   agektmr	Eiji Kitamura       agektmr@apache.org       PMC Member
	  bhofmann	Bastian Hofmann     bhofmann@apache.org      PMC Member
	    brianm	Brian McCallister   brianm@apache.org        PMC Member Mentor
	   chabotc	Chris Chabot        chabotc@apache.org       PMC Member
	  dbentley	Daniel Bentley      dbentley@apache.org      PMC Member
	      doll	Cassie Doll         doll@apache.org          PMC Member
	 dpeterson	Dan Peterson        dpeterson@apache.org     PMC Member
	      etnu	Kevin Brown         etnu@apache.org          PMC Member
	       ieb	Ian Boston          ieb@apache.org           PMC Member
	      evan	Evan Gilbert        evan@apache.org          PMC Member
	    jasvir	Jasvir Nagra        jasvir@apache.org        PMC Member
	     johnh	John Hjelmstad      johnh@apache.org         PMC Member
	     jyang	Jun Yang            jyang@apache.org         PMC Member
	     sgala	Santiago Gala       sgala@hisitech.com       Emeritus Mentor
	     lryan	Louis Ryan          lryan@apache.org         PMC Member
	   martint	Martin Traverso     martint@apache.org       PMC Member
	  vsiveton	Vincent Siveton     vsiveton@apache.org      PMC Member
	      zhen	Zhen Wang           zhen@apache.org          PMC Member
	    awiner	Adam Winer          awiner@apache.org        PMC Member
	     chico	Chico Charlesworth  chico@apache.org         PMC Member
	    chirag	Chirag Shah         chirag@apache.org        PMC Member
	  hsaputra	Henry Saputra       hsaputra@apache.org      PMC Member
	  chaowang	Jacky Wang          chaowang@apache.org      PMC Member
	   zhoresh	Ziv Horesh          zhoresh@apache.org       PMC Member
	     gagan	Gagandeep Singh     gagan@apache.org         PMC Member
	     hnguy	Han Nguyen          hnguy@apache.org         PMC Member
	      fitz	Brian Fitzpatrick   fitz@apache.org          Mentor    
	    gstein	Greg Stein          gstein@apache.org        Emeritus Mentor
	   sylvain	Sylvain Wallez      sylvain@apache.org       Mentor    
	     tomdz	Thomas Dudziak      tomdz@apache.org         Mentor    
	 upayavira	Upayavira           upayavira@apache.org     Mentor    
	 dharkness	David Harkness      dharkness@apache.org     Emeritus  
	   henning	Henning Schmiedehausenhenning@apache.org     Emeritus
	   woodser	Eric Woods			woodser@apache.org		 PMC Member