Skip to content

What this module does not do

Each is a decision rather than a gap, and each is recorded in spec 0001.

It does not own a server

go/transport provides HTTP, gRPC and gateway servers with TLS, body limits, security headers, health endpoints and go/controls lifecycle. This module supplies handlers; schema/serve mounts them.

A registry that reimplemented those would be a second answer to a question the estate has answered once, and the second answer is always the one that falls behind.

It does not check compatibility

Deliberately, and with a shaped gap so the check lands as an addition.

It does not own the URN grammar

That lives in go/cloudevents/urn and is cited here. The two modules are coupled by the format and by nothing else, and writing it in one place is what stops the first divergence producing a message whose schema nobody can resolve.

The grammar is also not tested here, for the same reason. Two test suites over two copies would both stay green while the copies drifted.

It is not content-addressed

A hash would make "changed" unrepresentable, which is stronger than refusing to change it. It would also make every identifier unreadable in a log line, and the identifier is read far more often than it is verified. See Why a published URN cannot change.

It does not generate or lint schemas

Other tools do those. A registry that also generated code would be two products, and the second one would be worse than the tool that only does that.

And it is not obviously needed yet

Worth being honest about. A registry earns its keep when producers and consumers deploy independently and schemas evolve underneath each other; today the estate's services largely publish to themselves.

It exists now because the decisions it constrains — the URN, the immutability refusal — are permanent from the moment a message carries one, and those decisions were being made in go/cloudevents regardless. The implementation could have waited for a second consumer. The format could not.

A dataschema can point at a wiki page in the meantime and become a registry URN later, without the message shape changing.