<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<!--/*
 *                 Sun Public License Notice
 * 
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/developers/spl.html.
 * 
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
 * Microsystems, Inc. All Rights Reserved.
 * 
 * Portions Copyright 2003 Maxym Mykhalchuk
 */-->

<!-- CREDITS.html revision: 1.25 -->
<HTML>
<HEAD>
  <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta NAME='content-language' CONTENT='ru'>
  <link rel="stylesheet" type="text/css" href="netbeans.css">
  <TITLE>NetBeans: Благодарности</TITLE>
</HEAD>
<BODY>
<H1>NetBeans: Благодарности</H1>

<p>Проект с открытым исходнім кодом NetBeans не мог бы существовать без вкладов
сообщества.</p>

<P>Особая благодарность выражается:</p>

<ul>
   <LI>Sun Microsystems, Inc.
</ul>

<p>за публикацию исходного кода NetBeans IDE и оплату труда многих людей,
занятых в работе над этим проектом.</p>

<P>Дополнительная благодарность выражается следующим людям, которые сделали
вклад в данный проект (в алфавитном порядке и независимо от объёма их вклада):</p>

<ul>
    <LI>Asgeir Orn Asgeirsson    &lt;asgeir@dimonsoftware.com&gt;
    <LI>Carel Bast               &lt;Carel.Bast@nl.compuware.com&gt;
    <LI>Chris Bishop             &lt;kit@bishop.net.nz&gt;
    <LI>Michael Bishop           &lt;mikebish@ecsi.com.au&gt;
    <LI>Mauro Botelho            &lt;mbotelho@ccsc.com&gt;
    <LI>Vincent Brabant          &lt;vincent.brabant@skynet.be&gt;
    <LI>Jeff Cantin              &lt;jdcantin@netbeans.org&gt;
    <LI>Benoit Cerrina	         &lt;benoit.cerrina@writeme.com&gt;
    <LI>Jayme C. Edwards         &lt;angjh@execpc.com&gt;
    <LI>Nick Fortescue           &lt;nfortescue@netbeans.org&gt;
    <LI>Kees van Ginkel          &lt;kees_van_ginkel@nl.compuware.com&gt;
    <LI>Andrej Golovnin          &lt;golovnin@gmx.net&gt;
    <LI>Robert Greig             &lt;user@rgreig.freeserve.co.uk&gt;
    <LI>Niclas Hedhman           &lt;niclas@ewarna.com&gt;
    <LI>Leon Chiver              &lt;leon@level7.ro&gt;
    <LI>Jonathan Keller          &lt;jhkeller@ucdavis.edu&gt;
    <LI>Milos Kleint             &lt;milos@ewarna.com&gt;
    <LI>Jeff Keyser              &lt;JKeyser@telocity.com&gt;		
    <LI>Arjan Kok                &lt;arjan_kok@nl.compuware.com&gt;
    <LI>Holger Krug              &lt;hkrug@netbeans.org&gt;
    <LI>Jan Labrie               &lt;Jan_Labrie@nl.compuware.com&gt;
    <LI>Max Lobel                &lt;axobel@yahoo.co.jp&gt;
    <LI>Jun Luo                  &lt;junluo@nuance.com&gt;
    <LI>Roger Martin             &lt;neuralworks@home.com&gt;
    <LI>Maxym Mykhalchuk         &lt;gandalf@a-teleport.com&gt;
    <LI>Derrick Oswald           &lt;DerrickOswald@home.com&gt;
    <LI>John Richardson          &lt;jrichard@zealand.mv.com&gt;
    <LI>Gerrit Riessen           &lt;Gerrit.Riessen@web.de&gt;
    <LI>Michael Ruflin           &lt;mruflin@gmx.de&gt;
    <LI>Wiebe Ruiter             &lt;weeb@weeb.com&gt;
    <LI>Kai Rudiger Schobbert    &lt;KRS@logas.de&gt;
    <LI>Thomas Singer            &lt;thomas.singer@regnis.de&gt;
    <LI>Evan "Hippy" Slatis      &lt;Evan.Slatis@nl.compuware.com&gt;
    <LI>Christian Stein          &lt;stein@caladon.de&gt;
    <LI>Ted Stockwell            &lt;ted.stockwell@acxiom.com&gt;
    <LI>Lukas Tadial             &lt;lukas.tadial@email.cz&gt;
    <LI>Alan Tai                 &lt;Alan.Tai@chase.com&gt;
    <LI>Gili Tzabari             &lt;l8r@email.com&gt;
    <LI>Rich Unger               &lt;runger@nuance.com&gt;
    <LI>Compaq Computer Corporation (several individuals) &lt;NetBeans@compaq.com&gt;
</ul>

<P>Если Вас нет в этом списке, а Вам кажется, что Вы должны в нём быть,
пожалуйста, 
<A HREF="mailto:info@netbeans.org?subject=NetBeans+credits+file">дайте нам
знать</A> и дайте детали о Ваших вкладах: на пример, ссылки на архивы списков
рассылки, Issuezilla, фиксации в CVS, и др.
</p>

<P>Мы также очень благодарны людям, внёсшим идеи или время ответить в списках
рассылки.
</p>

</BODY>
</HTML>
