Connect: A Better gRPC

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • connect-go

    Discontinued Moved to https://github.com/connectrpc/connect-go

  • I don't - I've never actually used flatbuffers. There are two pieces of code you'll want (if possible):

    1. A `connect.Codec` implementation. I think it'd look almost the same as our Protobuf codec [0], but you'd use `FlatbuffersCodec.Marshal` and `FlatbuffersCodec.Unmarshal` (from github.com/google/flatbuffers/go). You _must_ have a `Codec`, but it looks like it should be pretty quick.

    2. Ideally, you'd have a standalone program to parse your Flatbuffer schema and produce Connect code. The output would probably be very similar to `protoc-gen-connect-go`'s [1]. This isn't required, but it's a nice quality of life improvement (check out [1] to see the kind of conveniences it adds). With Protobuf, you'd do this via a `protoc` plugin and you wouldn't need to parse the schema yourself. From a quick look, I don't think `flatc` supports plugins at all - so maybe you'd either skip this step or put in the effort to parse the schema yourself?

    [0]: https://github.com/bufbuild/connect-go/blob/main/codec.go#L5...

    [1]: https://github.com/bufbuild/connect-go/blob/main/internal/ge...

  • gRPC

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

  • It’s something new every release. Current is golazo, previous was gravity. https://github.com/grpc/grpc/releases

    They use this to pad the release notes so they don’t have to comprehensively document the behavior changes.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • ts-proto

    An idiomatic protobuf generator for TypeScript

  • Curious to see their typescript implementation and how it compares with https://github.com/stephenh/ts-proto which works great for grpc-web.

  • twirp

    A simple RPC framework with protobuf service definitions

  • I think another differentiator is support for streaming. Tbh I am shocked at the number of folks that use streaming, but alas.

    It was the #3 issue opened on twirp repository, but they never settled on a solution.

    https://github.com/twitchtv/twirp/issues/3

    One super underrated feature Connect offers for Go devs is access to the request/response headers. No more plumbing incoming/outgoing context :phew:

  • protobuf-es

    Protocol Buffers for ECMAScript. The only JavaScript Protobuf library that is fully-compliant with Protobuf conformance tests.

  • protobuf-ts

    Protobuf and RPC for TypeScript

  • And there's also this which is by the same author but came before it: https://github.com/timostamm/protobuf-ts

    The latter has code-generation for services and has various transport packages for twirp, grpc, and grpc-web.

  • go-micro

    A Go microservices framework

  • Good luck Buf! I spent many years building an RPC framework around gRPC called Go Micro (https://github.com/asim/go-micro). I think one of the biggest issues was just resources to see it through but also my own desire to move beyond it towards a platform and services. I hope you're able to bring some sense to the gRPC world. It's mostly a networking library. The ecosystem around it is too low level. If anything abstractions and more developer friendly tooling would be a massive improvement. No one needs to see or touch the guts of gRPC. I wish I didn't have to peak into the internals but unfortunately that's what it takes to integrate it elsewhere.

    I hope you build something awesome for the community!

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • connect-go

    Simple, reliable, interoperable. A better gRPC. (by wallyqs)

  • Put out an example of using it to switch the transport so that it is over NATS instead, this works now thanks to the interop with net/http package: https://github.com/wallyqs/connect-go/commit/2e744ec4bf7ce31...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts