RT Packaging

This proposal is in the Project Proposal Phase (as defined in the
Eclipse Development Process) and is written to declare its intent and
scope. We solicit additional participation and input from the Eclipse
community. Please send all feedback to the
Eclipse Proposals Forum.

Background

Over the last three years, the Eclipse ecosystem has created a rich software stack that demonstrated tremendous
growth in the area of runtimes based on Eclipse Equinox. In 2008 a top
level project was created (RT) to bring all Eclipse-based runtime technologies together under one umbrella.
Currently the growing RT project hosts 10 different projects with several sub projects.

When a developer creates an application based on EclipseRT technologies the common approach is to pack different
technologies together to build a platform for the application. The developer usually has two options to build this
runtime platform:

Select the relevant EclipseRT projects, download the project's artifacts and put it all together manually.

Select the relevant EclipseRT projects, and if it exists, copy their p2 repository URLs and let p2 put the parts together.

This approach has some drawbacks:

Not all EclipseRT projects are able to work together seamlessly. For example, until late 2010, it was not
possible to combine Riena and RAP.

If a runtime platform was created manually, it cannot receive updates. As a result, the developer has to download
new versions and add them to his platform.

Every developer who wants to build a runtime platform has to start from scratch. He doesn't profit from work by
other developers.

The goal of the RT Packaging project is to provide a solution for the structured set up of a runtime platform with user
friendly configuration tools that support users in assembling and further evolving valid configurations.

Description

Problems similar to those with building the runtime, existed in the Eclipse ecosystem three years ago before the
Eclipse Packaging project (EPP) was created. With a growing number of people
using Eclipse and with a single Platform SDK download, it was very painful to find and select the necessary
plug-ins to work in areas other than Java and Plug-in development. The EPP project solved this problem by providing
several configurations to the end user. At writing, the EPP project provides 11 entry level downloads suitable
for different user profiles.

Using existing EclipseRT technologies, the RT Packaging project will create one or more EPP-like packages for setting
up a runtime platform for different platforms and architectures. These packages will be based on a common structure.
They will also be available in the form of p2 repositories for remote consumption. In
addition, a user friendly configuration tool will be built to create and extend the
packages.

Scope

The objectives of the RT Packaging project are to:

Create one or more extendable packages based on EclipseRT technology. The project will define a minimal
configuration based on Equinox and
p2. Creating more advanced packages enriched with other EclipseRT technologies
will also be considered. In creating the packages the existing Eclipse build and EPP infrastructure will be reused
wherever possible. The starting point for the packages will be the
EclipseRT starter kits.

Provide packages for different platforms and architectures. The RT Packaging project will create packages for
common server/client platforms and architectures. The possible initial set of platforms are Debian and Ubuntu (.deb),
Fedora and SuSe (.rpm), Windows (.zip) and Mac OS X (.pkg). There will also be platform independent packages (.zip).
Additionally, a set of cloud images (S3 and Azure) will be created with pre-configured RT Package instances.

Provide a configuration tool. Users should have the option to configure a package themselves, similar to how the
EPP Download Wizard enables customized downloads. To this end, a configurator will be created that allows users to
assemble different EclipseRT technologies and create a single download in the formats described above. This configurator
probably will be part of the RT Packaging website and can be optionally included in a RT package to reconfigure and update the
package after downloading.

Provide a headless variant of the configuration tool, which allows an automated system to install and subsequently
extend/reduce the system by adding/removing particular technology. It'll support both scenarios ‚Äì to install
a product from outside or to grow itself into a product.

Provide guidance on how EclipseRT projects can structure their p2 repositories and subsequently test/validate their
packages in order to benefit from the defined distribution flow. A critical part of that is how to define the wiring
and versioning specifics between the different modules in order to make it possible for them to work together when
assembled in the same runtime environment. These kind of guidance will be created as Wiki pages and examples.

Out of Scope

The RT Packaging project will not create a new Server. It will use the two existing Servers (
Jetty and Virgo) and
help to improve these through contributions.

The RT Packaging will not create another provisioning platform for updating a platform. It will use the existing
p2 platform to achieve its goal and help to improve p2.

The RT Packaging project will not compete with any existing EclipseRT projects. It is rather envisioned as an ordered
and easy to use collection of existing EclipseRT technologies.

Initial Contribution

There will be two initial contributions made by the Equinox and
Jetty teams. Both teams have created an EclipseRT starter kit which can be
found here. These starter kits will
be copied to RTP and act as templates to create the first two packages of the RT Packaging project.
EclipseSource's initial contribution will include the automated build setup and the first two packages based on the contributions
from the Equinox and Jetty Team. EclipseSource's contribution can be found
here and will move to the RTP project.
SAP's initial contribution will include the 'p2 installer'. This installer can be used as the basis
for the configuration tool. It allows developers to start from a 'bare bone' equinox installation and assemble
a system from existing p2 repositories. The 'p2 installer' was an internal effort made by SAP and will move to the RTP project.

Committers

The following individuals are proposed as initial committers to the project:

Holger Staudacher, EclipseSource

Project Lead.

Florian Waibel, EclipseSource

Florian will act as a link to the Virgo project.

Markus Knauer, EclipseSource

Markus will support this project with his knowledge about the EPP project.

Ian Bull, EclipseSource

Ian will support the RT Packaging project with his knowledge about p2.

Hugues Malphettes, Intalio

Hugues will contribute the EclipseRT Starter Kit as an initial contribution. He agreed to maintain it within the RTP project.

Beyhan Veliev, EclipseSource

Beyhan will support the RTP project with his knowledge about equinox and p2.

Georgi Stanev, SAP

Georgi is the driving force behind SAP's 'p2 installer'. He will maintain it within the RTP project.

Mentors

Interested Parties

The following individuals, organisations, companies and projects have
expressed interest in this project:

Harald Kornmayer, g-Eclipse Project

Jeff McAffer, EclipseSource

Benjamin Muskalla, Tasktop Technologies

Glyn Normington, VMWare

Chris Aniszczyk, Red Hat

Igor Novakovic, Attensity Europe GmbH

Gunnar Wagenknecht, Gyrex Project

Kaloyan Raev, SAP

Karsten Schmidt, SAP

Krasimir Semerdzhiev, SAP

Project Scheduling

The initial milestone deliverables will be a minimal configuration of an EclipseRT package and provisioning the
project on the eclipse.org infrastructure. The initial milestone will be created within 1Q2011. The goal of the
RT Packaging project is to become a formal part of the release train in 2011 (Indigo).

Changes to this Document

Date

Change

26-November-2010

Document created

03-December-2010

Added a more precise description of how the initial contributions will be handled. Added Hugues Marlphettes as an initial committer.