-
Notifications
You must be signed in to change notification settings - Fork 159
Conversation
Part of my totally unsecret personal agenda is to surface the things that Concourse is really good at in this particular problem domain, with an eye to adopting it or stealing from it. In particular, the Workflow, Triggering and Integrations headers play well to current strengths for Concourse or to concepts we've discussed internally. I'm not sure how best to explore that possibility without totally derailing everyone and everything, but I'd like the opportunity to work through it openly and collaboratively with the wider Elafros community to see if it makes sense. (Actual review of the actual document to follow) |
understandable way | ||
* **Improve** the featureset of the Build CRD by standardizing support for | ||
things like build caching using on-cluster resources | ||
* **Integrate** Build CRD into more services, and make it more powerful by |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sentence seems redundant. Perhaps:
Integrate Build CRD into more services to make it more powerful.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jchesterpivotal Would definitely be interested to collaborate on workflow definition (I'm PM on the Google Container Builder team). We've been thinking about workflow a lot as well and agree with the goal to develop in an open way and incorporate lessons learned, a.k.a. battle scars.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How should we compare notes? Any interest in whiteboarding or pairing to start forming a common understanding?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh and tagging @jama-pivotal (Concourse PM), when he's added to the org.
roadmap-2018.md
Outdated
|
||
## Detection | ||
|
||
In many cases, users shouldn't have to know explicitly which version of a build |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd drop "In many cases".
How this works in real life is a hard problem, that a lot of smart people have | ||
spent a lot of their smarts working on it. How that fits into the Build | ||
resource, or whether it's a higher-level concept "above" Builds remains to be | ||
seen. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My gut feeling is that it's not that hard. Which might mean this refers to experiences that I haven't had.
Or maybe I am thinking of a different meaning of "detection", given that my thinking is strongly shaped by how buildpacks approaches things.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there are some subtleties on attempting to do a good, language-specific detection given that some communities don't have clear, standardized semver compatibility, for example. (hi Ruby!)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This helps me understand what we're talking about in detection -- "is this Ruby?" vs "is this Ruby 2.5.1?", for example.
I was thinking of the former, which is where buildpacks start from in bin/detect
. Questions about which Ruby interpreter to install are handled by reading Gemfile
s, for NodeJS by reading project.json
etc during the bin/supply
step.
roadmap-2018.md
Outdated
|
||
In either case, the heuristics used to detect what build should be run should | ||
be open-sourced, and whatever decision the detection logic arrives at should be | ||
visible to end users, and should be understandable and repeatable. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might reword to:
In any case, these are our criteria for detection:
- Detection heuristics must be open sourced
- Users must have visibility into what detection decision was made and why
- Detection should an understandable, repeatable process
roadmap-2018.md
Outdated
## Community | ||
|
||
BuildTemplates are designed to be shared. We should cultivate a repo of common | ||
templates, and the builder images they rely on, both as working examples of how |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd break the sentence here:
We should cultivate a repo of common templates and the build images they rely on. These can serve as working examples of how to build good templates, which will encourage users to contribute their own.
advances we've made with FTL-like layer caching techniques, [remote image | ||
rebasing](https://github.com/google/image-rebase), source detection, and in | ||
general be best-in-class in terms of fast incremental builds. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps add a subheader for "Work So Far"
roadmap-2018.md
Outdated
|
||
## Workflow | ||
|
||
Today, a Build express a list of step containers to run in order, to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"express a list" should be "expresses a list"; or possibly reword to "a sequence of step containers" to emphasise the linearity.
workflows: | ||
|
||
* Parallel execution (fan-out/fan-in) | ||
* Conditional step execution ("only execute step X if Git branch == |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We'll need to take care to not create Turing-complete YAML. Per the Structured Programming Theorem there are three things you need to stumble on it:
- A way to order instructions (this is the current state of the world for Build CRD)
- A way to choose alternatives (proposed here)
- A way to repeatedly execute instructions (loops, not proposed yet).
* Runtime-conditional step execution ("only execute step Y if step X failed"; | ||
e.g., recover/cleanup a broken rollout) | ||
|
||
This may expand to cover generating a build from some other format, which |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have some example formats we'd want to convert from?
|
||
The Build CRD is powerful, but far from perfect. | ||
|
||
In particular, settling on a standard for expressing a secure and reliable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this will be the trickiest part to pull off safely.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to let someone from outside Google do the approve bits here, but this seems like a reasonable roadmap & charter.
roadmap-2018.md
Outdated
## Detection | ||
|
||
In many cases, users shouldn't have to know explicitly which version of a build | ||
template they're using; they have source, and they want to build and a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"they want to build a container image" (no "and")?
How this works in real life is a hard problem, that a lot of smart people have | ||
spent a lot of their smarts working on it. How that fits into the Build | ||
resource, or whether it's a higher-level concept "above" Builds remains to be | ||
seen. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there are some subtleties on attempting to do a good, language-specific detection given that some communities don't have clear, standardized semver compatibility, for example. (hi Ruby!)
Thanks for the comments, I've updated some wording as suggested. I'd like to avoid getting too deep into how we'll accomplish each thing, or what the specific challenges are. There will be plenty of time for that later. :) |
LGTM. One thing I might emphasize would be to tie the roadmap together with a really high mission / philosophy statement.
Or something along those lines to focus the roadmap. |
@smarterclayton This might make the most sense in the opening of the |
That works as well |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for putting this together, Jason.
Should we add a roadmap item around results handling? Using the build crd and other components as part of CICD workflows will require an interface for viewing results. |
@christophersanson In the name of limiting the scope of the roadmap, I think I'd prefer to work on that in an issue, instead of making it a tentpole effort for 2018. It might grow into enough work that it becomes a tentpole, but for now I think it's mostly a matter of "publish more events" (#95) and "better logging story" (#9), with documented/supported examples for exporting both of those...somewhere. Does that make sense? |
sgtm |
/lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ImJasonH, mattmoor The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
* Create roadmap.md * Rename to roadmap-2018.md * Incorporate some review feedback
* Create roadmap.md * Rename to roadmap-2018.md * Incorporate some review feedback
I'm sending this PR to get feedback from all the contributors.
If you see something you think is missing, or if you have questions, please leave a comment so we can discuss.