Maintenance and support for Go major versions · go-playground/validator · Discussion #1342 (original) (raw)
Hey All, sorry for taking so long to post, the wind storms in BC, power outages, cleanup and then the holidays sidelined me for a while 😅 here are my thoughts and reasonings.
Proposed Decision:
Just like the Go release policy Each major Go release is supported until there are two newer major releases we should support the latest two versions of Go (officially).
Reasonings & Musings
I do not believe that the minimum supported Go version (MSGV) falls under semver 2.0 for a bunch of reasons including, but not limited to:
- Semver 2.0 applies to/covers the public interface/api and not behavioural nor MSGV.
- Upping the MSGV is not a breaking change to existing builds that have pinned the library dependency version and change is opt-in. If the latest or latest major version is being used in such builds then are already accepting/opting-in to the changes and other inherent risks also not covering under semver 2.0 like behavioural changes.
- Security & OS compatibility additions/fixes are not back ported to older Go versions.
- Major version bumps in Go are very intrusive, even if 99% of the public interface didn't change because of the major version, beyond v1, is included in the imports themselves, which I've always disagreed with as it wasn't necessary. This seems like an easy
sedcommand away, but in larger and distributed codebases is a significant effort in both time, but coordination as well.
Even IF the MSGV was considered a breaking change No. 3 above alone is a reason we should follow the Go release policy for support and bump without a major version bump anyways; Security & OS support trump Semver IMO.
Thanks all for reading, let me know your thoughts, this is the proposal I'm making.