<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
        <!-- List of outstanding NetBeans community contributors -->
        <title>NetBeans Community Contributors</title>
        <meta name="keywords" content="NetBeans community contributors" lang="en">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="https://netbeans.org/netbeans.css" type="text/css" rel="Stylesheet">
    </head><body>
        <h1>NetBeans Community Contributors</h1>

        <p>The NetBeans Team extends its gratitude to the community
            contributors listed on this page for their time and effort on behalf of
            the NetBeans project.<br>
        </p>

        <p><a href="#mailing_mist_moderators">NetBeans Mailing List Moderators</a><br>
            <a href="#plugin_verifiers">NetBeans Plugin Verifiers</a><br>
            <a href="#netcat_testers">NetCAT Testers</a><br>
            <a href="#netfix_developers">NetFIX Developers</a><br>
            <a href="#dream_team">NetBeans Dream Team</a><br>
        </p>

        <h2><a name="mailing_mist_moderators">NetBeans Mailing List Moderators</a></h2>
        <p>
            The public <a href="https://netbeans.org/community/lists/index.html">NetBeans mailing 
            lists</a> are <a href="https://netbeans.org/community/lists/moderate.html">monitored by volunteers</a> who daily evaluate incoming moderation
            requests to protect mailing list subscribers from spam and other
            malicious e-mails.
        </p>

        <table>
            <tbody><tr>
                    <td><img src="photos/aurelian_tutuianu.jpg"></td>
                    <td>
                        Name: <a href="http://javasign.blogspot.com">Aurelian Tutuianu</a><br>
                        Country: Romania<br><br>
                        <i>NetBeans has a special place in my heart. I have used it since Forte for
                        Java 3.0 CE. I am still amazed about the pace and value of open source software.
                        This is not my first contribution to the great NetBeans community and for sure
                        this will not be the last. A small payback to the community as a sign of attachment</i>
                        and esteem.
                    </td>
                </tr>
            </tbody>
        </table>
        <table>
            <tbody><tr>
                    <td><img style="width: 74px; height: 89px;" alt="Doug McNeil, NetBeans mailing list moderator" src="photos/doug_mcneil.png"></td>
                    <td>
                        Name: <b>Doug McNeil</b><br>
                        Country: Canada<br><br>
                        <i>I'm a 7-Year NetBeans user and plugin writer. OSS when it works is
                        great...and keeping it working requires involvement! So get involved! When
                        not programming or otherwise involved with software development I'm out dirt
                        biking, canoeing or skiing.</i>
                    </td>
                </tr>
            </tbody>
        </table>
        <br>
        <h2><a name="plugin_verifiers"></a>NetBeans Plugin Verifiers</h2>
        <p>
            The <a href="http://plugins.netbeans.org/PluginPortal">NetBeans Plugin Portal</a>
            houses hundreds of modules, but only verified plugins are published to the <a href="http://wiki.netbeans.org/FaqPluginUpdateCenter">NetBeans 
                Update Center</a>. Certifying plugins is handled by the following capable
            individuals from the NetBeans community.<br>
        </p>
        <table>
            <tbody><tr>
                    <td><img src="photos/merl_creps.png" alt="Merl's picture"></td>
                    <td>
                        Name: <b>Merl J. Creps Jr.</b><br>
                        Country: USA<br><br>
                        <i>Netbeans is a great platform to develop application in easy to use, loads of
                        plugins and a great knowledge base in its community.  Keep up the good work.</i>
                    </td>
                    <td><img src="photos/carlos_quintanilla.jpg" alt="Carlos's picture"></td>
                    <td>
                        Name: <b>Carlos Quintanilla</b><br>
                        Country: Belgium<br><br>
                        <i>Being part of such an important open source project and community is really
                        cool! I'm really enjoying working as a plugin verifier and getting more and
                        more involved with the NetBeans IDE and the Java tools.</i>
                    </td>
                </tr>
                <tr>
                    <td><img src="photos/jonathan_lermitage.png" alt="Jonathan's picture"></td>
                    <td>
                        Name: <b>Jonathan Lermitage</b><br>
                        Country: France<br><br>
                        <i>Do not hesitate to join the NetBeans community. Contribute does not mean debug
                        thousands lines of code per day or write Javadoc, you can help in many different
                        ways and spend quality time with some very interesting people!</i>
                    </td>
                </tr>
            </tbody>
        </table>
        <br>

        <h2><a name="netcat_testers">NetCAT Testers</a></h2>
        <div style="text-align: justify;">
        </div>
        <table class="tablebg" border="0" cellpadding="1" cellspacing="1">
            <tbody><tr>
                    <td style="text-align: left;" rowspan="16">
                        <a href="http://wiki.netbeans.org/NetCAT"><img src="https://qa.netbeans.org/processes/cat/80/logo.png" hspace="10" align="left"></a> Everyone likes new features, right? We believe though that
                        <span style="font-weight: bold;">quality</span>
                        is also a feature. Implementing new features in the product not only
                        involves testing that new functionality is stable but also making sure
                        that existing functionality does not regress. In 2004, we introduced a
                        Beta testing program called <a href="http://wiki.netbeans.org/NetCAT">NetCAT</a> to
                        address this challenge. Over the years more than 1000 volunteers have
                        taken part in this community testing effort and have helped with
                        stabilizing development builds. NetCAT programs are now a necessary
                        part of every release cycle because nothing compares to feedback from
                        those who use the product regularly. </td>
                </tr>
                <tr class="tablecbg"><td width="250" align="center"><a href="http://qa.netbeans.org/processes/cat/36/participants.html">NetCAT 3.6 (40 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/40/participants.html">NetCAT 4.0 (60 testers)</a></td></tr>
                <tr class="tablecbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/41/participants.html">NetCAT 4.1 (60 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/50/participants.html">NetCAT 5.0 (150 testers)</a></td></tr>
                <tr class="tablecbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/60/participants.html">NetCAT 6.0 (60 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/65/participants.html">NetCAT 6.5 (60 testers)</a></td></tr>
                <tr class="tablecbg"><td align="center"><a href="http://wiki.netbeans.org/NetCAT67Participants">NetCAT 6.7 (90 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/68/activity.html">NetCAT 6.8 (90 testers)</a></td></tr>
                <tr class="tablecbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/69/activity.html">NetCAT 6.9 (60 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/70/activity.html">NetCAT 7.0 (90 testers)</a></td></tr>
                <tr class="tablecbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/71/activity.html">NetCAT 7.1 (70 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/72/activity.html">NetCAT 7.2 (80 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/73/activity.html">NetCAT 7.3 (90 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/74/activity.html">NetCAT 7.4 (110 testers)</a></td></tr>
                <tr class="tablerbg"><td align="center"><a href="http://qa.netbeans.org/processes/cat/80/activity.html">NetCAT 8.0 (110 testers)</a></td></tr>
            </tbody></table>

    <h2><a name="netfix_developers">NetFIX Developers</a></h2>
    <div style="text-align: justify;">
    </div>
    <p><table class="tablebg" border="0" cellpadding="1" cellspacing="1">
        <tbody><tr>
                <td style="text-align: justify;" rowspan="4">
                    While the NetBeans project is flush with testers, some community
                    members prefer to contribute code. For them, we created the <a href="http://wiki.netbeans.org/NetFIX">NetFIX</a> program in 2009. The NetFIX
                    team consists of developers who browse NetBeans Bugzilla for bugs, fix them locally, and provide patches.<br>
                </td>
            </tr>
            <tr class="tablecbg" bgcolor="#dddddd"><td width="250" align="center"><a href="http://wiki.netbeans.org/NetFIX67Participants">NetFIX 6.7 (4 developers)</a></td></tr>
            <tr class="tablerbg"><td align="center"><a href="http://wiki.netbeans.org/NetFIX68Participants">NetFIX 6.8 (9 developers)</a></td></tr>
            <tr class="tablecbg" bgcolor="#dddddd"><td align="center"><a href="http://wiki.netbeans.org/NetFIXParticipants">NetFIX 6.9 (15 developers)</a></td></tr>
        </tbody></table>
</p>

<h2><a name="dream_team">NetBeans Dream Team</a></h2>
<table>
    <tbody><tr><td><a href="http://dreamteam.netbeans.org/"><img src="photos/dt_logo.jpg" hspace="10" align="left"></a></td>
            <td>
                Given the size of the NetBeans community there are users who stand out
                for their commitment and enthusiasm to the NetBeans project. In January
                2007, <a href="http://wiki.netbeans.org/NetBeansDreamTeam">NetBeans Dream Team</a>
                was created to acknowledge these dedicated community evangelists. Dream
                team members speak about NetBeans at conferences, write books or blog
                about NetBeans, support developers on public mailing lists, encourage
                product adoption, and more. Many
                are consultants thanks to their deep understanding of the NetBeans RCP,
                are well known in the community and have multiple nominations and
                elections to NetBeans Governance Board.</td></tr></tbody>
</table>
<p><table>
    <tbody><tr>
            <td align="center">
                <img src="photos/anton_epple.png" title="Anton Epple" hspace="5"><br>
                Anton Epple
            </td>
            <td align="center">
                <img src="photos/antonio_vieiro.jpg" title="Antonio Vieiro" hspace="5"><br>
                Antonio Vieiro
            </td>
            <td align="center">
                <img src="photos/anuradha_gunasekara.jpg" title="Anuradha Gunasekara" hspace="5"><br>
                Anuradha Gunasekara
            </td>
            <td align="center">
                <img src="photos/caoyuan_deng.jpg" title="Caoyuan Deng" hspace="5"><br>
                Caoyuan Deng
            </td>
            <td align="center">
                <img src="photos/emilian_bold.jpg" title="Emilian Bold" hspace="5"><br>
                Emilian Bold
            </td>
        </tr>
        <tr>
            <td align="center">
                <img src="photos/ernie_rael.jpg" title="Ernie Rael" hspace="5"><br>
                Ernie Rael
            </td>
            <td align="center">
                <img src="photos/fabrizio_giudici.jpg" title="Fabrizio Giudici" hspace="5"><br>
                Fabrizio Giudici
            </td>
            <td align="center">
                <img src="photos/jacek_laskowski.jpg" title="Jacek Laskowski" hspace="5"><br>
                Jacek Laskowski
            </td>
            <td align="center">
                <img src="photos/joerg_plewe.jpg" title="Joerg Plewe" hspace="5"><br>
                Joerg Plewe
            </td>
            <td align="center">
                <img src="photos/kristian_rink.jpg" title="Kristian Rink" hspace="5"><br>
                Kristian Rink
            </td>
        </tr>
        <tr>
            <td align="center">
                <img src="photos/masoud_kalali.jpg" title="Masoud Kalali" hspace="5"><br>
                Masoud Kalali
            </td>
            <td align="center">
                <img src="photos/michael_nascimento.jpg" title="Michael Santos Nascimento" hspace="5"><br>
                Michael Santos Nascimento
            </td>
            <td align="center">
                <img src="photos/rich_unger.jpg" title="Rich Unger" hspace="5"><br>
                Rich Unger
            </td>
            <td align="center">
                <img src="photos/ryan_de_laplante.png" title="Ryan de Laplante" hspace="5"><br>
                Ryan de Laplante
            </td>
            <td align="center">
                <img src="photos/tonny_kohar.jpg" title="Tonny Kohar" hspace="5"><br>
                Tonny Kohar
            </td>
        </tr>
        <tr>
            <td align="center">
                <img src="photos/wade_chandler.jpg" title="Wade Chandler" hspace="5"><br>
                Wade Chandler
            </td>
            <td align="center">
                <img src="photos/javier_ortiz.png" title="Javier Ortiz" hspace="5"><br>
                Javier Ortiz
            </td>
            <td align="center">
                <img src="photos/michel_graciano.png" title="Michel Graciano" hspace="5"><br>
                Michel Graciano
            </td>
            <td align="center">
                <img src="photos/edvin_syse.png" title="Edvin Syse" hspace="5"><br>
                Edvin Syse
            </td>
            <td align="center">
                <img src="photos/tushar_joshi.png" title="Tushar Joshi" hspace="5"><br>
                Tushar Joshi
            </td>
        </tr>
    </tbody></table>
</p>
<br>
<hr>
Last Updated: July 21st, 2015
</body></html>