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

chore: Document versioning strategy #1679

Closed
wants to merge 6 commits into from

Conversation

RomainMuller
Copy link
Contributor

@RomainMuller RomainMuller commented Feb 5, 2019

Describes the versioning strategy for the CDK modules.

Designs #272

@RomainMuller RomainMuller self-assigned this Feb 5, 2019
@RomainMuller RomainMuller requested a review from a team as a code owner February 5, 2019 10:10
Copy link
Contributor

@eladb eladb left a comment

Choose a reason for hiding this comment

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

The narrative form is nice, but it would be useful to have a more focused list of "requirements" so it's very clear what we are trying to solve. There are many issues hiding between the paragraphs of the narrative and at least for me it's hard to see the whole picture through the narrative.

Documentation and GitHub releases are related (and important), but the first major problem at hand is the issues listed under developer and maintainer experiences.

design/modular-versioning.md Outdated Show resolved Hide resolved
own pace, in particular as the intention is to eventually transfer ownership of those to the service
teams. This means CDK packages need to be versioned individually (in other words: in a modular way).
Individual modules might also eventually be split out of the [awslabs/aws-cdk] mono-repo.

Copy link
Contributor

Choose a reason for hiding this comment

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

One thing I think we need to deconstruct is the notion of pre- and post-1.0. Maybe we can live in a world that post-1.0, there is no such thing as a major version bump of an individual module. It will obvsiouly reduce our agility to a certain degree, but it will be much easier for users and maintainers to reason about what should work with what. Now the problem is pre-1.0 modules, which we should be able to major-version bump until it's ready for prime time...

My point is that this paragraph has some hidden assumptions about requirements and we should distill those very clearly prior to our session.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I was somewhat intentionally avoiding to make a distinction between pre- and post-1.0 packages. I don't think there's any reason why they should be treated separately unless this dramatically simplifies the problem space (and I don't think it does).

Then, I would rather not limit major version bumping individual packages post-1.0, as this basically means any new major version will have to be coordinated across the entire surface (becomes challenging when packages get migrated to their own repositories... and anyway, that kind of coordination effort...?).

Copy link
Contributor

Choose a reason for hiding this comment

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

There's a very big difference in mentality between pre- and post- 1.0 modules, exactly around breaking changes. The bar for a breaking change raises dramatically and we would probably do everything we can to avoid them after 1.0. And I do think it will dramatically simplify our maintenance story, but let's leave that for our discussion.

Copy link
Contributor

@eladb eladb left a comment

Choose a reason for hiding this comment

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

I actually think that the only "real" problem is the maintainer issues. As long as we adhere to semantic versioning, customers should be fine since this is basically the same as any other set of dependencies they consume.

Shall we focus on the maintainer's issue.

@RomainMuller
Copy link
Contributor Author

@eladb:
Documentation and GitHub releases are related (and important), but the first major problem at hand is the issues listed under developer and maintainer experiences.

The order in which the sections are in the document is not innocent 😄


@eladb:
I actually think that the only "real" problem is the maintainer issues.

Kinda true, in that maintainers are also users.


@eladb:
As long as we adhere to semantic versioning, customers should be fine since this is basically the same as any other set of dependencies they consume.

I don't think it's that simple given peer dependencies, unless we have a strict "no breaking change after 1.0.0" policy, which sounds extremely limiting.

@eladb
Copy link
Contributor

eladb commented Feb 5, 2019

I don't think it's that simple given peer dependencies, unless we have a strict "no breaking change after 1.0.0" policy, which sounds extremely limiting.

I have a feeling that after 1.0.0 we will always major-version-bump everything in case we want to release a breaking change in one of the modules. I think that would have to be the reality of our life or otherwise it would be impossible to reason about compatibility in a decent way

@RomainMuller
Copy link
Contributor Author

I don't think it's that simple given peer dependencies, unless we have a strict "no breaking change after 1.0.0" policy, which sounds extremely limiting.

I have a feeling that after 1.0.0 we will always major-version-bump everything in case we want to release a breaking change in one of the modules. I think that would have to be the reality of our life or otherwise it would be impossible to reason about compatibility in a decent way

If true, I feel this should be the result of the design, and not a pre-requisite of it.

@eladb
Copy link
Contributor

eladb commented Feb 6, 2019

Another thing I think is related is which modules do we bump to 1.0 when we GA? I think that's also related. For example, do we plan to bump the IAM library?

@RomainMuller RomainMuller changed the title chore: Document modular versioning chore: Document versioning strategy Feb 7, 2019
@fulghum fulghum added the effort/small Small work item – less than a day of effort label Feb 11, 2019
@RomainMuller RomainMuller deleted the rmuller/modular-versioning branch August 10, 2019 00:38
@NGL321 NGL321 added the contribution/core This is a PR that came from AWS. label Sep 27, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contribution/core This is a PR that came from AWS. effort/small Small work item – less than a day of effort
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants