Transit – A format for conveying values between different languages
I really think the future is schema-based.The evolution of technologies goes something like this:1. Generation 1 is statically typed / schemaful because it's principled and and offers performance benefits.2. Everyone recoils in horror at how complicated and over-designed generation 1 is.  Generation 2 is dynamically typed / schemaless, and conventional wisdom becomes that this is generally more programmer-friendly.3. The drawbacks of schemaless become more clear (annoying runtime errors, misspelled field names, harder to statically analyze the program/system/etc).  Meanwhile the static typing people have figured out how offer the benefits of static typing without making it feel so complicated.We see this with programming languages:1. C++2. Ruby/Python/PHP/etc.3. Swift, Dart, Go, Rust to some extent, as well as the general trend of inferred types and optional type annotationsOr messaging formats:1. CORBA, ASN.1, XML Schema, SOAP2. JSON3. Protocol Buffers, Cap'n Proto, Avro, ThriftOr databases:1. SQL2. NoSQL3. well, sort of a return to SQL to some extent, it wasn't that bad to begin with given the right tooling.If you are allergic to the idea of schemas, I would be curious to ask:1. isn't most of your data "de facto" schemaful anyway?  Like when you send an API call with JSON, isn't there a standard set of keys that the server is expecting?  Isn't it nicer to actually write down this set of keys and their expected types in a way that a machine can understand, instead of it just being documentation on a web page?2. Is it the schema itself that you are opposed to, or the pain that clunky schema-based technologies have imposed on you?  If importing your schema types was as simple as importing any other library function in your native language, are you still opposed to it?