B3 Project Proposal
Introduction
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 eclipse.b3 newsgroup.
Objectives
The purpose of the project will be to develop a new generation of Eclipse technology to simplify 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:
- Making build processes simpler, repeatable, reproducible and adaptable
- Bridging discontinuities between building and provisioning software
- Aligning potentially overlapping Eclipse build technologies
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.
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.
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.
Technical Scope
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, PDE Build and other relevant technologies. Continuing and expanding support for these and other community initiatives will be a priority for this project.
Related Projects
Athena Common Builder
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.
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.
Maven
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.
Other Ant based build systems
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.
Project Team
Initial committers
- 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
- Ian Bull
- Filip Hrbek
Each initial committer is currently an active Eclipse committer on other projects.
Mentors
- Chris Aniszczyk
- Ed Merks
Interested parties
- Nick Boldt
- Curtis Windatt
- Darin Wright
- Dan Rubel
- Mark Russell
- Kim Moir
- Paul Webster
- Benjamin Cabé
- Ralf Ebert
- Sven Efftinge
- Peter Nehrer
Roadmap
A formal project roadmap and plan will be developed following approval and creation of this project.
Code Contributions
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.