Our specifications follow our design philosophy:
- Simplicity: seek zen-like simplicity in which there is nothing to add and nothing to take away.
- Extensibility: design for extensibility and customisation. This makes hard things possible and allows for future evolution -- nothing we build will be perfect.
- Human-editable and machine-usable: specs should preserve human readability and editability whilst making machine-use easy.
- Reuse: reuse and build on existing standards and formats wherever possible.
- Cross technology: support a broad range of languages, technologies and infrastructures -- avoid being tied to any one specific system.
This philosophy is itself based on the overall design principles of the Frictionless Data project:
- Focused: We have a sharp focus on one part of the data chain, one specific feature – packaging – and a few specific types of data (e.g. tabular).
- Web Oriented: We build for the web using formats that are web "native" such as JSON, work naturally with HTTP such as plain text CSVs (which stream).
- Distributed: we design for a distributed ecosystem with no centralized, single point of failure or dependence.
- Open: Anyone should be able to freely and openly use and reuse what we build. Our community is open to everyone.
- Existing Tooling: Integrate as easily as possible with existing tools both by building integrations and designing for direct use – for example we like CSV because everyone has a tool that can access CSV.
- Simple, Lightweight: Add the minimum, do the least required, keep it simple. For example, use the most basic formats, require only the most essential metadata, data should have nothing extraneous.