Our great sponsors
-
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.
-
protobuf-es
Protocol Buffers for ECMAScript. The only JavaScript Protobuf library that is fully-compliant with Protobuf conformance tests.
-
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.
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...
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.
Curious to see their typescript implementation and how it compares with https://github.com/stephenh/ts-proto which works great for grpc-web.
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:
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.
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!
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...