# JSONTag and postMessage bus [KrakenJS/post-robot](https://github.com/krakenjs/post-robot) is a full fledged postMessage bus protocol, that we might use as-is for a new hope. We might even use [KrakenJS/zoid](https://github.com/krakenjs/zoid) as a complete library to implement decoupled components based on iframes. However, both libraries are fairly complex and have drifted towards a different use-case than what we'd minimally need for a new hope. So instead we might use them as inspiration. In that case, we could also use [JSONTag](https://github.com/poef/jsontag) as the default message format over the bus, since we can then create our own bus implementation. JSONTag has these benefits: - more specific typing/tagging of data - allows internal links, even circular One of the issues with a new hope is that we'd need some form of content negotiation, or better protocol negotiation to make it future proof. Which component understands what protocol. So if you have two components that you want to wire together, which protocol/data types do they have in common? Linked Data seems a natural fit here, because it conveyes meaning in addition to structure. However this only works if the dataset is covered by a well understood ontology. There are many use-cases where this is not the case and you would need an ad-hoc ontology. These will by definition not be understood by other components. If a suitable ontology is found/developed, you'd need to make a bridge/convertor. If we use JSONTag by default, the conversion to an ontology / linked data is an implementation detail. Each component may supply a number of convertors to convert the JSONTag data to a specific linked data ontology. This is something for which you could interrogate the component. The JSONTag default allows for richer data exchange than JSON, without much extra effort. There is a lot less of a learning cliff than by forcing linked data by default.