B3 is a proposed open source project under the PDE Incubator 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 eclipse.b3 newsgroup.
The purpose of the project will be to develop a new generation of Eclipse technology addressing the concerns of software build and assembly.
The work of the project will be a complement and potential successor to the PDE Build component.
The project will have three key objectives:
(1) Making build processes repeatable, reproducible and adaptable. 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, and build scripts/tasks will be generated from build models.
2. Bridging discontinuities between building and provisioning software. 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.
3. Aligning potentially overlapping Eclipse build technologies. 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.
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.
Leverage and support of established Eclipse technologies will be a priority.
Buckminster and PDE Build are directly relevant to the work of this project, and we intend to combine their respective strengths and capabilities. Creating a common successor technology, or folding one technology into the other, will be within scope of this project.
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.
We plan to use EMF and related technologies to create the necessary build models and interpretation engines.
Various community build/assembly tools have been implemented based on Buckminster and other relevant technologies. Continuing and expanding support for these and other community initiatives will be a priority for this project.
- Ed Merks (Project Co-Lead)
- Thomas Hallgren (Project Co-Lead)
- Henrik Lindberg
- Karel Brezina
- Stefan Daume
- Bjorn Freeman-Benson
- Oisin Hurley
- Eike Stepper
- Chris Aniszczyk
- Andrew Niefer
Each initial committer is currently an active Eclipse committer on other projects.
- Chris Aniszczyk
- Ed Merks
A formal project roadmap and plan will be developed following approval and creation of this project.
We do not currently plan any outside code contributions in connection with this project. All project code will either be developed in connection with this project or sourced from another Eclipse project.