<HTML>

<HEAD>
<TITLE>Teams</TITLE>
<META NAME="NAV_LINK" content="Teams">
<META NAME="NAV_PRIORITY" content="6">
<link rel="stylesheet" type="text/css" HREF="../../netbeans.css">
</HEAD>

<BODY>
<h1>NetBeans Teams</h1>

<h2>Development</h2>
<p>
  The development team develops the NetBeans IDE and Platform. It makes sure the
  IDE has the right set of features, and the implementation is clean, fast and
  rock-solid.  For more details about the team, see the
  <a href="../../projects">Development team pages</A> and 
  the <a href="http://wiki.netbeans.org/Development">NetBeans wiki</a>.
</p>

<h2>User Interface (UI)</h2>
<p>
  The UI team designs the user interface of the IDE. They focus on
  usability, intuitivity, developer productivity, taking into account
  accessibility requirements and design principles such as the Java
  Look & Feel Guidelines. Find out more on <a href="http://ui.netbeans.org/index.html">the UI website</a>,
  or read the <a href="../articles/interviews/xdesign-team.html">interview</a>.
</p>

<h2>Quality Assurance (QA)</h2>
<p>
  The QA team makes sure the NetBeans IDE & Platform work as advertised. This
  includes building and maintaining a suite of automated tests, 
  a regular community acceptance testing propram, as well as maintenance of the bug database.  
  See the <a href="http://qa.netbeans.org/index.html">QA team pages</A>
  to find out more.
</p>

<h2>The NetBeans Dream Team</h2>
<p>
  The <a href="https://netbeans.org/community/contribute/dreamteam.html">NetBeans Dream Team</a> 
  is a community-driven group of highly skilled NetBeans users. 
  They participate at NetBeans developer events, on mailing lists and developer forums, 
  providing new, interesting and informative content as well as developing new and 
  creative ways to teach and promote NetBeans products. 
  They are experts in one or more areas of NetBeans IDE or NetBeans Platform and 
  act as a local representative for NetBeans users in their area and for their skill set.
</p>

<h2>Evangelism</h2>
<p>
  The Evangelism team is responsible for the promotion of the NetBeans project 
  (including tradeshows, conferences, press, regional activities, education, books, etc.),
  the product information content of the netbeans.org website, and other
  marketing activities.  To see how you can join and participate see the
  <a href="evangelism/index.html">Evangelism team pages</A>.
</p>

<h2>Web Content</h2>
<p>
  The Web team makes sure the NetBeans.org website, forums and wiki 
  are state-of-the-art sources of information for the NetBeans community.  
  They highlight news, videos and tutorials on the frontpage and in news feeds, 
  make expert interviews and announcements, and write release and feature descriptions.
  The website uses the Project Kenai infrastructure with a custom NetBeans look&amp;feel.
  See the <a href="web/index.html">Web team pages</A> to find out more.
</p>

<h2>Documentation</h2>
<p>
  For every release, the Documentation team writes the integrated product help 
  that you can consult right in the IDE (Help menu or press F1). Additionally,
  this team also creates all the Quick Starts, tutorials, sample projects, and video demos 
  that you find online under Docs &amp; Support and on Platform.NetBeans.org. 
  To see how you can join and participate check out the 
  <a href="http://wiki.netbeans.org/CommunityDocs">Community Docs</a> program.
</p>


</body>
</html>
