Go-Fed: Past, Present, and Future

Thank you so much for creating this talk. I really enjoyed watching it. I am really charmed by how well the go-fed library has been put together and the flexibility it offers in building AP social apps on top of it.

I especially like the part where you can support arbitrary vocabularies that are modeled on top of the AS / AP vocabs, and which are defined in JSON-LD themself using a subset of the OWL2 Web Ontology language. Then do codegen based on that and get strongly-typed Golang interface types to work from.

I would like to know more about 2 related aspects to this:

  • Vocab plugin extensions in a go-fed app, maybe dynamically added (plugin marketplace)
  • The future: Federating Schemas/Behavior-Capabilities (going beyond FEDERATION.md)

Vocab plugins

I guess with the current setup one has to know beforehand what vocabs the app should support, and then at compilation time everything is packaged in the application release. Changes to vocab? —> Implement, codegen, add behavior, new release version.

I am fine with this flow for the time being, but in the future I might be interested in more of an openEngiadina (@pukkamustard) approach with a federated platform that supports arbitrary Linked Data vocabs that are continually added/extended. Each vocab would be in its self-contained plugin together with behavior + UI.

Now, I am not a Go dev yet, but I believe plugins is not Go’s strongest point (correct me if I’m wrong). There is this Go plugin system since v1.8. For dynamic plugins Traefik implemented their own Go interpreter called Yaegi.

About the Traefik implementation HN commenter sagichmal said:

“Go is basically incompatible with any kind of plugin-like dynamic linking. There are basically two reasonable models for doing something like plugins: the HashiCorp model, where plugins are actually separate processes that do some kind of intra-process communication with the host; or the Caddy model, where you select which plugins you want when downloading the binary, and they’re built-in at compile time.”

@cjs I wonder if you have any thoughts on this wrt go-fed and go-fed future. Personally - given what you already have - a plugin infrastructure seems like a great feature for go-fed project.

Future: Federating AP extension schemas

In your APConf presentation at 35:15 you talk about federating the vocabulary schema’s themselves. This is mega interesting and important for Fediverse future, so I dediced to dedicate to a separate topic. See: Future: Federating AP extension schemas