the embedded rich client platform (eRCP)
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare the intent and scope of a proposed project called the Embedded Rich Client Platform, or eRCP. In addition, this proposal is written to solicit additional participation and inputs from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.ercp newsgroup.
Introduction
The Embedded Rich Client Platform Subproject is a proposed open source project under the Eclipse Technology Project . This document describes the Background, Scope and Goals and Organization of the proposed project. The eRCP project is managed by Project Leads under the Technology PMC. For more information read the Technology Project Charter and the eRCP Project Charter. A proposed project plan is also available here.
BackgroundThe Eclipse Project has become one of the most successful open-source
projects in the world, establishing preeminence in the tooling/IDE arena.
In addition, there has been a recent launch of the Rich Client Platform
(RCP) that extends the domain of the Eclipse platform into non-IDE arenas.
Up until this point, the Eclipse Platform has been aimed at desktop computers;
however, we believe that many of the same principles and design goals
of the Platform are applicable to the embedded space. This project proposal
outlines the organization, scope, and work items needed to investigate
the suitability of RCP for embedded clients.
Since the term "embedded" means many things in the industry,
we define the (minimum) characteristics of our targeted embedded devices
as follows:
Note: this section is not meant to be normative or prescriptive. It
is meant to provide a simple definition of "embedded" for this
document.
Display: |
|
|
Input: |
|
|
Processing Power: |
|
|
Memory Constraints: |
|
|
Connectivity: |
|
Scope and Goals
Note: in order to gain embedded perspectives and maintain the Platform's
integrity, we envision that the eRCP subproject would be staffed with
a mixture of existing Eclipse committers (to leverage their expertise
in current Eclipse architecture) and new committers from the embedded
industry.
Scope
As currently envisioned, the eRCP project would focus on adapting the following Eclipse components for the embedded space:
- eSWT
- The Extension Point Framework
- eJface
- eWorkbench
- eUpdate
Much like the desktop RCP, wherever possible, each of these components
should be useable independently of the other components. More specifically,
eSWT should have no dependencies on the other components of eRCP that
would preclude its (eSWT's) usage in non-eRCP use cases.
Each of these components and their associated goals are discussed below.
eSWT Scope
Create a "fit-for-purpose," embedded version of SWT with the
following characteristics:
- Create a set of mobile-phone-centric components. Other vertical industry specific components may also be addressed depending on the interests of the community.
- Evaluate the architecture of SWT and how it might be improved, with an emphasis on runtime efficiencies, re-factoring, and footprint.
- Retain the design philosophy of SWT (i.e. SWT layers a "native" user-interface, where "native" means the device's built-in user interface).
- Create a proper subset of SWT that can be used in the following ways:
- As the basis of a primary user interface.
- As the basis for more abstract user-interface paradigms (e.g. an XML, or other declarative UI model).
- As a porting layer for other "fit-for-purpose," embedded,
Java user interfaces.
- Create multiple ports to embedded user-interfaces. Possible candidates include Linux/GTK, Symbian/Series 90, etc.)
For more details, see the following documents:
- eSWT Requirements and High-Level Architecture (.pdf)
- The eSWT User Interface - High-Level Design (.pdf)
- Mobile Extensions for SWT - High-Level Design (.pdf)
Extension Point Framework
Utilize the Extension Point Framework as the basis of creating embedded
client platforms. Possible work items include the following:
- Evaluate the architecture of the Extension Point Framework and how it might be improved, with an emphasis on runtime efficiencies, re-factoring, and footprint
eJFace
Utilize JFace as a means for providing model, view, controller paradigm
widgets (i.e. DataGrid, DataTree). Possible work items are as follows
- Evaluate which parts of JFace are desktop only oriented and can be removed for footprint efficiency.
- Evaluate how JFace might be improved to provide better DataGrid functionality.
eWorkBench
We believe concept of the "workbench" from the RCP effort is
applicable to the embedded market; however, there are some significant
differences too-the embedded workbench is likely to be device or industry
specific. For example, it is unlikely that a PDA "workbench"
would be the same as the workbench of a mobile phone.
The scope of this project will concentrate on the following areas:
- Identify the "core pieces" of the Workbench that are broadly applicable to as many devices as possible.
- Create at least two eWorkbench implementations as reference implementations (i.e. a "quarter-VGA, PDA" workbench and a "smart phone" workbench.
- Identify common extension points applicable to as many workbenches
as possible.
eUpdate
One of the strengths of the RCP is that is can be updated "in the
field." This subproject would look at using the "Update component"
of the RCP and extend its use for embedded devices.
Goals
- Whenever possible, re-factor the existing Platform's code to be efficient in the embedded space while maintaining structure and API signatures.
- Maintain consistency with Eclipse Platform
Non-goals
- Substantial change to the code that creates an apparent "fork"
or substantial change to the Platform.
Given the differences between embedded devices and desktop computers,
we propose that this project be undertaken as a Technology Subproject
rather than part of the Eclipse Platform Project. Being a Technology subproject
gives the project room to experiment with the technology without disruption
to the mainline Eclipse developers and users. In addition, we feel that
it is vitally important to involve developers from the embedded market
so we create a truly "fit-for-purpose" embedded client platform.
With that said, it is also important to retain as much continuity as possible
with the existing Eclipse Platform; therefore, we propose that existing
committers from the Eclipse Platform also be part of this project.
Finally, since Technology Sub-projects are not meant to be ongoing, there
are three possible evolutionary paths for the eRCP subproject:
- The project is merged back into the mainline Eclipse RCP project. In other words, the eRCP work identifies a clean, proper subset of existing Eclipse code, and the existing Eclipse code is "fit-for-purpose" for embedded or refactored to be "fit-for-purpose."
- The investigative work down by eRCP determines that RCP can not be made "fit-for-purpose" for embedded.
- Sufficient interest and uptake of the Eclipse community drive creation of a new top-level project for embedded.
These three paths are not mutually exclusive. Some combination of some or all of these paths may be the result of the work done in this sub-project.
Suggested Project Leads and Committers
This section captures the list of companies that have expressed interest
in the project and/or its components, and as such will be updated periodically
to reflect the growing interest in this project.
Rather than canvas the Eclipse community at large, the submitters of this
proposal welcome interested parties to post to the eclipse.technology.ercp
newsgroup and ask to be added to the list as interested parties or
to suggest changes to this document.
Interim Leads | |
Jim Robbins, IBM robbinsj at us.ibm.com +1 512.838.9495 |
Mark VandenBrink, IBM vmark at us.ibm.com +1 512.838.9262 |