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

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
  <head>
    <title>Eclipse Themes and Priorities</title>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="eclipse_style.css" >   
    <style type="text/css">
<!--
.style1 {font-size: 12px}
-->
    </style>
  </head>
  <body>
  
    <div id="page_header"><FONT class=indextop>Eclipse Requirements Council: 
      Themes and Priorities 1.0  (OLD) </FONT> <BR>
    </div>
    <div id="page_sub_header">the eclipse development process</div>

  <br>  
  <div id="section_header">IMPORTANT NOTE</div>
  <div class="content">
      <p><br>
      THIS DOCUMENT IS SUPERCEDED BY <a href="roadmap_v2_0/index.php">ROADMAP v2.0</a>
  </div>
  
    <div id="section_header">Introduction</div>
  <div class="content">
      <p><br>
        This document captures the inputs to the Eclipse Requirements
<img border="0" src="PC/external.gif" width="20" height="16"><a href="../council.html">Council</a> as of this date. The 
    inputs are from three major sources:</p>
      <ol>
        <li>        Strategic Members of the Eclipse Foundation,</li>
        <li> the Project Management Committees (PMCs), and</li>
        <li> the general membership through the input collected at Eclipse members meeting held 
        in Fort Worth, Texas.</li>
      </ol>
      <p><br>
        The themes were generated by collecting requirements from the above sources and then
        synthesizing themes from the various inputs.<br>
        <br>
    </p>
  </div>
   	<br>
    <div id="section_header">Fundamental Principles</div>
    <br>
    <div class="content">
      <p><br>
      These are our fundamental principles, which span all of the themes outlined below.</p>
      <ul>
        <li>Eclipse projects provide exemplary (show by example) implementations and 
            extensible frameworks. Examples target open source implementations such as CVS, 
            Ant, JBoss, JOnAS, Mono, and Tomcat.<br>
        </li>
        <li> We will aim for release-to-release binary compatibility for API 
        clean plug-ins for at least the last major release.<br>
        </li>
        <li> The platforms supported by each project are determined by the specific project. Each 
  project must keep its support for all supported platforms current and publicly announce otherwise.</li>
        <li> The Eclipse community will relentlessly re-factor code to improve components and 
  make them available for public consumption.<br>
        </li>
      </ul>
  </div>
<br>
    <div id="section_header">Themes and Priorities</div>
</br>
    <div class="content">
      <p><br>
      These themes are not in priority order.</p>
      <h4>Scaling Up</h4>
      <p>This refers to the need for Eclipse to deal with development and deployment on a larger and 
        more complex scale. Increasing complexities arise from large development teams distributed 
        in different locations, large source code bases and fragile build environments that have been 
        developed incrementally over time, the dynamic nature of new source code bases and their 
        interaction with configuration management, and build environments involving many different 
        tools and build rules. For example, static analysis in development environment should be 
      incremental instead of computing the dependencies from scratch every time.</p>
      <p>        This requires:</p>
      <ul>
        <li>Performance improvements in memory footprint, user perceived 
        response times, and start-up times as the complexity and number of 
        projects, files, users, and plug-ins grow (10X-100X over the next two 
        years).<br>
        </li>
        <li>Being able to deal with extremely large projects and large workspaces. This may 
        include a more efficient way to simultaneously manage multiple workspaces.<br>
        </li>
        <li> A performance profiling and instrumentation infrastructure to help plug-in developers 
          assess, root-cause, and fix performance issues. TPTP can be leveraged for this.        </li>
      </ul>
      <h4>Enterprise Ready</h4>
      <p>Changes to Eclipse to ease adoption by large development 
        organizations. As the size of a development organization grows, the manner in which an
      organization as a whole uses Eclipse changes. For example,</p>
      <ul>
        <li> Which features/capabilities get installed and are visible.</li>
        <li> Provide an ability for installed features/capabilities to be locked by an enterprise for its users</li>
        <li> Allow users to share their preferences and make sure that all user configuration
  settings are stored in a preference file</li>
        <li> Make it easier to configure workspaces (e.g. in order to be distributed to team 
  members)</li>
        <li> Improve development time integration across development roles
          <ul>
            <li>Provide support for development time work flow. (e.g. an extensible process
              flow that could enforce a series of activities for a code branch commit &ndash; code
            review, statistics, unit test).</li>
          </ul>
        </li>
        <li> This would include support for more roles and tools (e.g. extend our current Java only
    development model to cover defects, test cases, requirements)</li>
        <ul>
          <li> Make this integration more seamless</li>
        </ul>
        <li>Improve configurability (e.g. of capabilities) to allow for the definition of unique roles</li>
        <li>Improve integration between Eclipse&rsquo;s build system and external build systems and
            deployment tools</li>
        <li>Provide a mechanism that makes it easier for Eclipse tools that do not require a full &ldquo;headless&rdquo; Eclipse to execute. This includes the notion of a command line interface<br>
      for Eclipse</li>
      </ul>
      <p><em>Deployment: </em>We need changes to Eclipse to enable deployment of Eclipse based 
        applications across the enterprise. This includes monitoring capabilities, developing models of 
        the components and interactions in the application delivery chain, enhancing support of 
        logging, tracing, and statistical models to enable prompt troubleshooting in a distributed 
        environment, increasing interoperability with enterprise security infrastructure, and report
        generation. Develop a robust mechanism to ensure that products from different companies
        that work well separately on an Eclipse package work well together.</p>
      <p><em>Manageability: </em>JMX is rapidly becoming a standard for Java developers who want to
        incorporate manageability into their applications during development time. The new J2SE 1.5
        JDK includes JMX support. Support for JMX design patterns which enable developers to
        model manageability and drive transformation to JMX MBeans and other management
        technologies. Additionally, Eclipse support for JMX creation, via wizards, code assist or other
      tooling, and monitoring would help in automating the management instrumentation process. </p>
      <h4>Design for Extensibility: Be a Better Platform</h4>
      <p> Within the Eclipse community, many development projects are defining new development 
        platforms on top of the Eclipse Platform project. Concrete examples include the Web Tools
        Platform Project and the Test and Performance Platform Tools Project. It is recognized,
        however, that some function is not strictly required by the base but is important to exist at the
        base platform level in order to enable other platforms to succeed. Examples include common
        undo stack functionality, an extensible navigator, improved command framework, etc.        </p>
      <p>Opening the internal JDT (UI) interfaces would enable tools to seamlessly facilitate and
          interact with the JDT core and UI layers. Examples are: the parsing and AST functionality for
          static code analysis within and outside of Eclipse, extensions of the syntax (SQLJ), having
          control over and re-using the Java editor (SQLJ, protected code blocks, Java editor as one
          page of a multi-page editor, ...).          </p>
      <p>Loosening the strong file orientation by providing an abstraction layer of logical objects would
            allow to extend the proven Eclipse features to tools working on a higher abstraction level. One
            example would be the Marker and Quick fix capabilities. In this connection a less restrictive
            structuring of projects would be desirable (some tools would like to structure and group
            projects in a more hierarchical way).</p>
      <h4>Embedded Development</h4>
      <p> Instead of plug-in providers each developing their own plumbing to launch, profile, debug, and 
        manage remote agents running on target, the requirement is for Eclipse platform to provide a
        consistent, uniform plumbing to address this infrastructure need. These capabilities can be
      leveraged for:</p>
      <ul>
        <li> Target OS independent debugging.</li>
        <li> Target OS independent profiling.</li>
        <li>Loading and launching on remote targets</li>
      </ul>
      <p>We need a generic control centre - API to configure, setup, connect and monitor any type of 
        target, node or network.</p>
      <h4>Rich Client Platform</h4>
      <p>The Eclipse RCP is a Java-based application framework for the desktop. Building on the
        Eclipse runtime and the modular plug-in story, it is possible to build applications ranging from
        command line tools to feature-rich applications that take full advantage of SWT's native
      platform integration and the many other reusable components. This theme includes work:</p>
      <ul>
        <li> To provide PDE support for developing and deploying RCP-based applications in
      enterprise environments</li>
        <li> To improve our ability to construct rich user interfaces through improvements to SWT
  and JFace</li>
        <li> To evolve RCP for embedded devices</li>
        <li> To improve authentication and security (user authentication and credentials, role
  based security, and role-based plug-in loading)</li>
        <li> To improve the capabilities of the UpdateManager to manage deployed rich
  application desktops.</li>
      </ul>
      <h4>Simple to Use
      </h4>
      <p>The Eclipse components need to not only provide the features that advanced users demand,
        but also be something that most users find simple to use. This theme includes ease-of-use
        reviews of existing features, and work that helps make Eclipse-based products simple to use
        for users with widely-varying backgrounds and skill sets.
        Focus on ease of use through enhanced user documentation, tutorials, white papers,
        demonstrations, and a wide range of enhancements to the user interface to streamline basic
        processes and clarify concepts and terminology. For example, BIRT has a goal of making a
      user productive in 15 minutes.</p>
      <h4>Enable Consistent Multi-language Support</h4>
      <p>        The original vision of Eclipse was to accelerate the creation of IDEs. Experience with 
        the CDT and COBOL projects have shown that there is still a lot of work to do to make it
        simpler to create language-specific IDEs. Our vision is to create an environment where a
        limited number of well-defined extension points for compilers, parsers, debuggers, building,
        launching, etc. will allow language IDE developers to simplify the process of creating Eclipse-based
      offerings.</p>
      <p>        Plug-in providers have a strong need for an abstract development toolkit where a variety of
        plug-ins (e.g., editor, managed build system, debugger) can be plugged in for all development
        environments including Java. This is more efficient than integrating each plug-in with each
        separate development environment. Focus on an abstract development toolkit improves
        componentization and consistency across development environments, makes each
        component within the development environment more robust, and adds flexibility to increase
        the reach of Eclipse to a variety of development environments (e.g., Fortran, COBOL). This
        opens up 1:1 relationship between add-in component and development environment into a
        richer m:n relationship.        </p>
      <p>This support includes the following features:</p>
      <ul>
        <li>Make it easier to create language specific tools in a consistent way. Consistent
        generic components / APIs to add languages.</li>
        <li> Generic APIs &ndash; not Java-specific</li>
        <li> Ability to create tools for other languages</li>
        <li> Prescribe model for language toolkit which should provide public APIs sufficient for
  tools builders.</li>
      </ul>
      <h4>Appealing to the Broader Community</h4>
      <p>        This theme includes work that grows deeper roots into the various OS-specific communities,
        spreads Eclipse to additional operating environments, virtual machines, application
        development and deployment lifecycles, vertical market-specific frameworks and builds
        bridges to other open source communities. This can be accomplished through additional
        documentation and more usable documentation, engineering engagements, marketing and an
        extensive outreach program incorporating trade shows, user groups, and press and analyst
      relations opportunities.</p>
      <ul>
        <li><strong>Improve SWT consistency across operating systems        </strong></li>
      </ul>
      <blockquote>
        <p>The plug-in providers noted differences in the behaviour of Eclipse 
        on Windows and Linux. Window systems sometimes differ in things like the 
        exact sequence of events reported for a given action. This kind of 
        inconsistency can result in platform specific code and increased testing 
        requirements. More consistent behavior would ease the burden on plug-in 
        providers. Over 80% of Eclipse downloads are for Windows, followed by 
        ~20% for Linux, and a very small fraction are for operating systems such 
        as the Macintosh, AIX, Solaris, and HP-UX. </p>
      </blockquote>
      <ul>
        <li><strong>Swing &ndash; SWT Interoperability</strong></li>
      </ul>
      <blockquote>
        <p>          Allow existing Swing/AWT applications to work seamlessly inside the SWT (Eclipse)
          environment. While the ability to make Swing components function within SWT UI&rsquo;s
          was made available in Eclipse 3.0, the ability to integrate complete applications
          requires additional efforts.
          For true interoperability between Eclipse and other Swing-based development
          environments, Eclipse also needs to enable an SWT application to run within a Swing
          environment.</p>
      </blockquote>
      <ul>
        <li><strong> J2SE 5 support with JDT</strong></li>
      </ul>
      <ul>
        <li><strong> Provide basic web services tools</strong></li>
      </ul>
      <blockquote>
        <p>          Eclipse should provide basic tools and frameworks for supporting the construction,
          deployment and management of web service applications. Example tools include:
          UDDI browser, XSL/T editor, and WSDL tools.<br>
        </p>
      </blockquote>
  </div>
    <div id="section_header">Appendix</div>
    <div class="content">
    <p><br>
      This section contains valuable inputs which were received by the Requirements Council but
      which are out of scope for this document. Our intent with this document is to focus on
      common themes for development across the Eclipse projects. These comments, although
      very helpful, are primarily requirements of the Eclipse projects laid upon their own build
      infrastructure and also upon the IT infrastructure provided by the Eclipse Foundation.      </p>
    <h4>Eclipse Development Process Improvements      </h4>
    <h5>Robust distributed build processes:      </h5>
    <p>Improve build processes to enable multiple organizations to build and test for a variety of
      hardware platforms, operating systems, JVMs, and other virtual machines. Work out a better
      process for independent contributors to synchronize contributions with the PMCs and core
      development teams. Today the process for synching with project teams is somewhat ad hoc
      and does not account for contributions that come in outside of the core build cycles. It&rsquo;s also
      difficult for contributors who are working independently of the core development team to get
      their code contributions built and tested prior to public availability on the eclipse.org web site.</p>
    <h5>Release Engineering: </h5>
    <ul>
      <li>Improve the automated test suites. This includes more complete coverage for the
        Platform as well as ensuring all other subprojects have a set of automated test cases.
        TPTP currently uses its own infrastructure to define the tests and publish results to a
        CVS repository on a regular weekly basis. Perhaps, this infrastructure can be
      leveraged across Eclipse.</li>
      <li>Ensure all subprojects are available from the Eclipse update manager site.</li>
      <li>Provide a utility to help assess whether or not a plug-in is &ldquo;API clean&rdquo;</li>
      </ul>
    <h5> Increase roadmap visibility:      </h5>
    <p>Make Eclipse project roadmaps visible, up-to-date and longer. The Eclipse community needs
      clearer visibility on what features are coming over a 12 month time horizon. This will allow
      Eclipse developers to better plan contributions, Eclipse Add-in providers to better determine
      where to innovate, and Eclipse users to better determine whether their requirements will be
      satisfied by Eclipse. Today many available roadmaps are out-of-date and provide no more
      than 3 months of visibility.      </p>
    <h5>Project Start-up Guidelines:      </h5>
    <p>When new projects are started in the Eclipse community, guidelines and &quot;cheat sheets&quot; are
      needed to help those projects during the startup process with regards to required Eclipse
      Foundation infrastructure and Eclipse community infrastructure. The overall goal of these
      guidelines is to enable new projects to come online faster and easier, and to reduce the
      overhead on existing project members to help in this process. The guidelines should include
      specific actions and how these should be accomplished (for example, who to contact and
      what information is needed in order to get the required CVS repository up and running).
      Topics would include:</p>
    <ul>
      <li>Process for establishing committers and completing all required legal steps</li>
      <li>Code management recommendations and steps</li>
      <li>Creating a CVS project repository for the project</li>
      <li>Project web site pages recommendations, structure conventions, and update process</li>
      <li>Build process recommendations and steps</li>
      <li>Community infrastructure recommendations and steps (e.g. newsgroups)</li>
    </ul>
    <p>&nbsp;</p>
 </div>
	
<div id="section_header">Contributors</div>
<div class="content">
  <p>&nbsp;</p>
  <table align="center" width="400" border="1">
    <tr>
      <th scope="col"><div align="left">Name</div></th>
      <th scope="col"><div align="left">Member</div></th>
    </tr>
    <tr>
      <td><div align="left" class="style1">Paul Clenahan</div></td>
      <td><div align="left" class="style1">Actuate</div></td>
    </tr>
    <tr>
      <td><span class="style1">John Kellerman</span></td>
      <td><span class="style1">IBM Corporation</span></td>
    </tr>
    <tr>
      <td><span class="style1">Anurag Gupta</span></td>
      <td><span class="style1">Intel</span></td>
    </tr>
    <tr>
      <td><span class="style1">Derrick Keefe</span></td>
      <td><span class="style1">QNX Software</span></td>
    </tr>
    <tr>
      <td><span class="style1">Par Emanuelsson</span></td>
      <td><span class="style1">Ericsson AB</span></td>
    </tr>
    <tr>
      <td><span class="style1">Philip Ma</span></td>
      <td><span class="style1">Hewlett-Packard Company</span></td>
    </tr>
    <tr>
      <td><span class="style1">Michael Bechauf</span></td>
      <td><span class="style1">SAP</span></td>
    </tr>
    <tr>
      <td><span class="style1">Rich Main and<br>
      Todd Williams</span></td>
      <td><span class="style1">Add-In Provider Board Representatives</span></td>
    </tr>
    <tr>
      <td><span class="style1">John Wiegand</span></td>
      <td><span class="style1">Platform PMC</span></td>
    </tr>
    <tr>
      <td><span class="style1">David Williams</span></td>
      <td><span class="style1">Web Tools PMC</span></td>
    </tr>
    <tr>
      <td><div align="left" class="style1">Mike Norman</div></td>
      <td><div align="left" class="style1">Test&amp;Performance PMC</div></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</div>
	  
        <div id="section_header">Acknowledgements</div>
        <div class="content">
      <p> <br>
        Anurag Gupta (Intel) wrote the first draft of the themes.      
      <p>        Mike Milinkovich (EF) and John Kellerman (IBM) reviewed the draft and provided feedback &ndash; 
        their input has been incorporated into a second draft.      
      <p>        The second draft was reviewed by Paul Clenahan (Actuate), John Kellerman (IBM), Anurag
        Gupta (Intel), Derrick Keefe (QNX), Par Emanuelsson (Ericsson AB), and Philip Ma (HP) and
        incorporated into a third draft.      
      <p>        The third draft was reviewed at the Eclipse Requirements Council F2F meeting on Nov 30
        and that feedback has been incorporated by Anurag Gupta into the fourth draft .
      </p>
<p>&nbsp;</p>

  </div>
    <div id="copyright"></div>
  </body>
</html>