The Great Process Update of 2018
Source: pixabay.com
You may have noticed that our release cadence has slowed down significantly in the past few months. The bad news is we probably wonāt get a release out this year (mainly due to end-of-year vacations and slowing down in general), but the good news is the next release is huge ā big enough to bump us to v5.0 ā and itās just about ready. Iāll have more information on the next release in an upcoming post.
This post will go over all the changes weāve made to our project structure and processes surrounding contribution. These changes arenāt very visible to end-users, but they set the stage for the community growth and collaboration that will make our future releases even better and bring more depth to our culture and ecosystem.
A newly minted process for RFCs
Weāve finally established a process for submitting and accepting RFCs! Head over to
the concourse/rfcs repo if you want to check it out.
This new process enables anyone in the community to have a big impact on Concourseās direction. Iām really looking forward to seeing where this goes. Weāll be posting status updates for RFCs on this blog to notify the community of RFCs that are newly opened or near acceptance.
We've already started submitting RFCs for substantial features like Resources V2 and RBAC, though we jumped the gun a bit on implementation as we hadnāt yet figured out what we wanted from the RFC process (we just needed a better way to plan things in the open). There are a few loose ends to tidy up with existing RFCs now that we have a full process in place.
Credit where itās due: this process based pretty heavily on Rustās. Just about every detail seemed to apply just as appropriately to Concourse, and weāre just as cautious about far-reaching changes, so it was a great match.
Switching from CLA to DCO
Up until now, all pull request authors have had to sign off on the Pivotal CLA in order for their pull request to be accepted (unless it was an āobvious fixā).
On occasion contributors would get caught in a corporate quagmire when trying to get their company to sign off on the CLA, and it was also kind of jarring for individuals. The need for something like the CLA hasnāt gone away, but we felt it may have been hindering more than helping.
So, weāre abandoning the CLA process and instead adopting
the Developer Certificate of Origin (āDCOā) process. This process is much more
lightweight, only requiring pull request authors to include a āSigned-off-by:ā line in each commit, which can be done
via git commit -s. More information on this is available
in CONTRIBUTING.md.
Completing the Great Project Restructuring of 2018
The single biggest cause of the release slowdown has been The Great Project Restructuring of 2018, which was a massive revamp of how we develop, build, test, and ship Concourse. We knew this would be a āstop-the-worldā transition that would prevent us from shipping for a while, but we really had to bite the bullet at some point.
The focal point of this restructuring: almost all of Concourseās code now lives in one
big concoursemonorepo, using the
new Go 1.11 module system to track dependencies. Weāve replaced our
BOSH-centric development and pipeline workflow with a Docker-based workflow which is more intuitive and has a much
faster feedback cycle.
This means you can now git clone the Concourse repo and get a cluster built
from source and running in single command: docker-compose up. Itās never been easier to make changes and test them out
locally. Check out the new CONTRIBUTING.md for
more information!
This change kicked off a ripple effect that improved a ton of things about the developer, contributor, and operator experience:
- Now that all the code is together in one repo, cross-cutting changes can now be submitted as a single pull request! š Pull requests now trigger acceptance tests too, which is something we couldnāt really do easily before.
- Resources are now versioned and shipped independently of Concourse versions. Each resource is published as
concourse/<name>-resourcewith appropriate tags (e.g.1.2.3,1.2,1,latest,dev). This means you can refer to specific versions when necessary by usingresource_types:in your pipeline. A core set of resource types will still be shipped with Concourse, at whichever version they were when the release was frozen. - The
concourserepo is no longer a BOSH release; weāve split it out into its own repository instead. The new BOSH release simply wraps the binary distribution, rather than building from source. This reduces the surface area for support and removes any discrepancies between the platforms ā everything just uses the binary now! This also makes deploying the BOSH release faster because thereās not much to compile. - Weāve changed how the
concourseexecutable is packaged. Weāre switching to a.tgzformat containing the binary and its dependencies, rather than a self-extracting āall-in-oneā binary. This results in way fewer moving parts and dramatically reducesconcourse workerstart-up time.
Where are we now?
Overall, I think these recent changes may be the most important thing weāve done for the project since its inception, even if it meant not shipping for a while.
The RFC process will make it easier to collaborate, switching to the DCO removes a hurdle for new contributors, and the the new project structure should dramatically improve the developer experience.
Iād like to give special thanks to everyone that has tried out and given feedback on this new development process, and all the users that have waited patiently for the next release. š
Whatās next?
Well, now that the dust is settling itās time to actually start shipping software again. The next post will go over whatās in store for 5.0 and peek ahead into what weāre planning for 2019. See you then!
