blob: c6f3373bf16dd1651727976ba50771d77dc1534d [file] [log] [blame]
<!-- ----------------------------------------------------------------------------- -->
<!--
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>