|  | <?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); | 
|  | ?> |