-
Notifications
You must be signed in to change notification settings - Fork 377
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
Update CHANGELOG.md and Release Notes with 2.9's breaking changes #623
Comments
Separately, to your concern that you expressed here: #616 (comment)
I think you're already halfway towards the solution: undocumented interfaces are already inherently a little bit unstable (IMO). I'd recommend one or more of the following:
|
Also, for what it's worth, after looking through #605, I do like your refactoring, @anakinj. (Selfishly) I would have liked it better with a temporary backward compatibility layer (printing deprecation warnings). 😉 But we all have limited time and energy for this stuff! And adding deprecation adapters (and release notes) for every potential change can be draining. |
Lovely suggestions and appreciate you putting time on thinking and writing about this @nevans . I think tagging the "internal" apis for rdoc/yard would be a nice way to more clearly document what are intended to be publicly used. Would also be glad adding (also in retrospect) notes about the breaking changes in 2.9 to the internal APIs to the changelog. As an addition to that I would also be happy to see a layer for keeping backwards compatibility. |
Im about to bring back the classes (probably as-is) and adding some deprecation warnings to those. Now Im a little puzzled on how to deal with suggesting alternatives. Would not like to suggest anyone to use the internals until there is official support for those. |
@anakinj I'm only able to put so much time into thinking and writing about this because I've already been dealing with it myself: I'm currently in the middle of trying to figure out a few final points before the net-imap 0.5.0 release. How much of a breaking change is too much? What should go through an extended deprecation period and what changes should just switch over? 🙂 And I'm sorry for prodding you into the extra work (bringing back the older API)! I'm am using JWT, but my code never used those APIs directly and I've already upgraded all of the gems that were using those APIs (this morning). As far as suggesting alternatives, honestly, I think that what you did in #624 is fine for now (not directly suggesting any alternatives). On the other hand, I think that your Claims API is already simple (and tested) enough that I'd personally be comfortable declaring it as "officially supported". There's really just the following, right?
That isn't too much to support, IMO. Since all of the I would suggest:
For me, the major sticking point would be if any of the class or keyword parameter names are ambiguous or misnamed. E.g: is there a better name (or maybe a good alias) for |
I actually managed to make most of the APIs backwards compatible with a bit of magic. Still a bit work to be done but doable. About officially supporting claim validations I think is something that I could work. There are some changes in the horizon already for the current API so think I need to think of a way to keep it compatible The current vision is to drop the So the API would be something like:
Would also be interesting to hear about those gems that were using those APIs? Would be valuable to know the users a bit better to understand the struggles. Really appreciate your input, super motivating to react when there are some concrete suggestions to support you. |
Think I got the mess sorted now and released 2.9.2 with the old API compatibility for all the changed APIs. Added a list of deprecations that will be removed in 3.0 to the changelog. For 2.10 there will be some improvements to the documentation based on your comments also in that version the deprecation warnings will be added to code, decided not to add them just yet to avoid spamming. |
@anakinj Looking great! 👍🏻 |
This is a continuation of zquestz#464, which fixed backward compatibility with jwt v2.9.0 and v2.9.1. v2.9.2 brought back the removed APIs, for backward compatibility, but marked them as internal only and/or deprecated. For context, see the discussion here: * jwt/ruby-jwt#623 * jwt/ruby-jwt#626
Quoting @anakinj in #616 (comment):
So, I'm opening a new ticket for my suggestions. 😉
I'm personally okay with projects that don't strictly adhere to Semantic Versioning. I have issues with the way the standard was written--with a few (significant) tweaks, I'd probably love it. But I'll never commit to using it myself.
Regardless of whether or not the project uses Semantic Versioning or any other compatibility policy, what I really want to see is a list of any "Breaking Changes" in the CHANGELOG.md and Release Notes (for projects that use those). Bonus points (so few projects do this!): update the CHANGELOG and Release Notes with a "Known Issues" list for any significant bugs (aka: accidental breaking changes) that were fixed in a later release.
It's okay to update these docs months after the release was made. It'll be appreciated by someone... it may save them hours of debugging time! These should be living documents.
As for the actual release notes, quickly skimming through #605 and the bugfix since 2.9.0, I see the following:
If you wanted to add something about "these constants were not intended to be used as part of the public API", that seems reasonable to me. But that's not really necessary, IMO.
The text was updated successfully, but these errors were encountered: