-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Removal of public method in a minor release breaking semantic versioning with utter lack of warnings or anything #45948
Comments
Also the method was moved into OidcCommonUtils, but it didnt exist in there prior to 3.18 which means we have to make any library changes across all our services at EXACTLY the same time to prevent any further breaking |
So first, I don't think we said anywhere we were following semantic versioning. We aren't. Second this class isn't considered API so even if we were following semantic versioning, it wouldn't have been considered an issue to move this method. I would recommend you make your case as to what you are using this method for and why you would like it to be exposed as API and we could make progress from there. |
We can't really treat all public methods inside the runtime package as public API, I can restore this method though, delegating to its new location |
@olliefreeman I've proposed restoring a couple of methods in #45949, but, as Guillaume explained, classes in the runtime are not considered API classes, with some exceptions, for example, when we ended up documenting how to use these runtime package classes in the quickstart or reference guides. In general, only the classes in the |
TBH I dont mind that they're being removed, its just the lack of protections around people using your code, I've moved over to the Useful to know that only stuff directly inside One of the points of using an x.y.z format is that its semantic and with java based (and maven stored) dependencies everyone assumes its following semantic versioning, maybe not down to the letter but closely enough that minor and patch changes can be trusted to not introduce breaking changes. So you may not have said you're following it, but people will assume you are as everyone else does. Again now we know you're not, we will take steps to assume all changes are breaking. Thank you. |
@olliefreeman This particular utility code is a very simple code which avoids reg-exs and just decodes the specific parts of the token, I'm not sure switching to some 3rd party library makes sense or what does it really mean that the Base64url decoding can be done better elsewhere, but it is your code, so I'm fine with it... In any case, like we said, the code in the runtime package is not a public API... |
I think there is a misunderstanding here: the As for our API, here is the rule we try to have: everything under the As for our versioning:
Now, we are very open to discussion so if you need something in particular for a very common task and would like us to provide it as a public util, please let us know. But I would recommend to start the discussion with "we need a utility to do X in most of our projects, here is why we need it and the features we need it to cover, it would be nice to include it out of the box in the Quarkus API as it's a very common use case". Hope it clarifies things and happy to discuss with you about how to best make progress on this particular use case. |
/cc @pedroigor (bearer-token,oidc) |
I'll just add to @gsmet's excellent summary above, that if we considered every public class part of the API, our ability to innovate and improve would be severely hampered. |
Describe the bug
869c7ba#diff-8af2ccae2405932ff99db333a8b3932c5df400268993c83c38210a1e18fd762eL204 removes the method decodeJwtContent from OIDCUtils class.
There was no depreciation warning, and with the standards of semantic versioning you cant make changes like this in a MINOR version, in a major version sure, but the expectation would be the method would be tagged with deprecation annotation to warn us to make changes.
We have minor version dependency updating in place and this broke our system.
Expected behavior
Deprecation warnings on methods before removal, or clear documentation that this is happening. Minor semantic versions should never introduce breaking changes
Actual behavior
Complete removal of multiple methods from a class in a MINOR semantic version change, and zero documentation as to what to use to replace it
How to Reproduce?
No response
Output of
uname -a
orver
No response
Output of
java -version
No response
Quarkus version or git rev
No response
Build tool (ie. output of
mvnw --version
orgradlew --version
)No response
Additional information
No response
The text was updated successfully, but these errors were encountered: