# IPLD Schemas Goals
- Provide a reasonable, easy to use, general type system for declaring useful properties about data.
- Compose nicely over the IPLD Data Model (opens new window): Schemas should be usable with any data format you can build an IPLD Codec (opens new window) for.
- Be efficient to verify: predictable; roughly linear in the size of the data and Schema; and absolutely not turing complete.
- Be language-agnostic: many compatible implementations of the Schema tooling should exist, as well as bindings for many languages.
- Assist rather than obstruct migration: we expect to be working with existing data; we need to work well on this case.
- Be a tool that adds value in collaboration and documentation: Schemas should provide a natural place for API documentation, and be a reasonable design literature.
In total: Make developing decentralized & distributed applications easier, clearer, and more robust.