Because at the time of development there was no REST API yet to retrieve and update content from Drupal, we had to implement a Backbone.sync implementation on top of forms as a transport layer. This clearly is ugly, fugly, doomed to have or cause problems, etc. We should be leveraging Drupal 8's new JSON-LD, but then that needs to have validation support first (we of course don't want to save invalid data).

Comments

I mentioned this on Twitter, but I think this is a D9 issue. There's a lot to unpack when it comes to relying on RDFa and JSON-LD here.

As I mention in the fix rdf issue that you included, the RDFa in Drupal 7 is unreliable. It doesn't work for compound fields such as AddressField and Fivestar. It gives bogus data for some fields which add links to their data, such as Field Collection and Relation. It doesn't work if you use Views or Panels, or if you move fields outside of the entity div using something like hook_page_alter.

So we need to fix this. It is difficult to find people who can fix these issues because you fist need to understand the RDF triple model, which devs don't seem to. You then need to understand the RDFa processing model enough to make sure that you aren't creating brittle RDFa, like using hanging-rel chaining in the wrong place... which very few people in the world do (that's not a jab, I'm pretty sure Manu would agree with that statement).

In addition, we need to implement the JSON-LD. As I mentioned in Two JSON-LDs for Drupal, the data structure we will use for content deployment is different than the one CreateJS needs. CreateJS needs to align with the data in RDFa, which needs to align with external vocabularies like Schema.org.

We have high aspirations for these technologies, but we don't have enough devs digging into the details to make it work in a short timeframe.

Hmmm... so the site schema that was introduced is actually TWO site schemas. Are you suggesting that we include both in the page? FYI, that would actually be impossible to do unless we duplicate content in invisible meta tags since they model things in such a different way.