Technology Principles¶
- Provide a good suite of well-specified common functionality in databases and data science applications.
- Make it easy for users to privately or publicly extend the representation to support specialized/custom operations.
- Produce something that is language agnostic and requires minimal work to start developing against in a new language.
- Drive towards a common format that avoids specialization for single favorite producer or consumer.
- Establish clear delineation between specifications that MUST be respected to and those that can be optionally ignored.
- Establish a forgiving compatibility approach and versioning scheme that supports cross-version compatibility in maximum number of cases.
- Minimize the need for consumer intelligence by excluding concepts like overloading, type coercion, implicit casting, field name handling, etc. (Note: this is weak and should be better stated.)
- Decomposability/severability: A particular producer or consumer should be able to produce or consume only a subset of the specification and interact well with any other Substrait system as long the specific operations requested fit within the subset of specification supported by the counter system.