Skip to content

[proposal] Move gRPC-zero to Quarkus core #51420

@andreaTP

Description

@andreaTP

Description

With this issue, I’d like to propose continuing the effort started with grpc-zero, and replacing the current default implementation of GrpcCodeGen.

As a quick recap, grpc-zero works by compiling official protobuf sources(C++) to Wasm, and then from Wasm to Java bytecode using Chicory. This guarantees a 1:1 behavioral match without requiring architecture or OS specific binaries.

Key advantages:

  • No native dependencies (for example, this section becomes obsolete)
  • A small, self-contained build-time dependency

Implementation ideas

Possible approaches:

  1. Keep the current implementation available behind a legacy flag
  • Pros:
    • Minimal breaking changes
    • Straightforward backward compatibility for users
  • Cons:
    • Both implementations remain on the classpath, so we cannot remove the large transitive dependencies required by the current implementation significantly reducing the benefits of the new approach.
  1. Move the current implementation to a separate -legacy module
  • Pros:
    • New users benefit from the new setup by default
  • Cons:
    • Double maintenance
    • Potentially more complex Maven setup to run integration tests across both implementations
  1. Move the current implementation to a Quarkiverse repository and fully replace it with grpc-zero
  • Pros:
    • Reduced maintenance
    • Clear forward direction
  • Cons:
    • The most breaking option for users who rely on the current implementation. Restoring the previous behavior would require explicitly adding a different Maven dependency.

Additional considerations

grpc-zero currently passes 100% of the gRPC-related integration tests in this repository, with zero changes required aside from swapping in the new codegen.
I’ve received a few reports of successful migrations without issues or additional modifications needed.


I’d like to gather feedback on this proposal.
My preferred path forward is option 3, with the first release targeted for next year to ensure I have maximum availability to address any new issues and assist users during the transition.

cc. @cescoffier @Sanne @jponge @alesj

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions