Skip to content
This repository has been archived by the owner on Sep 5, 2019. It is now read-only.

Add 2018 Roadmap #94

Merged
merged 3 commits into from
Mar 30, 2018
Merged

Add 2018 Roadmap #94

merged 3 commits into from
Mar 30, 2018

Conversation

imjasonh
Copy link
Member

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.

@jchesterpivotal
Copy link

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

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.

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.

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?

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

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.

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.

Copy link
Member

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!)

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 Gemfiles, 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.

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

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.

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

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 ==

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

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

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.

Copy link
Member

@evankanderson evankanderson left a 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
Copy link
Member

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.
Copy link
Member

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!)

@imjasonh
Copy link
Member Author

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. :)

@smarterclayton
Copy link

LGTM. One thing I might emphasize would be to tie the roadmap together with a really high mission / philosophy statement.

  1. Make it easy to rapidly iterate on source code for use with Elafros
  2. Make builds of images efficient and secure

Or something along those lines to focus the roadmap.

@mattmoor
Copy link
Member

@smarterclayton This might make the most sense in the opening of the README.md for the repo, WDYT?

@smarterclayton
Copy link

That works as well

Copy link
Member

@mattmoor mattmoor left a 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.

@christophersanson
Copy link

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.

@imjasonh
Copy link
Member Author

@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?

@christophersanson
Copy link

sgtm

@mattmoor
Copy link
Member

/lgtm

@google-prow-robot
Copy link

[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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@google-prow-robot google-prow-robot merged commit 7334d6e into master Mar 30, 2018
@imjasonh imjasonh deleted the roadmap branch March 30, 2018 17:34
vdemeester pushed a commit to vdemeester/knative-build that referenced this pull request Apr 3, 2019
* Create roadmap.md

* Rename to roadmap-2018.md

* Incorporate some review feedback
vdemeester pushed a commit to vdemeester/knative-build that referenced this pull request Apr 3, 2019
* Create roadmap.md

* Rename to roadmap-2018.md

* Incorporate some review feedback
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants