kubeclient icon indicating copy to clipboard operation
kubeclient copied to clipboard

5.0 incompatible changes plan

Open cben opened this issue 5 years ago • 10 comments

  • [ ] CHANGELOG for all the new merged stuff since 4.x.

  • [x] changed under_score algorithm https://github.com/abonas/kubeclient/pull/355

  • [x] document watch #436

  • [ ] change watch exceptions behavior https://github.com/abonas/kubeclient/pull/275#issuecomment-591928097

  • [x] support ruby 3.0 #500

  • [ ] drop EOL ruby versions ≤2.4

  • [ ] I'm thinking about making all methods not documented in README private?

    • Specifically get_entities, patch_entity etc? These are used in the wild a bit. Should I keep them until alternative #332? But .public_send("get_#{...}", ...) while clumsy is workable, .send and a major release is perfect time to make people aware they're using undocumented functionality.
    • [x] .rest_client too. UPDATE: replaced by .faraday_client, intentionally public.
      • [ ] TODO document
    • header manipulation hacks like samson did for #358 ?

    I don't want these to hold up 5.0, or block people from migrating. OTOH, private methods are still available with .send(...), just people will be more aware it's unsupported.

  • [x] several tests disabled due to expired TLS certs #483

  • [x] truffleruby failing on master with "ArgumentError: unknown keyword: status" e.g. https://github.com/abonas/kubeclient/pull/495/checks?check_run_id=2044157037 UPDATE: now passes e.g. https://github.com/abonas/kubeclient/runs/2535621628 :man_shrugging:

cben avatar Mar 10 '20 15:03 cben

  • What about Remove deprecated KubeException #293? => Not now. As explained there, HttpError is not sufficient, we need some top-level exception. Should probably introduce a Kubeclient::Error but that's a compatible change, and should give users time to adopt it before dropping KubeException.

cben avatar Mar 10 '20 16:03 cben

Apologies for delays. Working from home with kids has been... challenging. I hope to get a lot done next week.

cben avatar Apr 07 '20 09:04 cben

I'd propose:

  • get rid of most of the api: User has to set the api version and resource anyway, so much more efficient and simple to call client.get("nodes") without doing the extra api discovery 🤷
  • remove struct and return hashes ... it's an expensive crutch :D

grosser avatar Oct 11 '20 05:10 grosser

get rid of most of the api

That will be an entirely different gem :smile: There is a non-breaking road though: first implement #332, then much later see how well people adopted new style and how people feel about dropping existing API.

remove struct and return hashes

Now that it's simple matter of ``as: :parsed/as: :parsed_symbolized, I don't see a large enough payoff to justify breaking compatibility. We could do small nudges like make as:required inClientcontructor to stop encouraging a bad choice. Or even make people require and inject recursive-open-struct and stop depending on it? But _forcing_ people with lots of working.foo.barcode to rewrite everything to[:foo][:bar]` form would be a disservice IMHO.

If you care about this, start by changing README to prominently explain why the new modes are recommended.

In short, both of these points sound more "8.0" (and maybe never) then "5.0" to me :)

cben avatar Nov 03 '20 17:11 cben

  • [ ] .rest_client is definitely going private (or away) to unblock #466.

cben avatar Nov 03 '20 17:11 cben

#332 sounds like a good step forward ... requiring as also sounds good (with or without removing struct runtime dependency)

On Tue, Nov 3, 2020 at 9:48 AM Beni Cherniavsky-Paskin < [email protected]> wrote:

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/abonas/kubeclient/issues/435#issuecomment-721281891, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAACYZY35UYNXZRLEGUQSNDSOA665ANCNFSM4LFBW3GA .

grosser avatar Nov 03 '20 19:11 grosser

stumbled into the whole url parsing mess again 😞 so add to the list:

  • make version required
  • make version apps/v1 instead of mashing up host/apis/apps and v1
  • dynamically set api or apis depending on version == v1 ... and remove all the old glue/parsing code to have a single interface

grosser avatar Nov 04 '20 05:11 grosser

plz start a v5 branch so I can make PRs against that

grosser avatar Nov 16 '20 05:11 grosser

master is already v5, recent releases were from backports to v4.y branch

cben avatar Nov 16 '20 05:11 cben

Paternity leave ended :baby:, sleeplessness continues, I didn't make progress I hoped for :-(

  • If someone wants to help, one simple but important step is update changelog with everything unreleased we've merged on master.

cben avatar May 05 '21 19:05 cben