<!-- ----------------------------------------------------------------------------- -->
<!-- 
Project: Eclipse Test and Performance Tools Platform Project
-->
<!-- ----------------------------------------------------------------------------- -->

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
  <head>
    <title>Eclipse Roadmap</title>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="eclipse_style.css" >   
    </head>
  <body>
  
    <div id="page_header"><FONT class=indextop>DRAFT: Eclipse Roadmap v1.0 </FONT> <BR>
    </div>
    <div id="page_sub_header">the eclipse development process</div>	

    <div id="section_header">Introduction</div>
  <div class="content">
      <p><br>
      As required by the
<img border="0" src="PC/external.gif" width="20" height="16"><a href="../documents/Eclipse Development Process 2003_11_09 FINAL.pdf">Eclipse Development Process</a>, this document describes the Eclipse Roadmap. </p>
      <p>The Roadmap is intended to be a living document which will see future iterations. This document is the first version of the Eclipse Roadmap, so it is labeled as version 1.0. In order to preserve this document 
      while the underlying information evolves, the pages have been frozen by 
copying them from their original project hosted locations. Each frozen document 
      is labeled with its version and date and includes a link back to its 
      &quot;live&quot; version. Links that go outside 
this frozen copy are marked with the
<img border="0" src="PC/external.gif" width="20" height="16"> icon to inform the 
reader that that information may have changed since this document has written.</p>
      <p>The goal of the Roadmap is to provide the Eclipse ecosystem with guidance and visibility on the future directions of the Eclipse open source community. An important element in this visibility is that the Roadmap determines what projects will be accepted by Eclipse during the life of this revision of the Roadmap. In other words, new projects must be consistent with the Roadmap. This does not mean that every new project must be explicitly envisaged by the Roadmap. It does mean that new projects cannot be inconsistent with the stated directions of Eclipse. In particular, Eclipse expects that incubator projects created in the Technology PMC will cover areas not explicitly described in the Roadmap. </p>
      <p>There are four main sections to this document:</p>
      <ol>
        <li>This Preamble provides some background on Eclipse and the Foundation, and identifies the strategic goals of Eclipse. It also provides a brief overview of the scope of future projects anticipated within the Eclipse open source community. <br>
        </li>
        <li>The <a href="themes.html">Themes and Priorities</a> which has been developed by the Eclipse Requirements Council. <br>
        </li>
        <li>The <a href="PC/main.html">Platform Release Plan</a> which has been developed by the Eclipse Planning Council.<br>
        </li>
        <li>The <a href="AC/main.html">Architecture Plan</a> which has been developed by the Eclipse Architecture Council<br>
        </li>
      </ol>
  </div>
   	<br>
    <div id="section_header">Background</div>
   	<br>
 
  <div class="content">
    <p><br>
    As defined on our website, the role of the Foundation is:</p>
      <blockquote>
        <p><em>The Eclipse Foundation is a non-profit corporation formed to advance the creation, evolution, promotion, and support of the Eclipse Platform and to cultivate both an open source community and an ecosystem of complementary products, capabilities, and services.</em></p>
      </blockquote>
      <p>As defined in our
<img border="0" src="PC/external.gif" width="20" height="16"><a href="../documents/Eclipse BYLAWS 2003_11_10 Final.pdf">Bylaws</a> the Purposes of the Eclipse Foundation are:</p>
      <blockquote>
        <p><em>The Eclipse technology is a vendor-neutral, open development platform supplying frameworks and exemplary, extensible tools (the &ldquo;Eclipse Platform&rdquo;). Eclipse Platform tools are exemplary in that they verify the utility of the Eclipse frameworks, illustrate the appropriate use of those frameworks, and support the development and maintenance of the Eclipse Platform itself; Eclipse Platform tools are extensible in that their functionality is accessible via documented programmatic interfaces. The purpose of Eclipse Foundation Inc., (the &ldquo;Eclipse Foundation&rdquo;), is to advance the creation, evolution, promotion, and support of the Eclipse Platform and to cultivate both an open source community and an ecosystem of complementary products, capabilities, and services.      <br>
        </em>
        </p>
      </blockquote>
  </div>
<br>
    <div class="content">
      <p><br>
      There are many open source projects and open source communities in existence today. Eclipse has strong relationships with many of these. There are, however, three key differentiators between Eclipse and other open source communities.</p>
      <ol>
        <li>The Eclipse Development Process describes a well-defined process whereby Eclipse will build and maintain a Roadmap which describes the future directions of Eclipse. The attempt to co-ordinate the activities of a large open source community with many projects by requiring its participants to share a common vision and release roadmap is unprecedented. 
        This will create a predictable environment that is essential for the commercialization of the Eclipse technology.<br>
        </li>
        <li>Eclipse explicitly and consciously fosters the commercial adoption of its technologies. Although many other open source projects (e.g.
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://www.linux.org">Linux</a>,
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://www.apache.org">Apache</a>, etc.) are enormously successful in terms of commercial adoption none directly support it to the degree that Eclipse does. One concrete example of this is the requirement that all Members ship a commercial offering based upon Eclipse technology within a year of joining the Foundation.<br>
        </li>
        <li>A technical architecture that includes an extensible platform that when combined with a flexible licensing model make it easy to add commercial offering and encourage a third party ecosystem.</li>
      </ol>
      <p>These differentiators are positives. They help define Eclipse, and give it a unique presence in the broader open source community.<br>
        <br>
      </p>
  </div>
    <div id="section_header">Strategic Goals</div>
  <div class="content">
    <p><br>
    The following are the strategic goals of Eclipse. </p>
      <ol>
        <li>To define an open development platform. As an open development platform, Eclipse provides support for multiple operating environments and multiple programming languages. The goal of Eclipse is to define for the industry a development platform which is freely licensed, open source and provides support for the full breadth of the application lifecycle, in many disparate problem domains, across the development and deployment platforms of choice.<br>
        <font style="font-size: 3pt"><br>
        </font>At Eclipse, it is not enough to provide an open source implementation of developer frameworks and their exemplary tools. The frameworks must be architected for extensibility. Doing so enables others to more easily build on top of the Eclipse technology.<br>
        <br>
        </li>
        <li>To foster a vibrant open source community well regarded for innovation and quality. Since its inception, there has been rapid growth in the number of developers working on Eclipse projects. This has accelerated since Eclipse has become independent.<br>
        <font style="font-size: 3pt"><br>
        </font>But simply measuring growth in terms of developers and projects is not sufficient. Eclipse needs to ensure that it the open source projects at Eclipse are building innovative software with a high degree of quality.<br>
        <br>
        </li>
        <li> To enable an ecosystem. The creation of a large community of commercial and open source organizations which rely on and/or complement Eclipse technology has been a major factor in the success of Eclipse.<br>
        <font style="font-size: 3pt"><br>
        </font>The high rate of adoption of the Eclipse technology can be traced to two key factors: great technology, and the ease with which it can be adopted by others, both commercial and open source. This ease of adoption has, in turn, several dimensions. The EPL and its CPL predecessor provide terms which are conducive to both commercial and open source use. The focus on extensible frameworks has made it relatively simple to re-use Eclipse Technology.<br>
        <br>
        </li>
        <li>To be ubiquitous. To be considered one of the important development platforms. In the limit, Eclipse wants its technology used everywhere, by everyone. </li>
      </ol>
      <p>&nbsp;</p>
  </div>
	
<div id="section_header"><a name="Eclipse_Future_Directions">Eclipse Future Directions</a></div>
<div class="content">
  <p><br>
    The goal of the Roadmap is to provide the Eclipse ecosystem with guidance 
  and visibility on the future directions of the Eclipse open source community, 
  and to involve the Eclipse membership in a dialog about those future 
  directions. In that vein, this section discusses our current vision of the 
  future as a set of future projects that expand the value of the ecosystem for 
  all of its members.</p>
  <hr>
  <p>The following diagram provides an architectural representation of the Eclipse technology today. The<a href="AC/main.html"> Architecture Plan</a> goes into this in much greater detail. </p>
  <p align="center"><img src="AC/arch2.jpg" width="675" height="356">&nbsp;</p>
  <hr>
  <p>The <a href="themes.html">Themes and Priorities</a> document prepared by 
  the Requirements Council describes a number of requirements and focus areas 
  for the existing Eclipse projects. </p>
  <hr>
  <p>In addition to the <a href="themes.html">Themes and Priorities</a> 
  requirements on existing projects in 2005, we envision future growth in Eclipse 
  projects in the following major areas. These are areas in which we envision 
  starting new projects in 2005, not areas in which we envision having completed 
  Eclipse-quality standards-based frameworks and extensible exemplary tooling.</p>
  <ul>
    <li><strong>Extend coverage of the software development life-cycle</strong><br>
      <br>
    Eclipse today is provides a great deal of coverage of the software development lifecycle. Projects such as
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://download.eclipse.org/tools/emf/scripts/home.php">EMF</a> support modeling.
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://www.eclipse.org/jdt/index.html">JDT</a> and
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://www.eclipse.org/cdt/">CDT</a> support development and debug.
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://www.eclipse.org/test-and-performance/index.html">T</a><a href="http://www.eclipse.org/test-and-performance/index.html">est 
    and Performance</a> supports QA and post-deployment application monitoring. However, Eclipse's goal is to provide <em>complete</em> coverage of the software development lifecycle. Some examples of possible new project areas which would extend this coverage include:
    <br>    
    <ul>
      <li>requirements management frameworks and tools,</li>
      <li>modeling frameworks and tools,</li>
      <li>data management and development frameworks and tools,</li>
      <li>web services and SOA frameworks and tools,</li>
      <li>deployment frameworks and tools, and </li>
      <li> system management frameworks and tools.</li>
      </ul>
    </li>
  </ul>
  <blockquote>
    <p>In addition, Eclipse will continue to focus on evolving its frameworks 
    and exemplary tools to meet new development technologies and runtime environments such as web services and service-oriented architectures. Support for additional programming languages is also anticipated. <br>
    </p>
  </blockquote>
  <ul>
    <li><strong>Extend the Rich Client Platform (RCP)</strong><br>
      <br>
      The
<img border="0" src="PC/external.gif" width="20" height="16"><a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ui-home/rcp/index.html">RCP</a> was introduced by Eclipse with the 3.0 release of the Eclipse Platform in June, 2004. The RCP is a technology for building and managing applications with a rich user experience. Eclipse's goal is to make the RCP a mainstream development platform for both ISVs and enterprise developers. To do so, we plan to evolve the RCP technology in the following ways:
      <br>      
      <ul>
        <li> Target RCP for additional operating environments. One example of this is the eRCP project which is evaluating the use of Eclipse for embedded constrained devices such a mobile phone and PDAs.</li>
        <li>Examine alternatives for providing a more complete development for creating RCP applications.</li>
        <li>Enhance RCP with new functionality such as better update and management 
        capabilities.</li>
        <li>Enhance the security capabilities of the RCP plug-in model.</li>
        <li> Provide application frameworks based on the RCP. <br>
        <br>
        </li>
      </ul>
    </li>
    <li><strong>Embedded</strong><br>
      <br>
      Eclipse has seen a great deal of success in the embedded marketplace over the past several years. For example, CDT has been used by a number of RTOS vendors as the basis for their tools platform. But there are many different areas technologies currently not covered by Eclipse which would extend to utility of the Eclipse Platform for the embedded market. Some examples include:
      <br>      
      <ul>
        <li>          Runtime analysis infrastructure to provide frameworks and  tools to monitor applications running on a device</li>
        <li>          Component configuration frameworks and tooling to configure operating systems, file systems and middleware</li>
        <li> Target connectivity frameworks to provide  mechanisms to connect to embedded devices</li>
        <li>          Hardware bring-up mechanisms for on-chip debugging and early development</li>
        <li>Board design tools <br>
        <br>
        </li>
      </ul>
    </li>
    <li>      <strong>Multiple language support</strong><br>
      <br>
      Although Eclipse has been very successful in providing language tools for Java and C/C++, doing so still requires a great deal of effort. Improving the Eclipse frameworks to provide more consistent APIs for plugging in editors, debuggers, build environments, etc. for multiple languages is an important goal. There are several different views on what multiple language support can mean. Support for compiled languages, scripting languages and &quot;Java like&quot; languages such as JSP, SQLJ and the like are all related areas where work needs to be done. There are numerous trade-offs to be made as well. For example, JDT has been highly customized to provide a very rich feature set. Will an abstract language toolkit approach meet its needs?<br>
      <br>
      From the perspective of the plug-in providers, there is a lot of interest in more easily enabling  plug-ins for specialized components (debuggers, managed builds, editors) which work across multiple languages. Currently if an add-in provider wants to support both CDT and JDT separate plug-ins are required.
      <br> 
      <br>
    </li>
    <li><strong>Vertical market technology frameworks</strong><br>
      <br>
      We are seeing interest from vertical market vendors in basing their next 
    generation tools on Eclipse. Thus a future growth area for Eclipse is to 
    extend our projects to provide open source  application frameworks and exemplary tools targeted at 
    standards in specific vertical markets such as 
      aerospace, automotive, and healthcare.</li>
  </ul>
  <p>If all of these future directions come to fruition, a future Eclipse architecture view could be:</p>
  <p align="center"><img src="future_architecture.jpg" width="671" height="527"> </p>
  <p>&nbsp;</p>
  </div>
	  
        <div id="section_header">The Roadmap Process  </div>
        <div class="content">
  <p>       
      </p>
<p>The process of creating the Eclipse Roadmap is described in the
<img border="0" src="PC/external.gif" width="20" height="16"><a href="../documents/Eclipse Development Process 2003_11_09 FINAL.pdf">Eclipse Development Process</a>. The key pieces are </p>
<blockquote>
  <p><em>Creating or updating the Roadmap begins with the Requirements Council proposing a set
      of Themes and Priorities that realize the Purposes and that respond to requirements
      elicited from the Strategic Developers, Strategic Consumers, Add-in Providers, and other
      constituents of the Ecosystem. After review by the Board of Directors, these Themes and
      Priorities are provided as input to the Architecture Council and the Planning Council. The
      EMO ensures that the Planning Council and the Development teams have access to all
      requirements. Updates to the Purposes are likely to require updates to the Roadmap and
      its associated themes and priorities; proposed Roadmap updates may also be motivated
      by new technologies or opportunities.</em></p>
  <p><em>The process of producing or updating the Roadmap is expected to be iterative. An initial
              set of Themes and Priorities may be infeasible to implement in the desired timeframe;
              subsequent consideration may reveal new implementation alternatives or critical
              requirements that alter the team&rsquo;s perspective on priorities. The EMO orchestrates
              interaction among and within the three Councils to drive the Roadmap to convergence.</em></p>
  </blockquote>
        <p align="center"><img src="roadmap_process.jpg" width="795" height="555"></p>
        <p align="left">&nbsp;</p>
        <p align="left">This first version of the Eclipse Roadmap&nbsp;<SPAN 
class=203453704-21022005>has been </SPAN>developed by the three&nbsp;<SPAN 
class=203453704-21022005>c</SPAN>ouncils:&nbsp;<SPAN class=203453704-21022005>the </SPAN>Architecture<SPAN class=203453704-21022005> Council</SPAN>,&nbsp;<SPAN 
class=203453704-21022005>the </SPAN>Planning&nbsp;<SPAN 
class=203453704-21022005>Council </SPAN>and&nbsp;<SPAN class=203453704-21022005>the </SPAN>Requirements<SPAN class=203453704-21022005> Council</SPAN>. As this was&nbsp;<SPAN class=203453704-21022005>our collectively </SPAN>first time through the Roadmap process,&nbsp;<SPAN class=203453704-21022005>we evolved and refined </SPAN>the&nbsp;<SPAN class=203453704-21022005>process for producing this Roadmap </SPAN>document&nbsp;<SPAN class=203453704-21022005>as we went along</SPAN>. The&nbsp;<SPAN class=203453704-21022005>three </SPAN>Councils met face-to-face twice in 2004:&nbsp;<SPAN class=203453704-21022005>once </SPAN>in September<SPAN 
class=203453704-21022005>,</SPAN> and again in December. (The minutes of these meetings are available on the
<img border="0" src="PC/external.gif" width="20" height="16"><A title=http://www.eclipse.org/org/council.html 
href="../council.html">Councils page</A>.)&nbsp;<SPAN 
class=203453704-21022005>Subsequent discussion of the Roadmap was done through numerous individual phone calls, and&nbsp;more numerous emails amongst the Council members.</SPAN></p>
        <P align=left><SPAN class=203453704-21022005>The information flow we managed to achieve in this first draft was:</SPAN></P>
        <UL>
          <LI>
            <DIV align=left><SPAN class=203453704-21022005>from the membership (both the membership-at-large and the strategic members) to the Requirements Council</SPAN></DIV>
          <LI>
            <DIV align=left><SPAN class=203453704-21022005>from the Requirements Council to the Planning and Architecture Councils</SPAN></DIV>
          <LI>
            <DIV align=left><SPAN class=203453704-21022005>from the PMC project plans to the Planning Council</SPAN></DIV>
          <LI>
            <DIV align=left><SPAN class=203453704-21022005>from the PMC architecture plans to the Architecture Council</SPAN></DIV>
          </LI>
        </UL>
        <P align=left><SPAN class=203453704-21022005>We did not achieve all of the interactions between the various Councils we were hoping for in this first version of the Roadmap, although we  expect to accomplish that in the next version.</SPAN></P>
        <P align=left><SPAN class=203453704-21022005>In summary,&nbsp;through </SPAN>lots of hard work<SPAN class=203453704-21022005> by everyone</SPAN>, the three groups converged on this&nbsp;<SPAN class=203453704-21022005>Roadmap </SPAN>document.</P>
        <p align="left">The Roadmap will be presented to the Eclipse Board of Directors on Monday, February 28, 2005. </p>
        <p align="left">&nbsp; </p>
        </div>
  </body>
</html>