<HTML>
<HEAD>
<TITLE>Contributing to the NetBeans Project</TITLE>
<META NAME="description" CONTENT="How to make contributions to netbeans.org">
<META NAME="NAV_LINK" content="Contribute">
<META NAME="NAV_PRIORITY" content="10">
<link rel="stylesheet" type="text/css" HREF="../../netbeans.css">
<meta http-equiv="content-language" CONTENT="en">
</HEAD>

<BODY>

<h1>Contributing to netbeans.org</h1>

<P>You probably know that NetBeans is an <a href="../../about/os/">open
source project</a>. Open source projects are primarily community driven, 
although companies may make commercial products from these projects. Open 
source projects encourage everyone in the community to contribute their 
knowledge and expertise and, in turn, everyone in the community benefits. 
For example, when the community contributes enhancement requests or submits 
bug reports, fixes or enhancements are implemented to improve the tools, and 
everyone benefits. Because NetBeans is open source, you can influence what 
happens to the IDE and the direction for NetBeans' future growth

<P>Contributing code is not the only way to help NetBeans! Read our list below 
for other ways you can help the community.

<p><h2>Community Support, Promotion</h2>
<ul>
<li><b>Participate on Mailing Lists</b>
<br>There are several <a href="../../community/lists/top.html">mailing lists
and newsgroups</A> at netbeans.org, where people using the software can benefit
from each others' expertise.  To really be useful, community lists need <i>your</i>
input!  Please don't be afraid to post - help others when you can!</li>



<p><li><b>Promote NetBeans!</b>
<br>If you're a NetBeans user, speak out!  There's a lot of competition
out there, and many developers haven't heard of NetBeans, or worse, have
heard of it but have misconceptions, or haven't heard about recent
improvements.  Help spread the word - talk about NetBeans strengths, and
weaknesses, on blogs, industry mailing lists, print magazines and forums.
You found (or wrote) a NetBeans-related article or review? 
<A HREF="https://netbeans.org/about/contact_form.html?to=2">We'd love to read it</a>!</li>
</ul>

<p><h2>Submit Content<!--, Translations--!></h2>
<ul>
<p><LI><B>Contribute Website Content</B>
<BR>You figured out how to solve a tricky use-case? 
<a href="http://wiki.netbeans.org/wiki/view/CommunityDocs">New 
content or updates to existing content</a> are always welcome!  Articles
like FAQs and HOWTOs are very very helpful, as are Flash movies. See the
<A HREF="web-content.html">guidelines for contributing tutorials</A> for more info.
Use this free 
<a href="https://netbeans.org/projects/www/downloads">webspace for your contributed demos</a>.
</li>

<!--<p><LI><B>Translations, Localisations</B>
<BR>Are you interested in efforts to localize web site content, or the IDE
itself, in your native language?  We and your fellowmen would appreciate your help!  See the
<A HREF="localise.html">Localisation Quick Start</A> page for info.
Some community members already created
<a href="http://wiki.netbeans.org/wiki/view/FaqInternationalCommunity">forums
in various languages</a>, and now help others 
    <a href="https://netbeans.org/kb/articles/learn-java.html#3">get started with Java</a> and NetBeans.
</li>

<--!><p><LI><B>Edit the Newsletter, Submit Stories for The Edge</B>
<BR>The weekly <A HREF="../news/newsletter/index.html">NetBeans Newsletter</A>
is put together by volunteers involved in NetBeans - if you're
following current events on the mailing lists you could edit a
newsletter!  The <A HREF="../news/newsletter/index.html">monthly Edge</A>
newsletter is always looking for contributing authors to write an interview,
an article, partner spotlights ... if you'd like to submit a story, please
<A HREF="https://netbeans.org/about/contact_form.html?to=2">get in touch</A>.
Also if you heard of an event or conference in your area where NetBeans is used, 
<A HREF="https://netbeans.org/about/contact_form.html?to=2">drop us a note</a>
and we'll advertise it in our <a href="https://netbeans.org/community/news/calendar.html">event calendar</a>.
</li>
</ul>

<p><h2>Submit Bug Reports, Write Code</h2>
<ul>
<p><Li><B>File a Bug Report</B>
<BR>Bug reports are very helpful to developers, and a great way to contribute
to the project!  Remember to take a little time when
<A HREF="../issues.html">filing a bug report</A> - make sure you can
reproduce the problem, and be very explicit in your description.
</li>

<p><LI><B>File an Enhancement Request</B>
<BR>If there's something you'd like to see in the IDE and don't, or
something you can imagine improving, let us know!  Enhancement requests
should be <A HREF="../issues.html">filed in the issue tracking system</A>,
the same as for bugs.
</li>

<p><LI><B>Contributing Code and Plugin Modules</B>
<BR>As mentioned above, NetBeans is an open-source project - all of the
source code is available, and if there's a feature you'd like to see, or a
bug you'd like to see fixed, you have the power to make that happen.  
You can learn more about <a href="http://platform.netbeans.org/tutorials/">developing plugin modules</a>,
<A HREF="patches.html">contributing patches</A> and
<A HREF="modules.html">contributing plugin modules</A>.
Publish your plugin modules in the <a href="http://plugins.netbeans.org/PluginPortal/">Plugin Portal</a>
and get feedback from your fellow community members!
</li>
</ul>

</body>
</html>
