k8s-openapi VS spectrum

Compare k8s-openapi vs spectrum and see what are their differences.

k8s-openapi

Rust definitions of the resource types in the Kubernetes client API (by Arnavion)

spectrum

OpenAPI Spec SDK and Converter for OpenAPI 3.0 and 2.0 Specs to Postman 2.0 Collections. Example RingCentral spec included. (by grokify)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
k8s-openapi spectrum
7 1
360 111
- -
8.3 8.1
12 days ago 4 days ago
Rust Go
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

k8s-openapi

Posts with mentions or reviews of k8s-openapi. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-06.
  • WinBtrfs – an open-source btrfs driver for Windows
    7 projects | news.ycombinator.com | 6 Apr 2024
    It's called sans-io in Python land, which is where I heard it first.

    https://sans-io.readthedocs.io/

    I did it for one of my projects back in 2018 https://github.com/Arnavion/k8s-openapi/commit/9a4fbb718b119...

  • The bane of my existence: Supporting both async and sync code in Rust
    4 projects | news.ycombinator.com | 19 Jan 2024
    Another option is to implement your API in a sans-io form. Since k8s-openapi was mentioned (albeit for a different reason), I'll point out that its API gave you a request value that you could send using whatever sync or async HTTP client you want to use. It also gave you a corresponding function to parse the response, that you would call with the response bytes however you got them from your client.

    https://github.com/Arnavion/k8s-openapi/blob/v0.19.0/README....

    (Past tense because I removed all the API features from k8s-openapi after that release, for unrelated reasons.)

  • Welcome to Comprehensive Rust
    10 projects | news.ycombinator.com | 22 Dec 2022
    Macro expansion is slow, but only noticeably in the specific situation of a) third-party proc macros, b) a debug build, and c) a few thousand invocations of said proc macros. This is because debug builds compile proc macros in debug mode too, so while the macro itself compiles quickly (because it's a debug build), it ends up running slowly (because it's a debug build).

    I know this from observing this on a mostly auto-generated crate that had a couple of thousand types with `#[derive(serde::)]` on each. [1]

    This doesn't affect most users, because first-party macros like `#[derive(Debug)]` etc are not slow because they're part of rustc and are thus optimized regardless of the profile, and even with third-party macros it is unlikely that they have thousands of invocations. Even if it is* a problem, users can opt in to compiling just the proc macros in release mode. [2]

    [1]: https://github.com/Arnavion/k8s-openapi/issues/4

    [2]: https://github.com/rust-lang/cargo/issues/5622

  • OpenAPI Generator allows generation of API client libraries from OpenAPI Specs
    11 projects | news.ycombinator.com | 15 Oct 2022
    >OpenAPI Generator allows generation of API client libraries from OpenAPI Specs

    It does, but the generated code can be very shitty for some combinations of spec and output language. I maintain Rust bindings for the Kubernetes API server's API, and I chose to write my own code generator instead. The README at https://github.com/Arnavion/k8s-openapi has more details.

  • Any good toy Rust project for k8s application?
    3 projects | /r/rust | 20 Jan 2022
    k8s_openapi - https://github.com/Arnavion/k8s-openapi
  • Approaches for Chaining Access to Deeply Nested Optional Structs
    1 project | /r/rust | 30 Apr 2021
    For example: I have a routine that checks the value of (from k8s-openapi): Ingress -> IngressStatus -> LoadBalancerStatus -> Vec[0] -> String
  • Writing a Kubernetes CRD Controller in Rust
    5 projects | news.ycombinator.com | 9 Jan 2021
    As the maintainer of the Rust bindings that the library used in the article (kube) is backed by, I can confirm that Kubernetes' openapi spec requires a lot of Kubernetes-specific handling to generate a good client than generic openapi generators do not provide.

    See https://github.com/Arnavion/k8s-openapi/blob/master/README.m... for a full description.

    I also confirm that I keep it up-to-date with Kubernetes releases and have been doing so for the ~3 years that it's been around. Not just the minor ones every few months, but even the point ones; these days the latter usually only involves updating the test cases instead of code changes and they're done within a few hours of the upstream release.

spectrum

Posts with mentions or reviews of spectrum. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-10-15.
  • OpenAPI Generator allows generation of API client libraries from OpenAPI Specs
    11 projects | news.ycombinator.com | 15 Oct 2022
    Disclosure: I'm a contributor to the project.

    OpenAPI Spec and auto-generated API clients are very useful when multiple languages need to be supported, like when running a developer program. I've worked at companies that both use OpenAPI Generator for official clients and ones that wrote our own tools for API client SDK generation (with different design philosophy). I've used a number of generators myself to compare and submitted fixes / enhancements to OpenAPI Generator. I used the Go client generator a while back and compared it to others, and recently started using the Crystal one.

    To get the most the project, the following is useful: (a) need to support multiple languages, (b) ability to update the generator's code, both in Java and templates (Mustache or Handlebars), and (c) ability to discuss design in GitHub issues and the Slack channel.

    The nice thing about OpenAPI Spec is that there is an ecosystem of tooling to support it, including rendering API references (HTML and PDF), API explorers (HTML pages to execute API calls), API clients, etc. But there is a learning curve. For writing specs by hand, I use and favor the Stoplight Studio IDE ( https://stoplight.io/studio ). For programmatically analyzing and editing specs, which is especially useful for finalizing auto-generated specs, I've built an OpenAPI Spec SDK library to make this easier ( https://github.com/grokify/spectrum ).

What are some alternatives?

When comparing k8s-openapi and spectrum you can also consider the following projects:

kube - Rust Kubernetes client and controller runtime

smithy - Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.

fusionauth-openapi - FusionAuth OpenAPI client

go - The Go programming language

vcloud-rest-openapi - OpenAPI definitions for vCloud Director's Rest API

openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)

tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...

oapi-codegen - Generate Go client and server boilerplate from OpenAPI 3 specifications

comprehensive-rust - This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust.

m3o - Serverless Micro Services