Go Protobuf: The New Opaque API

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

CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. Protobuf

    Protocol Buffers - Google's data interchange format

    When I was at Google around 2016, there was a significant push to convince folks that the proto3 implicit presence was superior to explicit presence.

    Is there a design doc with the rationale for switching back to explicit presence for Edition 2023?

    The closest docs I've found are https://buf.build/blog/protobuf-editions-are-here and https://github.com/protocolbuffers/protobuf/tree/main/docs/d....

  2. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  3. embedded-jsonrpc

    A JSON-RPC 2.0 server implementation for embedded systems.

    To be honest I kind of find myself drifting away from gRPC/protobuf in my recent projects. I love the idea of an IDL for describing APIs and a great compiler/codegen (protoc) but there's just so many idiosyncrasies baked into gRPC at this point that it often doesn't feel worth it IMO.

    Been increasingly using vscode style JSON-RPC 2.0, sure it's got it's quirks and is far from the most wire/marshaling efficient approach but JSON codecs are ubiquitous and JSON-RPC is trivial to implement. In-fact I recently even wrote a stack allocated, server implementation for microcontrollers in Rust https://github.com/OpenPSG/embedded-jsonrpc.

  4. nesper

    Program the ESP32 with Nim! Wrappers around ESP-IDF API's.

    My favorite serde format is Msgpack since it can be dropped in for an almost one-to-one replacement of JSON. There's also CBOR which is based on MsgPack but has diverged a bit and added and a data definition language too (CDDL).

    Take JSON-RPC and replace JSON with MsgPack for better handling of integer and float types. MsgPack/CBOR are easy to parse in place directly into stack objects too. It's super fast even on embedded. I've been shipping it for years in embedded projects using a Nim implementation for ESP32s (1) and later made a non-allocating version (2). It's also generally easy to convert MsgPack/CBOR to JSON for debugging, etc.

    There's also an IoT focused RPC based on CBOR that's an IETF standard and a time series format (3). The RPC is used a fair bit in some projects.

    1: https://github.com/elcritch/nesper/blob/devel/src/nesper/ser...

  5. fastrpc

    fastrpc

  6. twirp

    A simple RPC framework with protobuf service definitions

  7. FlatBuffers

    FlatBuffers: Memory Efficient Serialization Library

  8. buf

    The best way of working with Protocol Buffers.

    Buf CLI itself is licensed under a permissive Apache 2.0 License [0]. Buf distinguishes a few types of plugins: the most important being local and remote.

    Local plugins are executables installed on your own machine, and Buf places no restrictions on use of those. Since Buf is a compiler, its output cannot be copyrighted (similar to proprietary or GPL licensed compilers). DISCLAIMER: I am not a lawyer. But it is my understanding that if you only use Buf with local plugins, law-wise you should be in the clear.

    Remote plugins are hosted on BSR (Buf Schema Registry) servers [1], which are rate limited. All remote plugins are also available as local plugins if you install them.

    Additionally, BSR also offers hosting of user proto schemas and plugins, and this is where pricing comes in [2].

    [0] https://github.com/bufbuild/buf/blob/main/LICENSE

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. vtprotobuf

    A Protocol Buffers compiler that generates optimized marshaling & unmarshaling Go code for ProtoBuf APIv2

  11. nanopb

    Protocol Buffers with small code size

    Perhaps surprisingly, I think microcontrollers may be a place where Protobufs are not a bad fit. Using something like Nanopb [1] gives you the size/speed/flexibility advantages of protocol buffers without being too heavyweight. It’ll be a bit slower than your custom binary protocol, but it comes with quite a few advantages, depending on the context.

    [1] https://github.com/nanopb/nanopb

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

  • gRPC: The Bad Parts

    14 projects | news.ycombinator.com | 27 Jun 2024
  • Code generation for REST inter service communication?

    1 project | /r/microservices | 4 Jul 2023
  • How do I provide bot RPC and REST endpoints?

    3 projects | /r/golang | 22 May 2023
  • Reasons to use gRPC/Protobuf?

    3 projects | /r/golang | 30 Apr 2023
  • Show HN: ProtoCURL, a Curl for Protobuf

    4 projects | news.ycombinator.com | 20 Feb 2023

Did you know that Go is
the 4th most popular programming language
based on number of references?