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

Proposal: Convert this repo to a Go module #14387

Closed
jhendrixMSFT opened this issue Mar 4, 2021 · 7 comments
Closed

Proposal: Convert this repo to a Go module #14387

jhendrixMSFT opened this issue Mar 4, 2021 · 7 comments
Labels
Client This issue points to a problem in the data-plane of the library. design-discussion An area of design currently under discussion and open to team and community feedback. EngSys This issue is impacting the engineering system. Previous Versions Work related to track1 and track1.5 SDKs

Comments

@jhendrixMSFT
Copy link
Member

Please add a 👍 reaction if you support this proposal. If you do not, please leave a comment describing why.

Now that Go modules have solidified and are on by default in Go 1.16 we are considering how we migrate this repo to officially support them (this is for our track 1 content; track 2 already supports modules).

In keeping with our current release strategy and version, the natural option would be to place a go.mod file in the root of the repo. However, given that we've already had dozens of major releases (v52.3.0 at the time of this writing), it would mean that the next major version would introduce semantic import versioning.

In go.mod:

module github.com/Azure/azure-sdk-for-go/v53

This would require consumers to update their import statements starting with v53 and beyond.

import github.com/Azure/azure-sdk-for-go/v53/services/foo/bar

While this "plays by the rules" it introduces a burden on consumers and we'd like feedback on the impact.

@ghost ghost added the needs-triage Workflow: This is a new issue that needs to be triaged to the appropriate team. label Mar 4, 2021
@jhendrixMSFT jhendrixMSFT added design-discussion An area of design currently under discussion and open to team and community feedback. and removed needs-triage Workflow: This is a new issue that needs to be triaged to the appropriate team. labels Mar 4, 2021
@ArcturusZhang ArcturusZhang pinned this issue Mar 11, 2021
@johejo
Copy link

johejo commented May 8, 2021

I think it's a good decision.
For reference, google/go-github did the same thing at v18, and is currently upgrading to v35.
https://github.com/google/go-github

@ArcturusZhang ArcturusZhang unpinned this issue May 10, 2021
@jhendrixMSFT
Copy link
Member Author

Unfortunately this places a significant burden on consumers that use a large number of packages from this SDK. This was mentioned here on the negative impact it would have on Terraform.

@jhendrixMSFT jhendrixMSFT pinned this issue Jul 8, 2021
@marchesir
Copy link

well at some point go may force the change, so not easy on anybody. i for 1 have an issue azure-sdk-for-go is required by terratest but where i work we use artifactory and as there is no go.mod it makes downloading hard as artifactory assumes .mod.

@jhendrixMSFT
Copy link
Member Author

I tend to agree. It's a bitter pill but is likely inevitable. In addition, I recall there was talk about tooling to simplify updating a major module version.

CC @tombuildsstuff

@bcmills
Copy link

bcmills commented Jul 8, 2021

Regarding upgrade automation, I am aware of at least golang/go#32816 and golang/go#32014, as well as a couple of existing tools (https://github.com/icholy/gomajor and https://github.com/marwan-at-work/mod, but others may exist too).

@bcmills
Copy link

bcmills commented Jul 8, 2021

I'm also planning to address module aliasing and renaming (golang/go#26904) for Go 1.18 (due out EoY this year), and it's possible that that will include a way for an existing module to leave a “fowarding address”.

(More design work is needed, but migrating from one module path to another — including from an unversioned path to a versioned one — is an important use-case that we're actively thinking about.)

@RickWinter RickWinter added Previous Versions Work related to track1 and track1.5 SDKs design-discussion An area of design currently under discussion and open to team and community feedback. Client This issue points to a problem in the data-plane of the library. EngSys This issue is impacting the engineering system. and removed design-discussion An area of design currently under discussion and open to team and community feedback. labels Sep 13, 2021
@tadelesh tadelesh unpinned this issue Sep 22, 2021
@jhendrixMSFT jhendrixMSFT pinned this issue Sep 27, 2021
@jhendrixMSFT jhendrixMSFT unpinned this issue Feb 18, 2022
@jhendrixMSFT
Copy link
Member Author

Given that /services has moved to maintenance mode and is superseded by our new, module-based SDKs, I don't think it's worth making this change to the legacy SDK.

@github-actions github-actions bot locked and limited conversation to collaborators Apr 11, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Client This issue points to a problem in the data-plane of the library. design-discussion An area of design currently under discussion and open to team and community feedback. EngSys This issue is impacting the engineering system. Previous Versions Work related to track1 and track1.5 SDKs
Projects
None yet
Development

No branches or pull requests

5 participants