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.