go-jose icon indicating copy to clipboard operation
go-jose copied to clipboard

V3 release ideas

Open mbyczkowski opened this issue 6 years ago • 9 comments

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.

mbyczkowski avatar May 22 '19 21:05 mbyczkowski

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.

philtay avatar May 22 '19 21:05 philtay

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

csstaub avatar May 24 '19 16:05 csstaub

Sounds good to me. We can always create a few pre-releases (either 2.99 or 3.00-pre) as we figure things out.

mbyczkowski avatar May 24 '19 17:05 mbyczkowski

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.

mbyczkowski avatar May 24 '19 18:05 mbyczkowski

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"

ghost avatar May 30 '19 20:05 ghost

Is there any blocker to release v3?

philtay avatar Feb 05 '20 10:02 philtay

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?

mbyczkowski avatar Feb 14 '20 06:02 mbyczkowski

Yeah, I wanted to do a refactor of the interface mainly, but haven't had time to finish it.

csstaub avatar Feb 14 '20 16:02 csstaub

IMO there's always time for v4. At this point cutting v3 alone would be a step forward. More than a year has passed.

philtay avatar Mar 14 '20 10:03 philtay