V3 release ideas
We've had some prior discussion about supporting modules (#223) and there was a concern about versioning policy (#233). Since we know we want to support Go modules, and this very likely mean bumping of the major version for go-jose, this might be a good place to discuss any breaking changes (including API cleanup) that we'd like to introduce in the next major release.
IMO the first thing to do is to freeze the 'v2' branch in order to avoid backward incompatible changes. You could release the last version of the v2 line, barring future patch releases for security and bug fixes. New code will land exclusively on the 'master' branch and the project will dismiss 'gopkg.in' in favor of semver and Go modules.
I agree with this. Let's do it.
- I merged v2 into master and updated imports paths, so we can switch over to Go modules now.
- I will release a final v2 with and then henceforth v2 shall be frozen except for security fixes.
Once we merge Go module support onto master we can release that as v3.0.0. I'm not sure we need any interface changes at this moment, but I'm open to ideas. One thing I'd like to figure out is #228 but it's been challenging to reproduce.
cc @philtay
Sounds good to me. We can always create a few pre-releases (either 2.99 or 3.00-pre) as we figure things out.
Also, this will be a good time to decide if we want to adopt https://semver.org/ and maybe even https://keepachangelog.com/. I think with Go modules, there's no reason why we shouldn't bump the major version more frequently as we introduce breaking changes.
what about exposing most used Header parameters thru an interface/method? eg.
token := jwt.NewWithClaims(...)
token.Alg() // returns "PS256"
token.KID() // return kid "12kliAsdjW2o3a"
// vs
token.Header["alg"] // returns "PS256"
token.Header["kid"] // returns kid "12kliAsdjW2o3a"
Is there any blocker to release v3?
Looks like there's a bunch of open stuff in V3 Milestone, but I think mostly we've had limited maintainers' time. We could maybe cut scope and think about how we can bring v3 to the finish line?
Yeah, I wanted to do a refactor of the interface mainly, but haven't had time to finish it.
IMO there's always time for v4. At this point cutting v3 alone would be a step forward. More than a year has passed.