go-ldap / ldap

Basic LDAP v3 functionality for the GO programming language.
Other
2.25k stars 355 forks source link

Stop mirroring of root directory to v3 #467

Closed cpuschma closed 7 months ago

cpuschma commented 1 year ago

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

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 7 months ago

Discussion moved to #503