Protobufs are also a fun place to look for how much debate people will get into regarding required versus optional fields. Your post is taking an implicit "everything is optional" view. But, it does allow you to be stricter.
Common Lisp Object System also touched on all of these ideas years ago.
Re:Types as Interfaces
by smackmybishop on Tuesday July 23, 2024 @06:32PM
(#41051684)
Everything has been `optional` for about a decade.
> The option to set a field to required is absent in proto3 and strongly discouraged in proto2.
If you can upgrade all the data then you don’t need to worry about versioning,
Or you can do it like HTTP headers and hope for the best.