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

Stop mirroring of root directory to v3 #467

Closed
cpuschma opened this issue Sep 15, 2023 · 5 comments
Closed

Stop mirroring of root directory to v3 #467

cpuschma opened this issue Sep 15, 2023 · 5 comments

Comments

@cpuschma
Copy link
Member

Implementing fuzzing got things moving and #466 surfaced some problems regarding the v3 directory:

  • The oldest supported version is Go 1.14, which already had Go Module integration
  • The root and v3 directory have been out of sync multiple times, including missing public variables/functions/documentation
  • People have to decide whether they use "github.com/go-ldap/ldap" or "github.com/go-ldap/ldap/v3" and maybe accidently include both in their codebase.

Since #367, we can't support older versions anyways as they're missing the necessary struct fields, meaning all versions used afterwards have Go modules integrated, which in turn means that there should be little to no breaking changes when dropping/stop mirroring the v3 directory. But, this would mean that programs >Go 1.14 which have the v3 directory imported need to be updated.

I want to start an open discussion about stopping mirroring the code. Any opinions are welcome.

@johnweldon
Copy link
Member

Agreed; we went down this path when modules were new, and I was having trouble figuring out the right way to version.

Anyone familiar with versioning in go modules (and ideally with legacy versioning experience too) would be welcome to propose a path forward here.

@t2y
Copy link
Contributor

t2y commented Sep 16, 2023

The oldest supported version is Go 1.14, which already had Go Module integration

According to below, Go supports only two newer versions, so we can reduce the support versions, I think.

Each major Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.

https://go.dev/doc/devel/release

@t2y
Copy link
Contributor

t2y commented Sep 16, 2023

I agree with stopping code mirroring since it also is a maintenance cost to developers.

I'm not familiar with the migration of Go Modules, what about Major branch approach? This current repository takes Major subdirectory now.

Just for reference, it seems that https://github.com/caarlos0/env takes Major branch approach.

@cpuschma
Copy link
Member Author

cpuschma commented Sep 16, 2023

The oldest supported version is Go 1.14, which already had Go Module integration

According to below, Go supports only two newer versions, so we can reduce the support versions, I think.

Each major Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.
https://go.dev/doc/devel/release

There's currently no need to drop support for two additional versions, as there are no breaking changes like in #367 which require us to remove them.

@cpuschma
Copy link
Member Author

cpuschma commented Apr 2, 2024

Discussion moved to #503

@cpuschma cpuschma closed this as completed Apr 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants