---
layout: page
title: Committers
---
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

**Jakob Homan**<br/>
Apache Member, Committer, and PMC member<br/>
<a href="http://www.linkedin.com/in/jghoman" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="http://twitter.com/blueboxtraveler" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Jay Kreps**<br/>
Committer, and PMC member<br/>
<a href="http://www.linkedin.com/in/jaykreps" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="http://twitter.com/jaykreps" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Chris Riccomini**<br/>
Committer, and PMC member<br/>
<a href="http://www.linkedin.com/in/riccomini" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="http://twitter.com/criccomini" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Sriram Subramanian**<br/>
Committer, and PMC member<br/>
<a href="http://www.linkedin.com/pub/sriram-subramanian/3/52a/162" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="http://twitter.com/sriramsub1" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Garry Turkington**<br/>
Committer, and PMC member<br/>
<a href="http://uk.linkedin.com/in/garryturkington" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="http://twitter.com/garryturk" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Martin Kleppmann**<br/>
Committer, and PMC member<br/>
<a href="https://www.linkedin.com/in/martinkleppmann" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="https://twitter.com/martinkl" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Zhijie Shen**<br/>
Committer, and PMC member<br/>
<a href="https://www.linkedin.com/in/zjshen" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="https://twitter.com/zhijieshen" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Yan Fang**<br/>
Committer, and PMC member<br/>
<a href="https://www.linkedin.com/in/yanfangus" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="https://twitter.com/yanfang724" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Chinmay Soman**<br/>
Committer, and PMC member<br/>
<a href="https://www.linkedin.com/pub/chinmay-soman/5/610/35" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="https://twitter.com/ChinmaySoman" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Yi Pan**<br/>
Committer, and PMC member<br/>
<a href="https://www.linkedin.com/pub/yi-pan/9/85a/238" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="https://twitter.com/nickpan47" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>

**Navina Ramesh**<br/>
Committer<br/>
<a href="https://www.linkedin.com/in/rnavina" target="_blank"><i class="fa fa-linkedin committer-icon"></i></a>
<a href="https://twitter.com/navina_r" target="_blank"><i class="fa fa-twitter committer-icon"></i></a>
