if you enjoy spec archaeology, you might like looking at the original draft rfcs that @jasnell did in 2014 before as2 came to w3c as part of the opensocial merger. you can see as the revisions progress how the problem of extensibility was handled. james started with urls as properties, then used a subset of jsonld to make it work.
https://datatracker.ietf.org/doc/html/draft-snell-activitystreams-00