Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: spec API releases #49

Merged
merged 5 commits into from
Feb 20, 2020
Merged

RFC: spec API releases #49

merged 5 commits into from
Feb 20, 2020

Conversation

ekcasey
Copy link
Member

@ekcasey ekcasey commented Jan 27, 2020

Readable

This RFC proposes a branching process to allow us to stage changes for a new platform or buildpack API versions, while accommodating @sclevine's preference that master of the spec always describe a real set of API versions.

@ekcasey ekcasey marked this pull request as ready for review January 29, 2020 19:18
[drawbacks]: #drawbacks

* PRing the spec becomes a more complicated process
* Core team will have a new resposibility, deciding when to finalize a new API version
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we want to have this fall in line with #33, namely when lifecycle gets released? I can see us dealing with spec changes that wouldn't require a lifecycle release as well.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

imo every lifecycle should fully implement a specific documented set of API versions, but the lifecycle release and the spec release don't need to happen simultaneously.

In other words, if the spec defines buildpack API version 0.3, a subsequent lifecycle release can implement buildpack API 0.2 or 0.3, but it cannot implement half of 0.3 features. Obviously, the preference would be for catching up with the spec as quickly as possible.

# Alternatives
[alternatives]: #alternatives

- PR all spec changes to master, use release tags to indicate finalized API version
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 we can achieve the objectives here with something like this by having a moving stable branch and master is active development. We tell github to use the stable branch as default, so users always see a real API version.

Copy link
Member

@hone hone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this workflow and I'd like it to coincide with lifecycle releases as deemed necessary. Having the default displayed spec be what is latest also makes a lot of sense. One of the issues today with the spec is that it's misleading and unclear what is implemented and what isn't just by looking at the spec itself. As part of this we should either prioritize or remove features that aren't implemented.


When we want to make several changes to a given API in short succession (i.e. in the time windows between subsequent releases of the reference lifecycle), it would be nice to use a single new API number to represent a set of breaking changes.

Given that we have decided that master of the spec repo shall always describe a specific set of API versions, we should stage changes on a branch, and merge that branch to master when we want to assign a number to the set of changes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do we do about changes that are in master today, but aren't implemented?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with /bin/develop leaving the spec (buildpacks/spec#71), only store.toml remains unimplemented. It's not a particular complicated feature, so I vote we prioritize catching up with the spec before we release the next spec version.


The spec repo shall have protected branches representing the next API version (right now those would be `platform/0.3` and `buildpack/0.3`). PRs to the spec that change an API (all non-cosmetic changes) should be made to those branches.

When they decide it is appropriate, the core team, in consultation with the implementation team will merge an API branch to master, bump the API versions, in the spec README (https://github.com/buildpacks/spec#api-versions), and apply a [tag](https://github.com/buildpacks/spec/releases) to master.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since there are two API versions here, should we clarify/document how we name the tags?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated, have a look

@nebhale
Copy link
Contributor

nebhale commented Feb 12, 2020

I move that this RFC be sent to FCP with a disposition of merge, closing 1700 PT, February 19, 2019.

ekcasey and others added 5 commits February 20, 2020 08:22
Signed-off-by: Emily Casey <[email protected]>
Signed-off-by: Ben Hale <[email protected]>
Signed-off-by: Emily Casey <[email protected]>
Co-Authored-By: Terence Lee <[email protected]>
Signed-off-by: Ben Hale <[email protected]>
* explicitly calls out that this applies to distribution and current extensions
* implies that future extensions will be included in the process

Signed-off-by: Emily Casey <[email protected]>
Signed-off-by: Ben Hale <[email protected]>
Signed-off-by: Emily Casey <[email protected]>
Signed-off-by: Ben Hale <[email protected]>
[resolves #49]

Signed-off-by: Ben Hale <[email protected]>
@nebhale nebhale closed this in 831c3c6 Feb 20, 2020
@nebhale nebhale deleted the spec-api-releases branch February 20, 2020 16:25
@nebhale nebhale merged commit 5940bbf into master Feb 20, 2020
zmackie pushed a commit to zmackie/rfcs that referenced this pull request Mar 30, 2020
[resolves buildpacks#49]

Signed-off-by: Ben Hale <[email protected]>
nebhale added a commit to buildpacks/libcnb that referenced this pull request Apr 22, 2020
This change causes the buildpack's path to be determined first by reading
CNB_BUILDPACK_DIR if it exists.  If it does not, fall back to trimming
argv[0].  The fallback is temporary and can be removed once the lifecycle
supports the primary behavior.

[buildpacks/rfcs#49]

Signed-off-by: Ben Hale <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants