So I've been working on a #golang tool that will take in a JSON-LD RDF specification (like the #ActivityStreams one here :https://github.com/gobengo/activitystreams2-spec-scraped/blob/master/data/activitystreams-vocabulary/1528589057.json) and spit out generated Go code that automatically generates the static types for it.
The intent is, ActivityStreams extensions would be able to host this specification as their @context reference, people could use this tool to auto-generate the extension for their Go code, and then build their apps with it.
The intent is that the rest of the go-fed library would then be able to automatically pass-through these static types as needed (I am big on avoiding the reflection penalty, and keeping everything compile-time-safe). So folks building their #ActivityPub federated apps in Go on top of go-fed will be able to always pick and choose which extensions to support, and always skip to the "build the app" step instead of the "roll my own ActivityPub implementation" step.
But at the end of the day, I want it to get to the point where if the Go code compiles, the app is guaranteed conforming to the vocabulary and extensions specification (the "data" part of #ActivityPub).
Then if the app happens to use the rest of the go-fed part for the actual AP behaviors, it comes with my Guarantee Seal of Approval (valued at one bagoozillitillion USD) that the "behavior" part is also to-spec. Unfortunately, a lot of that is run-time correctness.