namm-standards / namm-json

This is a the place where we will work to port our xml/xsd standards to JSON-Schema
5 stars 3 forks source link

other types of data structures #2

Open ttdonovan opened 5 years ago

ttdonovan commented 5 years ago

This is a good start to moving away from XML/XSD - justing wondering if there might be value in looking into Protocol Buffers. My concern with JSON is the loss of a schema data structure (no XSD). The use of Protocol Buffers would allow for more code generation options and provide guidance on the data structures. I believe most of the libraries provide options for serializing/deserializing in both binary and JSON. Other data structures to keep in mind are CBOR and BSON. If the goal of having a NAMM standard to transmit data across systems one consideration to keep in mind would be message sizes. If the NAMM Standards wish to use a schema-less data structure I would be interested in exploring options for supportive documentation generation.

References:

Edited: revising my statement about schema-less I see in the JSON a link to http://json-schema.org/

dan-kessler commented 5 years ago

We are expecting that we can get equivalent (or exceed our current XSD) schema data rules with JSON-Schema. JSON seems to be widely used and would appear to have less barrier to entry than XML ( and likely the other formats you mention above).

On the other hand, a quick glance at 'protocol-buffers' looks pretty good.

We are going to create JSON-Schema version of each of our XSDs ( or a document set that will contain essentially the same objects). Stay tuned...

ttdonovan commented 5 years ago

Thank you for the reply. I do agree that JSON schema would be easier to work with as a developer and I'll keep a watch for the other XSDs to JSON-Schema.

As an experiment I started drafting a version of the schema in Google Protocol Buffers. There were areas in the schema that I diverged from v2015 JSON. The protocol buffers might be to much of a divergence or lead to awkward implementation to fit v2015 as defined. I think there are pros and cons for each but something to keep in mind for future iterations.

https://github.com/sheetmusicplus/namm-json/tree/experiment-protos

https://github.com/namm-standards/namm-json/compare/master...sheetmusicplus:experiment-protos

dan-kessler commented 5 years ago

That looks very interesting. Actually pretty intuitive at first glance.