Skip to content

Adding fluent bindings #234

@silasbw

Description

@silasbw

This is a summary of the options briefly discussed in #230 (comment).

https://github.com/godaddy/kubernetes-client is a fluent JavaScript language API binding and includes experimental support for using https://github.com/kubernetes-client/javascript as it's backend. It could makes sense to move https://github.com/godaddy/kubernetes-client to https://github.com/kubernetes-client. I summarize three options for doing this below:

Option 1: separate repository, separate npm module

Pros:

  • Close to what exists today, easy to orchestrate in the short term.

Cons:

  • Separate JavaScript client repositories and modules could be confusing to end users.
  • Might be cumbersome for maintainers to make major changes (e.g., breaking ones) across multiple repositories.

Option 2: same repository, same npm module

Move godaddy/kubernetes-client to kubernetes-client/javascript/fluent and expose the godaddy/kubernetes-client bindings via require('@kubernetes/client-node/fluent').

Pros:

  • Easy for end users because there's a single repository and module for Kubernetes JavaScript clients.
  • Facilitates making larger changes across both client types

Cons:

  • Existing users of @kubernetes/client-node will pull in superfluous dependencies from godaddy/kubernetes-client (FWIW, the list is short and will get shorter once @kubernetes/client-node is the backend for `godaddy/kubernetes-client).
  • More work for merging (e.g., documentation/README.md, package.json scripts, etc).

Option 3: same repository, separate npm modules

Move godaddy/kubernetes-client to kubernetes-client/javascript/fluent and expose the godaddy/kubernetes-client via the existing npm module, or a new one.

Pros:

  • Existing users of @kubernetes/client-node do no pull in dependencies for godaddy/kubernetes-client by default
  • Facilitates making larger changes across both client types

Cons:

  • Monorepos for JavaScript/npm modules can require special tooling to do it well in some circumstances.
  • The same repo, but different npm modules could lead to confusion for end users

Metadata

Metadata

Assignees

No one assigned

    Labels

    lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions