---
title: People behind Apache Polygene™
layout: default
---
<div class="page-header">
    <h1>People behind Apache Polygene™</h1>
    <p class="lead">
      Qi4j was started in 2007 by Niclas Hedhman and Rickard &Ouml;berg, a.k.a "The Founders".
      <br/>
      In 2015, Qi4j came to the Apache Software Foundation, and is run as an Apache project named Apache Polygene™.
    </p>
</div>
<div class="row-fluid">
    <div class="span2"></div>
    <div class="span8">

        <p>
            There are many types of contributors to open source projects, this one included, and we urge you to take a look at
            <a href="http://www.oss-watch.ac.uk/resources/rolesinopensource.xml">http://www.oss-watch.ac.uk/resources/rolesinopensource.xml</a>
            to see how you can contribute, even if you don't have the expertise or time required for the source code evolution.
        </p>

        <h2>Project Management Committee</h2>
        <p>
            The Project Management Committee (PMC) are the people who has shown significant commitment towards the project and
            act as the stewards of the project. The PMC is responsible for decision making, brand policy, legal compliance, release
            management, security responses and all other aspects of the maintenance and evolvution of the codebase under its care.
            The following people are currently PMC.
        </p>
        <ul>
            <li>Alex Karasulu</li>
            <li>James W. Carman</li>
            <li>Jeff Genender</li>
            <li>Jiri Jetmar</li>
            <li>Marcel Offermans</li>
            <li>Chris Mattmann</li>
            <li>Niclas Hedhman</li>
            <li>Paul Merlin (Chair)</li>
            <li>Roman Shaposhnik</li>
            <li>Sandro Martini</li>
            <li>Kent Sølvsten</li>
            <li>Stanislav Muhametsin</li>
        </ul>

        <h2>Contributors</h2>
        <p>
            There has been numerous contributors to the Polygene/Zest/Qi4j project over the years, and with risk of missing someone,
            we try to maintain this list to show our appreciation of these contributions.
        </p>
        <h3>Rickard &Ouml;berg</h3>
        <p>
            Rickard requires special mention, as a majority of the Core runtime implementation is written by him,
            and done so more than once (3 or 4 total re-writes) as our understanding for the problem space has improved.
        </p>
        <p>
            Rickard's achievements here and elsewhere (JBoss, XDoclet, Struts2), can not be understated. This project
            wouldn't exist without his spearheading insights and innovative thinking. Many of the core concepts, Mixins,
            Concerns and Constraints in particular, existed in his tool box long before Qi4j was formed.
        </p>
        <p>
            Rickard has moved on, working at Neo Technologies, helping out on the Neo4j project. But we are eternally
            grateful for his efforts here, and hope to see him come back one day in the future.
        </p>
        <h3>Others</h3>
        <p>
            The list below includes all past and present contributors to the Polygene/Zest/Qi4j project. There
            might be omissions, and that is purely a mistake. So if you find anyone, incl yourself,
            missing from the list, please contact the Polygene developer list, dev@polygene.apache.org
        </p>
        <ul>
            <li>Alex Shneyderman</li>
            <li>Alin Dreghiciu</li>
            <li>Arvid Huss</li>
            <li>Chris Chapman</li>
            <li>David Leangen</li>
            <li>Edward Yakop</li>
            <li>Georg Ragaller</li>
            <li>Jan Kronquist</li>
            <li>Jaydatt Desai</li>
            <li>Johan Svensson</li>
            <li>Lan Boon Ping</li>
            <li>Marc Grue</li>
            <li>Michael Hunger</li>
            <li>Muhd Kamil bin Mohd Baki</li>
            <li>Nino Saturnino Martinez Vazquez Wael</li>
            <li>Phillippe van Dyck</li>
            <li>Peter Neubauer</li>
            <li>Richard Wallace</li>
            <li>Sianny Halim</li>
            <li>Sonny Gill</li>
            <li>Tao Wen</li>
            <li>Tibor Mlynarik</li>
            <li>Tobias Ivarsson</li>
            <li>Tonny Kohar</li>
        </ul>

    </div>
    <div class="span2"></div>
</div>
