blob: caf7340a293160549dcb593179b9c9d87a500409 [file] [log] [blame]
<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop'
$pageTitle = "Maya: An incubator project";
$pageKeywords = "Maya Eclipse Provisioning Packaging Deployment Installation Distribution";
$pageAuthor = "Timothy Webb";
ob_start();
?>
<div id="maincontent">
<div id="midcolumn">
<h1>Proposal for Maya: An incubator project</h1>
</p>
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php");
generate_header("Maya");
?>
<h2>Introduction</h2>
<p>The goal of the Maya incubator project is to provide an exemplary application to enable
automated deployment of Eclipse installations by building on services within Equinox and
content exposed via update sites. The Maya project will take a first step in providing the
provisioning services required to enable organizations to leverage the Eclipse platform for
both internal and external tooling built on top of Eclipse. Many users within an
organization are unfamiliar with Eclipse; those users leveraging Eclipse software should not
be required to learn the update manager or associated technology. Maya will promote a
centralized deployment model for Eclipse in contrast to the standard Eclipse update mechanism
which is designed to empower each individual client and by association user. The platform
will be extensible allowing it to be leveraged in multiple deployment modes beyond those
directly supplied by the project.</p>
<p>Please post comments on the Maya project proposal to <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.maya">http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.maya</a>.
<h2>Scope</h2>
<p>The following are the target features for the Maya project.</p>
<ul>
<li><p><b>Lightweight Installation and Deployment</b><br>
Instead of deploying the full Eclipse application or just the RCP, a small native client
will be installed on user systems. This client will connect to back-end servers hosting
Meta information on Eclipse-based software enabled for use in the organization. Maya will
automatically setup an Eclipse instance with the correct set of tooling for their profile.
The client also allows any Eclipse component to be upgraded as needed including the base
Eclipse and JRE versions.</p></li>
<li><p><b>Profile-Based Software Sets</b><br>
Within organizations, sets of software need to be configured at a profile-level instead of
relying on each user to perform maintenance of their own setup. Within Maya, administrators
configure the default software associated with each profile and users are empowered to
tailor additional software in their own user settings.</p></li>
<li><p><b>Software Discovery from Update Sites</b><br>
Instead of requiring Maya to have a separate mechanism for registering software to be exposed
within a deployment, Maya will allow registration of internal or external update sites that
can be scanned for feature information. Maya will then use this information when presenting
administrators with options for defining or updating profiles. Extensibility will be
provided to allow other mechanisms of supplying installable software to be distributed within
Maya.</p></li>
<li><p><b>Software Dependency Automation</b><br>
Administrators defining profiles will only need to specify the top-level features desired.
Maya will handle automated dependency resolution ensuring that all required dependencies are
automatically installed along side the explicitly listed dependencies. Since Maya will have
a list of update sites registered, the automatic dependency inclusion should work for all
software listed within any of the update sites -- avoiding the complexity of the user needing
to locate the source for a given feature or missing dependency.</p></li>
<li><p><b>User and Profile Selection Extensibility</b><br>
Organizations will be able to integrate existing authentication systems to allow users to be
automatically associated with available profiles. In addition, the selection of profiles
applicable to a user will be extensible allowing deployments to choose what software a given
user is delivered. In the case where a user has access to multiple profiles, Maya will
allow the user to choose the most applicable profile for their specific needs.</p></li>
<li><p><b>Statistics Collection Extensibility</b><br>
Within many organizations, statistics need to be collected on the software being used.
Maya will be designed to tie in with an organizational statistics monitoring engines allowing
numerous statistics from Maya to be collected including the number of uses of different
software components, the average profile and team membership, and which profiles are being
most heavily used.</p></li>
<li><p><b>Deployment Architecture Extensibility</b><br>
As Maya will serve as a base for more complex offerings, certain extensibility will need to be
built into the platform to allow for alternate deployment architectures. These architectural hooks
will include services to enable activities such as filtering of software visible to a user, or being
able to hook in client-side to enable additional software to be installed. Hooks may also be added
to enable creation of services on top of Maya that are technically out of Maya's own scope.
</p></li>
</ul>
<h2>Proposed Components</h2>
<p>It is expected that there will be five deliverables of the Maya project.</p>
<ul>
<li><p><b>Bootstrap Client</b><br>
The first is the bootstrap client that will connect to the backend services and setup the
environment given the user's profile. By downloading OSGi bundles, the client will be
extremely lightweight and will actually have very little knowledge of how to process a user's
profile until the appropriate bundle is retrieved. As the bootstrap will be written in
native code, everything from the JRE to the Equinox runtime will be able to be dynamically
setup.</p></li>
<li><p><b>Profile Selection Launcher RCP</b><br>
The launcher is an RCP-based UI responsible for walking the user through authentication and
profile selection. Upon profile selection, the launcher then constructs the Eclipse
environment. To optimize client-side performance, the backend service will conduct the
dependency validation allowing the user to choose the desired software and if desired defer
the selection of dependent software to the service. In certain cases, the launcher stage
can be skipped allowing the bootstrap to directly instantiate the full Eclipse
environment.</p></li>
<li><p><b>Backend Web Service</b><br>
The third deliverable is the web service / backend service that will support the Maya
deployment. This will include knowledge of profiles, as well as having the dependency
graph allowing the service to quickly determine which sets and versions of software should
be made available.</p></li>
<li><p><b>Limited Administrative User Interface</b><br>
The fourth deliverable is a small set of Eclipse perspectives and views to support
administrators setting up profiles for users in their organization and allowing users to
override and control their own use of selected profiles.</p></li>
<li><p><b>Native Installers</b><br>
The last component is a base installer which will drop the bootstrap client onto a system.
The installer will not be required to install a JRE or other related software as the
bootstrap is responsible for provisioning the actual Eclipse environment.</p></li>
</ul>
<h2>Background</h2>
<p>Organizations managing many Eclipse installations can incur a high cost in maintaining
and deploying those systems. With the desire to build out organization-specific RCP
applications and deliver to end-users, the knowledge of Eclipse becomes significantly
less. Metrics within organizations can show that many users are either not aware of RCP
tooling applicable to their work or are not running the appropriate version for their
needs. In addition, some end-users are not interested in worrying about what software or
versions are installed. They desire the right set of tooling to be available on their
desktop and expect to have what they need available to them automatically.</p>
<p>A secondary goal of the platform is to enable tooling vendors to more easily deploy
their software in an enterprise. Being able to effectively release Eclipse-based
software to engineers has been hampered by the proliferation of different techniques for
delivering software, whether a vendor requires a custom installer or uses a separate
update site. By making Maya part of the standard Eclipse offering, companies will be able
to leverage Maya instead of requiring each vendor to deliver a custom provisioning
solution. Ultimately, Maya should allow vendors to enable their products to be
distributed within the enterprise with the appropriate licensing enablement and necessary
configuration.</p>
<h2>Out of Scope</h2>
<p>The following areas are explicitly out of scope for the Maya project. While these capabilities
will not be supported directly by Maya, in certain instances extensibility may be provided to
allow these services to be supplied by building on top of Maya.</p>
<ul>
<li><p><b>High Availability for Web Service</b><br>
Maya will not provide a high availability solution for the web service, nor will it be
optimized for server clustering as may be required to meet high scalability requirements.
While Maya will not purposefully block the use of publicly available solutions, it will
be an exercise for the consumer to deploy Maya in such an environment.</p></li>
<li><p><b>Software Licensing and Controls</b><br>
Maya will not perform any license enforcement or tracking. The architecture of Maya may
be leveraged to help provide these services; however, the complexity of licensing and the
various different systems involved add significant challenges beyond the scope of this
project.</p></li>
<li><p><b>Package Definition and Validation</b><br>
Maya will not provide any vetting of packages. Maya will attempt to provide a standard
set of profiles that can be consumed. It is hoped that package definitions from the
Eclipse Packaging Project (EPP) may be able to be imported as profiles into Maya.</p></li>
<li><p><b>Billing and Up-Selling of Software</b><br>
While Maya can provide a profile selection service which could be extended to up-sell
software offerings, any such extensions of Maya will be explicitly out of scope. Maya
is targeted for provisioning software readily available from update sites.</p></li>
<li><p><b>Generic Artifact Distribution and Installation</b><br>
Maya will only provide distribution of Eclipse software and the JRE. Maya will
explicitly not provide generic software artifact installation though the architecture may be
extended to allow other components to be installed.</p></li>
<li><p><b>Workspace Settings and Configuration</b><br>
Maya will not profile workspace configuration and setting synchronization. Maya is
positioned for provisioning Eclipse software. Enterprise management of Eclipse development
environments is explicitly out of scope for Maya.</p></li>
</ul>
<h2>Complimentary Works</h2>
<p>Due to the intrinsic nature of provisioning to Eclipse, Maya will have touch points with
multiple projects. The following two have high likelihood requiring collaboration for joint
success in large managed deployments for Eclipse.</p>
<ul>
<li><p><b>Equinox Provisioning Project</b><br>
<a href="http://www.eclipse.org/equinox/incubator/provisioning/proposal.php"><i>
http://www.eclipse.org/equinox/incubator/provisioning/proposal.php</i></a><br>
The Equinox provisioning project hosted in the Equinox incubator area is starting in
parallel and is planned to provide client-side support to enable richer / more complete
provisioning at a base layer. As the two projects evolve, it is highly expected that Maya
will be able to leverage the richer services exposed by the Equinox project. In addition,
certain components of Maya especially those related to the client-side may end up migrating
or being rewritten as part of the Equinox project to better align the two projects as both
mature.</p></li>
<li><p><b>Eclipse Packaging Project</b><br>
<a href="http://www.eclipse.org/epp/"><i>
http://www.eclipse.org/epp/</i></a><br>
The Eclipse Packaging Project (EPP) will have at least one interesting touch point with Maya
in that the packages being defined in EPP will be perfect sources for installing a base set
of profiles within a Maya installation. In addition, since the EPP will be providing a
client-side installer, it may be necessary to ensure consistency between the end-user
managed installer of EPP and the Maya managed client installer of Maya.</p></li>
</ul>
<p>A potential derivative work of the Maya project could be for an entity such as the
Eclipse Foundation to host a publicly available installation of Maya for delivering general
Eclipse software. Maya could be used to configure a series of questions such as "Are you a
Java Developer?" "Do you work with Web technologies?" "Would you like integrated testing
services?" The Maya launcher would provide the responses to the web service -- which could
then choose the appropriate pre-configured profile based on the responses. This service
would then be able to deliver a full Eclipse installation with the right set of software
for the user's needs. Deploying this service is out of scope for the Maya project but is a
potential opportunity to help with the first-time user experience dove-tailing with EPP.</p>
<h2>Code Contributions</h2>
<p>Cisco Systems, Inc. is offering an internally developed Eclipse deployment infrastructure
as an initial codebase. The internal infrastructure is being used inside Cisco to deliver
Eclipse-based solutions to engineers and contains at least partial functionality for a
number of the project objectives. As the Equinox provisioning project moves forward, it may
be appropriate to refactor certain components of the contribution into the Equinox
client-side provisioning project instead of maintaining them in Maya.</p>
<h2>Organization</h2>
<p><b>Proposed Initial Committers</b></p>
<p>The initial contributors will focus on preparing the code contribution by Cisco for
consumption by the Eclipse community. The focus will then shift to building out a complete
feature set in the Maya project. Our agile development process will follow eclipse.org's
standards for openness and transparency. We will actively encourage contributions to the
project and plan on contributing patches to other Eclipse projects if necessary. As the
Equinox provisioning project moves forward, Maya committers may also need to become actively
involved in Equinox given the multiple touch points regarding provisioning in general.
The initial planned committers are:</p>
<ul>
<li>Timothy Webb (Cisco): Project Lead</li>
<li>Sharanya Doddapaneni (Cisco)</li>
<li>Jennifer Li (Cisco)</li>
<li>Dennis Vaughn (Cisco)</li>
<li>2 engineers (Genuitec)</li>
<li>1+ engineers (Innoopract)</li>
<li>1 engineer (CloudSmith)</li>
</ul>
<p><b>Interested Parties</b></p>
<p>The following parties have expressed interest in the project:</p>
<ul>
<li>Xored (Andrey Platov)</li>
<li>Equinox Team</li>
<li>Genuitec (MyEclipse)</li>
<li>Innoopract</li>
<li>CloudSmith (Buckminster)</li>
<li>Oracle (EclipseLink)</li>
</ul>
<p><b>User Community</b></p>
<p>The Maya project is targeting a disparate group of developers and consumers, as such,
supporting and soliciting feedback from a large community of developers is critical to
creating the right offering. We plan on doing this by using the standard eclipse.org
mechanisms of supporting an open project and a community of early adopters. </p>
</div>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>