| <?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 = ""; |
| $pageKeywords = ""; |
| $pageAuthor = ""; |
| |
| ob_start(); |
| ?> |
| <div id="maincontent"> |
| <div id="midcolumn"> |
| |
| <h1>The Eclipse Orbit Project</h1> |
| |
| <?php |
| include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php"); |
| generate_header("The Eclipse Orbit Project"); |
| ?> |
| |
| <h2>Introduction</h2> |
| <p>The Eclipse Orbit Project is a proposed open source project under the <a href="http://www.eclipse.org/tools/">Eclipse |
| Tools Project</a>.</p> |
| |
| <p>This proposal is in the Project Proposal Phase (as defined in the <a href="http://www.eclipse.org/projects/dev_process/">Eclipse |
| Development Process</a> document) and is written to declare its intent and |
| scope. This proposal is written to solicit additional participation and input |
| from the Eclipse community. You are invited to comment on and/or join the |
| project. Please send all feedback to the <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.tools.orbit">eclipse.tools.orbit |
| newsgroup</a>.</p> |
| |
| <h2>Background</h2> |
| <p>The Eclipse community is increasingly embracing and using code from other |
| open source projects. Traditionally each Eclipse project has submitted requests |
| to use the libraries they need and, upon approval, the libraries have been |
| integrated into the project's plug-ins and shipped. This situation presents |
| a number of challenges.</p> |
| |
| <p><strong>Bundlings:</strong> There are often several ways of "bundling" a |
| third party library. A JAR can be wrapped in a bundle or have bundle metadata |
| injected |
| into it. Bundle names and versions must be selected. Packages must be exported |
| with the appropriate visibilities, directives and versions. Libraries that |
| consist of multiple JARs may be packaged as one bundle or with a bundle |
| for each JAR. In fact, libraries might be simply included directly in an |
| existing bundle of the consuming project. Since each team performs this packaging |
| independently, the chances are high that |
| the approaches taken will diverge. This leads to confusion and challenges |
| when composed systems contain incompatible bundlings of the same libaries.</p> |
| <p><strong>Componentization:</strong> Often times a "library" is |
| actually a composition of other libaries with some additional function. These |
| internal libraries |
| are often interesting in and of themselves. For example, in Eclipse 3.2 the |
| Tomcat plug-in also includes various Apache Commons libraries (logging, collections, |
| modeler, etc.), mx4j, Jakarta regexp, servlet API and Jasper. All of these |
| JARs are interesting and useful, independent of Tomcat. Under the current |
| approach, when a team requests the use of Tomcat, the function as a whole |
| is analyzed and approved rather then looking at the individual components. |
| In some cases components are not even needed for the required use of the |
| requested function. For example, mx4j is not really needed for the Eclipse |
| Help use of Tomcat. Further, since these common libraries appear in many |
| configurations, they are repeatedly reviewed and analyzed as teams request |
| approval for these different configurations.</p> |
| <p><strong>Sharing:</strong> Even with a common vision as to how libraries |
| should be converted to bundles, each team must duplicate the packaging effort |
| and maintenance. Further, |
| since the current approach is compartmentalized, it often happens that project |
| teams are unaware of the libraries used by each other. This results in gratuitous |
| duplication of content in the Eclipse downloads (e.g. Callisto contains |
| several copies of Xerces and commons logging, etc.) and version misalignments. |
| The lack of transparency also clogs the IP clearance process since teams |
| do not know that others are already using the library they need or one which |
| provides equivalent function.</p> |
| <p><strong>Community:</strong> The Eclipse committer community is not unique |
| in this need for bundled versions of existing libraries. Many systems built |
| by others include |
| the very same code. Again, these libraries are bundled by different people |
| (duplicating effort and encouraging divergence) and managed and delivered |
| separately (resulting in incompatibilities) and raising the bar for Eclipse |
| adoption.</p> |
| <h2>Scope</h2> |
| |
| <p>This project is intended to be</p> |
| <ul> |
| <li>a source of approved and bundled content for qualifying Eclipse projects |
| and the community as a whole</li> |
| </ul> |
| <p>This project is <strong>not</strong> intended to</p> |
| <ul> |
| <li>support code development</li> |
| <li>replace the IP process</li> |
| <li>do all the packaging work for teams</li> |
| </ul> |
| <h2>Description</h2> |
| |
| <p>This project will provide a repository of bundled versions of |
| third party libraries that are approved for use in one or more Eclipse projects. |
| The repository will maintain old versions of such libraries to facilitate |
| rebuilding historical output. It will also clearly indicate the status of |
| the library (i.e. the approved scope of use). The repository will be structured |
| such that the contained bundles are easily obtained and added to a developer's |
| workspace or target platform.</p> |
| <p>One of the key issues with the current situation |
| is the inconsistency in naming, versioning and form of bundled third |
| party libraries. |
| This project |
| will, as a mainline activity, provide a repository of approved and bundled |
| third party libraries to authorized project teams. This eliminates duplicated |
| work and bundle naming, structuring and versioning variations. </p> |
| <p>Crucially, no development is carried out in this project. Teams proposing |
| the use of a third party library for the first time are able to work with |
| the community developed here and other potential users of the library to |
| derive an appropriate selection and packaging of the function they need. |
| For |
| example, |
| a team |
| may start |
| out |
| with "a need |
| for Jetty." As we have seen, systems like Jetty often include several |
| JARs and a wide variety of infrastructure pieces (e.g. Apache Commons Logging). |
| In some cases this additional function is not needed, is already approved |
| and available, or has |
| special |
| packaging needs. Through this project the teams needing function can arrive |
| at a mutually agreeable form of the required function. </p> |
| <p>It is important to |
| note that this project will not be responsible for doing |
| the packaging work. That responsibility remains with the teams seeking |
| to use the requested library. This project is to act as a hub or focal point |
| for people with needs related to third party libraries and those with related |
| technical expertise.</p> |
| <p>The bundled libraries are retained and made available within the project |
| in various ways (e.g. download zip, update site, etc.) for use in the projects |
| that |
| have |
| received |
| the appropriate approvals. Note that teams seeking to use a library |
| must |
| still follow the IP process. For example, the current process calls for all |
| third party code use to be cleared by the Foundation. So even if a |
| library is approved by the Foundation for use by all projects, project teams |
| must notify the Foundation |
| of their intentions to use a library. This allows their use to be tracked |
| and facilitates version |
| synchronization |
| (e.g. |
| stepping |
| up to new releases) as well as notification of issues found with approved |
| and previously distributed libraries.</p> |
| <h2>Existing standards and projects leveraged</h2> |
| |
| <p>This project will mainly use the existing developer infrastructure (e.g. |
| CVS, Bugzilla, etc.) to manage library contribution requests and the libraries |
| themselves.</p> |
| |
| <h2>Organization</h2> |
| |
| <p>This project will be organized into one top-level component:</p> |
| |
| <ul> |
| <li>Bundles: bundlings of approved third party libraries in orbit around |
| Eclipse.</li> |
| |
| </ul> |
| |
| <h3>Proposed initial committers and project lead</h3> |
| |
| <p>The initial committers will be drawn from the Eclipse developer community. |
| Developers with experience with, interest in, and/or an ongoing need for |
| shared code and bundling are potential committers |
| on this project. The initial committers are: |
| |
| <ul> |
| <li>Jeff McAffer (Project Lead)</li> |
| <li>Pascal Rapicault </li> |
| <li>David Williams</li> |
| <li>Simon Kaegi</li> |
| <li>Bjorn Freeman-Benson</li> |
| <li>John Graham</li> |
| </ul> |
| |
| |
| <p>Potential commiters are kindly invited to express their interest |
| on the <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.tools.orbit">eclipse.tools.orbit |
| newsgroup</a> or via email.</p> |
| <p>As projects propose the use of additional third party libraries and their |
| use is approved, one of their team will add the bundled libraries to the |
| Orbit project. If they |
| do not already have a committer on Orbit, they will be able |
| to petition for a committer to be added on the basis that they are making |
| an initial code contribution to the project. They will also commit to ongoing |
| maintenance of that contribution as well as interacting with other Eclipse |
| projects which have an interest in the same code base.</p> |
| <h3>Interested parties</h3> |
| <p>Interest has been expressed by the following projects:</p> |
| <ul> |
| <li>BIRT</li> |
| <li>DTP</li> |
| <li>WTP</li> |
| <li>Corona</li> |
| <li>Dash</li> |
| </ul> |
| <p>To express support, concern, or constructive opinions regarding the formation |
| of this proposed Tools project, you are encouraged to utilize the <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.tools.orbit">eclipse.tools.orbit |
| newsgroup.</a> |
| </p> |
| |
| |
| <h3>Initial contribution</h3> |
| |
| <p>The team will initially look at the set of libraries currently approved |
| for use in Eclipse (e.g. those included in Callisto) and attempt to rationalize |
| their form. Below is an example list of the bundles to be added/maintained |
| in Orbit:</p> |
| <ul> |
| <li>Various Apache Commons projects including Logging, HTTP Client, Codec</li> |
| <li>Apache XMLRPC</li> |
| <li>Log4J</li> |
| <li>Servlet API 2.3 and 2.4</li> |
| <li>MX4J</li> |
| <li>Jasper</li> |
| </ul> |
| <h2>Roadmap</h2> |
| |
| <p>This project has no particular deliverables so a standard milestone-based |
| roadmap does not make sense here. Having said that, we expect to have an |
| initial set of library entries in the database and bundles in the repository |
| within the first three months of this project being provisioned. As the goal |
| of Orbit is to support the other Eclipse projects through common shared bundles, |
| the Orbit Roadmap will be coordinated with significant releases of the major |
| Eclipse projects.</p> |
| <p> </p> |
| |
| |
| </div> |
| </div> |
| <?php |
| # Paste your HTML content between the EOHTML markers! |
| $html = ob_get_contents(); |
| ob_end_clean(); |
| |
| # Generate the web page |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); |
| ?> |
| } |