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

core kit migration 🚧 tracking issue #4048

Closed
bcressey opened this issue Jun 10, 2024 · 2 comments
Closed

core kit migration 🚧 tracking issue #4048

bcressey opened this issue Jun 10, 2024 · 2 comments
Assignees
Labels
area/out-of-tree-builds Related to the efforts of making it easy to create builds outside of the main Bottlerocket repo status/in-progress This issue is currently being worked on type/enhancement New feature or request

Comments

@bcressey
Copy link
Contributor

What's happening?

As the culmination of work done over the past 18 months, this repo - aka "the Bottlerocket main repo" - will be migrating over to the out-of-tree builds infrastructure.

This will mark a major change in the development workflow:

  1. Most packages and first-party agents (like updog and the API server) will move to bottlerocket-os/bottlerocket-core-kit.
  2. Reusable settings definitions will move to bottlerocket-os/bottlerocket-settings-sdk.
  3. Variant definitions, and their associated settings and defaults, will stay in bottlerocket-os/bottlerocket.

There will be no impact to past or future Bottlerocket releases. The only change is to how Bottlerocket is built, not to how it is published or consumed.

Why is this happening?

One of the major lessons of the out-of-tree builds project has been that without the forcing function of a repository boundary, it's easy to miss adding useful abstractions and end up with software that's nominally reusable but is actually very tightly coupled to specific use cases. While that's helpful for the velocity of feature development in the moment, it's harmful to the larger goal of fostering a community of out-of-tree builders.

Bottlerocket has had two similar migrations in its history - first when the SDK moved out-of-tree in #525, and again when the build and publish tools moved out-of-tree in #3429. Both were successful from the perspective of streamlining development and reducing compile times. This will be the largest migration yet, and I anticipate similar benefits.

When it will happen?

The bottlerocket-os/bottlerocket-core-kit repo will be created and publish its first release on June 13, 2024. That repo will start with a copy of the main repo's history, and the non-core sources will be removed in a subsequent commit.

Once the core kit is available, bottlerocket-os/bottlerocket will then remove the core sources in a subsequent commit, retaining only the variant-specific sources. This is expected to happen on June 14, 2024.

What about my existing private fork?

The 1.20.x branch will not be updated with these changes, so that can be used (temporarily) as the basis for ongoing development. The shared Git history should make it straightforward to cherry-pick fixes by adding bottlerocket-core-kit as an addition remote.

Long-term, I invite you to collaborate to get useful changes upstream, such as new packages into the core kit and new modeled types into the settings SDK.

@bcressey bcressey added type/enhancement New feature or request status/in-progress This issue is currently being worked on area/out-of-tree-builds Related to the efforts of making it easy to create builds outside of the main Bottlerocket repo labels Jun 10, 2024
@bcressey bcressey self-assigned this Jun 10, 2024
@bcressey bcressey pinned this issue Jun 10, 2024
@bcressey
Copy link
Contributor Author

The migration is now complete, though there's work left to bring documentation up to date. We're also iterating on some quality-of-life improvements over in twoliter.

@bcressey bcressey unpinned this issue Aug 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/out-of-tree-builds Related to the efforts of making it easy to create builds outside of the main Bottlerocket repo status/in-progress This issue is currently being worked on type/enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant