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

Add deprecation path for buildpacks using the legacy BOM format. #286

Merged
merged 1 commit into from
Jan 26, 2022

Conversation

natalieparellano
Copy link
Member

@natalieparellano natalieparellano commented Jan 18, 2022

When we released the new SBOM, we created the following problem:

  • Old platforms (that expect to find the BOM in a label) can't upgrade their buildpacks to the 0.7 api - or if they do, the BOM will just disappear. This means that in order to use newer buildpacks, platform operators who were using the old BOM must also upgrade their platform to 0.8+. This is a more difficult migration path than we would like.

This PR proposes that buildpacks should be able to output both the old and the new BOM formats. Then older platforms will still have a BOM in the label, while newer platforms will have both.

Signed-off-by: Natalie Arellano <narellano@vmware.com>
Copy link
Member

@ekcasey ekcasey left a comment

Choose a reason for hiding this comment

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

Thanks @natalieparellano ! I think this is the right path forward.

@natalieparellano natalieparellano marked this pull request as ready for review January 18, 2022 22:14
@natalieparellano natalieparellano requested a review from a team as a code owner January 18, 2022 22:14
@natalieparellano
Copy link
Member Author

natalieparellano commented Jan 20, 2022

Assuming this change is approved, we have two paths forward for the implementation:

(1) Ship a lifecycle patch (v0.13.3), then (at some later date) ship buildpack/0.8 - this would mean that the migration path outlined here also applies to buildpack/0.7

  • Reasons to do this:
    • A more sensible buildpack/0.7
    • Nothing in the buildpack spec forbids this (the spec never says what is supposed to happen if a buildpack tries to implement behavior from another api...we have been following a convention but it was never made explicit)
  • Reasons not to do this:
    • The spirit of the spec is that it's supposed to be frozen in time, and we're bending the rules a little. We'd be treating the current behavior of lifecycle v0.13.2 as a bug when the fact is we didn't think of this migration path when we wrote buildpack/0.7

(2) Ship buildpack/0.8 with this change, then ship a lifecycle minor (v0.14.0) - this would mean that buildpack/0.7 only allows the new bom format, whereas buildpack/0.8 allows both old and new

  • Reasons to do this:
    • A spec release is a clear signal that there is a difference in behavior
  • Reasons not to do this:
    • The cadence of buildpack/0.6: old bom format, buildpack/0.7: new bom format (only), buildpack/0.8: old and new bom format is weird and could be confusing for buildpack authors
    • The lack of migration path in buildpack/0.7 would make it practically unusable for buildpack authors who care about maintaining compatibility with older platforms

Edit: you may use emojis to express preference for option 1 (🎉 ) vs option 2 (❤️ )

@sclevine sclevine self-requested a review January 20, 2022 18:07
@ekcasey ekcasey requested a review from hone January 20, 2022 19:22
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.

Thanks for leading the charge on this! I'm glad we're adding more things into this part of the file.

I'm not going to block the path that everyone seems to want here since there's a real problem that is hurting customers. That being said, it feels like we're getting by on a technicality here. I ranted at @jromero during OH yesterday on this topic, but if we're having such a hard time working with our spec process and how it's stuck b/c it's frozen, maybe it's time to revisit that line in the sand. Just to be concrete here, we're adding a Buildpack API 0.7 deprecation in Buildpack API 0.8 release. Is it worth talking about having "patch" releases of the Buildpack API?

natalieparellano added a commit to buildpacks/docs that referenced this pull request Jan 26, 2022
Signed-off-by: Natalie Arellano <narellano@vmware.com>
@ekcasey ekcasey merged commit e7c0959 into buildpack/0.8 Jan 26, 2022
@ekcasey ekcasey deleted the sbom-compat branch January 26, 2022 18:06
@ekcasey ekcasey added this to the Buildpack 0.8 milestone Jan 26, 2022
natalieparellano added a commit to buildpacks/lifecycle that referenced this pull request Mar 28, 2022
See buildpacks/spec#286 - this was patched in a newer lifecycle, but is missing in the POC

Signed-off-by: Natalie Arellano <narellano@vmware.com>
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.

None yet

6 participants