blob: a755f2918ab537bd757240fa655178757a2f37b0 [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 = "";
$pageKeywords = "";
$pageAuthor = "";
ob_start();
?>
<div id="maincontent">
<div id="midcolumn">
<h1>B3 Project Proposal</h1>
</p>
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php");
generate_header("Eclipse B3");
?>
<h2>Introduction</h2>
<p>B3 is a proposed open source project under the EMFT project. This proposal is in the Project
Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its
intent and scope and to solicit additional 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.b3">eclipse.b3</a> newsgroup.</p>
<h2>Objectives</h2>
<p>The purpose of the project will be to develop a new generation of Eclipse technology to simplify software build and assembly.</p>
<p>The work of the project will be a complement and potential successor to the PDE Build component.</p>
<p>The project will have three key objectives:
<ul>
<li>Making build processes simpler, repeatable, reproducible and adaptable</li>
<li>Bridging discontinuities between building and provisioning software</li>
<li>Aligning potentially overlapping Eclipse build technologies</li>
</ul>
<p>Build specifics are often buried within a complicated build script or process definition, so when
builds fail, they often do so for mysterious reasons. Similarly, build execution can be highly
dependent on the details of a given developer's development setup, which makes builds difficult
to run in different environments. The ambition of this project will be (1) to make it possible
for a given build to execute in the exact same way when run by anyone, anywhere in the
develop-test-deploy cycle and (2) to ensure that when a build fails, it fails for reasons
that are clear and reproducible. Developing a declarative, model-driven approach to build definition
and execution will be essential to realizing this ambition. Clear separations will be created between
concerns of build definition and build execution. Build definitions will describe build input,
tooling, platform constraints and processes in ways that are amenable to transformation and manipulation.
Where possible, build models will be automatically generated from project structure.</p>
<p>Software developers are linked
in an iterative chain of building and provisioning, in which the output of a given build becomes an input
in a subsequent build. Today, the tools and processes of building and provisioning are poorly integrated,
resulting in broken hand-offs and wasted effort across the cycle. Automating the connection between each
link in the chain will be a goal of this project. Build reproducibility will be a key means to realizing
this goal. Each element of a given build process will be captured and reflected in the build definition,
so that it can be executed as needed in subsequent steps in the cycle.</p>
<p>Several key Eclipse technologies, most
notably PDE Build and Buckminster, extend into the build & assembly domain. PDE Build provides the
standard Eclipse framework for generating and orchestrating scripts used to build plug-ins. Buckminster
has been developed primarily to automate component assembly and provisioning for Eclipse workspaces, but
also can be used more generally in build automation. Delineating the relationship between these two
technologies will be an important goal of this project, although further exploration will be needed to
determine the best approach going forward, i.e., folding one technology into the other, creating a
common successor technology for both, etc.</p>
<h2>Technical Scope</h2>
<p>Key technologies to be developed in this project will be (1) models describing various aspects of the build
domain as well as the relationship between build and provisioning and (2) engines that interpret and act on these
models.</p>
<p>Leverage and support of established Eclipse technologies will be a priority.</p>
<p>Buckminster and PDE Build are directly relevant to the work of this project, and we intend to combine their
respective strengths and capabilities.</p>
<p>Creating a common successor technology, or folding one technology into the other, will be within scope of this
project.</p>
<p>P2 will be a key technology to exploit, given our goal of addressing connections between build and provisioning
concerns. P2 and PDE Build are highly interdependent. Clarifying the boundary between p2/provisioning and build
concerns will be within scope of this project. Extension into the provisioning domain, as addressed by p2, will
be out of scope. We also expect non-Eclipse build and continuous integration technologies to influence the project
architecture and implementation. However, developing similar technology, to the extent not currently addressed by
Buckminster or PDE Build will be out of scope.</p>
<p>We plan to use EMF and related technologies to create the necessary build models and interpretation engines.</p>
<p>Various community build/assembly tools have been implemented based on Buckminster, PDE Build and other relevant
technologies. Continuing and expanding support for these and other community initiatives will be a priority for
this project.</p>
<h2>Related Projects</h2>
<h3>Athena Common Builder</h3>
<p>Athena performs high-level orchestration using mostly ant-scripts to make Hudson drive a build that executes the
ant-tasks provided by PDE-build. It isn't really visible in the IDE (nor was it intended to) but what it does is
certainly related.</p>
<p>Athena has an implicit build-model that consists of artifacts from PDE, plus maps, xml-files, and properties.
All that information put together describes how to check things out from SCM's, assemble, build, test, and promote.
All concepts that will be described in the B3 model.</p>
<h3>Maven</h3>
<p>Several initiatives exists to integrate Maven with Eclipse. Maven has a build/provisioning model of its own
witch significant overlaps both PDE-build and P2. Rather than "converting" to the maven way of doing things, we
want B3 to have clear points of integration where maven functionality can be plugged in. One interesting point of
integration that is beyond the scope of this project but still closely related would be a P2 front-end to a Maven
repository.</p>
<h3>Other Ant based build systems</h3>
<p>Several projects within Eclipse are using their own ant-based build systems. We encourage the build masters in
charge of those systems to get involved so that any specifics needed by their builds can be encompassed by B3.
Several projects within Eclipse are using their own ant-based build systems. We encourage the build masters in
charge of those systems to get involved so that any specifics needed by their builds can be encompassed by B3.</p>
<h2>Project Team</h2>
<h3>Initial committers</h3>
<ul>
<li>Ed Merks (Project Co-Lead)</li>
<li>Thomas Hallgren (Project Co-Lead)</li>
<li>Henrik Lindberg</li>
<li>Karel Brezina</li>
<li>Stefan Daume</li>
<li>Bjorn Freeman-Benson</li>
<li>Oisin Hurley</li>
<li>Eike Stepper</li>
<li>Chris Aniszczyk</li>
<li>Andrew Niefer</li>
<li>Ian Bull</li>
<li>Filip Hrbek</li>
</ul>
<p>Each initial committer is currently an active Eclipse committer on other projects.</p>
<h3>Mentors</h3>
<ul>
<li>Chris Aniszczyk</li>
<li>Ed Merks</li>
</ul>
<h3>Interested parties </h3>
<ul>
<li><a href="http://nick.divbyzero.com">Nick Boldt</a></li>
<li>Curtis Windatt</li>
<li>Darin Wright</li>
<li><a href="http://www.linkedin.com/in/danrubel">Dan Rubel</a></li>
<li><a href="http://www.linkedin.com/in/blacksmith">Mark Russell</a></li>
<li>Kim Moir</li>
<li>Paul Webster</li>
<li>Benjamin Cab&eacute;</li>
<li><a href="http://www.ralfebert.de/">Ralf Ebert</a></li>
<li><a href="http://blog.efftinge.de/">Sven Efftinge</a></li>
<li><a href="http://www.eclipticalsoftware.com/">Peter Nehrer</a></li>
</ul>
<h2>Roadmap</h2>
<p>A formal project roadmap and plan will be developed following approval and creation of this project.</p>
<h2>Code Contributions</h2>
<p>We do not currently plan any outside code contributions in connection with this project.</p>
<p>All project code will either be developed in connection with this project or sourced from another
Eclipse project.</p>
</div>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>