<HTML>

<HEAD>
<TITLE>Vision Statement of the NetBeans Open Source Project</TITLE>
<META NAME="NAV_LINK" content="Vision">
<META NAME="NAV_PRIORITY" content="6">
<link rel="stylesheet" type="text/css" HREF="../../netbeans.css">
</HEAD>

<body>

<h1>Vision Statement of the NetBeans Open Source Project</h1>

<p><h3>A look back</h3>

<br>Let's look a little into the past. NetBeans started as a Java IDE. At
the beginning it was like every other IDE with an editor, GUI designer,
debugger, etc. The IDE was written in Java and it ran on any platform. The
people writing it were developing NetBeans using NetBeans (they still are).
After a while the IDE began to evolve in some interesting ways:

<P>Open APIs were introduced to make the IDE extensible. The
team developing it grew. NetBeans was open sourced. Developers began
to use various tools to manage the code. In each case, it proved worthwhile
to integrate the tools used to develop the IDE into the IDE itself. The result
is that NetBeans contains things like version control support, building
using ANT, Javadoc search and generation and more.

<P>Each new integration showed the strengths and
weaknesses of the APIs. As a result, the APIs were evolved to be increasingly
generic, to accommodate the maximum number of use cases, while making
the minimum assumptions about those use cases.

More and more the developers worked to make NetBeans not just a Java IDE, but a
platform for tools no matter what language or technology was being used.
NetBeans became more of a platform, integrating a huge variety of tools
into a seamless environment, enhancing, not compromising, the usefulness of
those tools by themselves.

<P>This turned out to be even more valuable than it seemed. For example,
when you integrate a debugger from one place, source control system from another,
and a code browser from a third into the same environment, you end up
with something greater than the sum of its parts. And so the concept
of a &quot;tools platform&quot; was born.

<P><h3>IDEs and Platform</h3>
<BR>IDE stands for Integrated Development Environment. Integration in
old-fashioned, monolithic IDEs meant a set of tools are available as part of a single
program.  Yet development today needs more than this kind of integration. A
better meaning for integration can be had by looking at the modern software
development process.  Applications and application development

<UL><LI>Are multiplatform and distributed - various OS's, servers,
workstations, handheld devices, etc.</LI>
<LI>Are multi-language - Java, HTML, C/C++, Perl, Python, etc.</LI>
<LI>Use various technologies and standards - databases, XML, Servlets, JSP, UML, ...</LI>
<LI>Go through many stages - such as design, modelling, implementation,
documentation, deployment and support.</LI>
<LI>Are developed in a variety of styles - from individuals, to small teams, to
large distributed teams, to open source.</LI>
</UL>

<P>A really good, useful IDE should work with the tools used by people
playing different roles in a project, integrate them and make them available
as a part of one environment. An IDE should cover all aspects of the
application and stages of the development cycle, and which can be used by
all members of the development team.

<P>Providing tools for all the aspects of development, and
integrating them in the deeper sense of the word is not an easy task.
Therefore, our goal is to create a Platform which achieves these goals, and
let everyone add their own tools to it. We know that there is no &quot;one
size fits all&quot; IDE - so it is better to empower developers and
teams to customize the IDE to meet their unique needs.

<P><h3>Where we are going</h3>

<div class="rarticle">
  <div class="ml15"><B>We must ensure the NetBeans Platform is solid, stable, performant and
  backward compatible</B>, since it is the foundation of other
  projects. At the same time we have to work toward maximum
  extensibility and the most generic and flexible framework possible. We
  will continue to develop and release NetBeans IDE and focus
  on making it a powerful and popular IDE for developing in Java and other
  languages.</div>
</div>

<div class="rarticle">
  <div class="ml15"><B>We will improve NetBeans simultaneously in all areas in an iterative
  way.</B> There will be times when the above goals contradict each other, e.g.
  purity of the APIs vs. backward compatibility vs. performance vs. genericity
  - these are not always compatible. Especially in such cases the community
  should determine the right course of action in broad discussion,
  preserving backward compatibility where possible, and providing workarounds
  to keep existing integrations effective.</div>
</div>

<div class="rarticle">
  <div class="ml15"><B>We will continue to encourage use of NetBeans IDE for development
  with any language or technology.</B> Addition of support for new languages and
  technologies will continue.</div>
</div>

<div class="rarticle">
  <div class="ml15"><B>We will continue to make the sources public under a very liberal license</B>
  which will allow both individuals and companies to benefit from
  participating in the project.  By providing
  a safety blanket - the source code is always available, and the license does not
  prohibit modifications to it - those who integrate with it can feel comfortable because
  they are not at risk of vendor lock-in.</div>
</div>

<div class="rarticle">
  <div class="ml15"><B>We will continue to grow the NetBeans community</B>
  We believe that it is not possible to achieve these goals without a
  thriving community.  NetBeans is developed as an open source project. We
  believe that this development model is ideal for building such a platform.
  Every piece of information, every special case, every experience integrating
  something new reveals new paths and new possibilities.
  Community-based, public development allows everyone to benefit from each other's experiences.
  Something that develops from this process is &quot;institutional memory&quot;. We need
  to learn from our experiences, and incorporate the lessons learned into what
  we do next. Community makes that happen.</div>
</div>

</body>
</html>
