+++ base_url = "/" title = "Multiformats" stars = "multiformats/multiformats" +++
Every choice in computing has a tradeoff. This includes formats, algorithms, encodings, and so on. And even with a great deal of planning, decisions may lead to breaking changes down the road, or to solutions which are no longer optimal. Allowing systems to evolve and grow is important.
The Multiformats Project is a collection of protocols which aim to future-proof systems, today. They do this mainly by enhancing format values with self-description. This allows interoperability, protocol agility, and helps us avoid lock in.
The self-describing aspects of the protocols have a few stipulations:
- They MUST be in-band (with the value); not out-of-band (in context).
- They MUST avoid lock-in and promote extensibility.
- They MUST be compact and have a binary-packed representation.
- They MUST have a human-readable representation.
The Multiformats Project describes a series of protocols. Currently, the following protocols exist:
- multiaddr (WIP) - self-describing network addresses
- multibase (WIP) - self-describing base encodings
- multicodec - self-describing serialization
- multihash - self-describing hashes
Each of the projects has its list of implementations in various languages.
Also, some protocols are deprecated or frozen:
- multigram (FROZEN) - self-describing packet network protocols
- multistream (DEPRECATED) - self-describing stream network protocols
Several of the multiformats have stable specs and stable implementations. We're are working on the others. We prioritize their usage as soon as possible, as what they offer -- protocol interoperability and future-proofing -- has real-world consequences today.
Towards that end, we are encouraging improvements to WIP protocols, and implementations of all. Please contribute to the projects on GitHub.
Multiformats is the name for the organization, but it can also be used to refer to protocols; for instance, in the sentence "Use one of the multiformats". Formats is interchangeable with protocols, here. We try to capitalize Multiformats when it refers to the organization, on GitHub.
The Multiformats project began through the IPFS Project. It is used extensively in projects like
- IPFS - an open system to manage data without a central server.
- CIDs - a self-describing content-addressed identifier scheme for distributed systems, used to address files in IPFS and systems interoperable with it, as well as in other systems like IPLD, where it is the primary way of expressing links between documents.
- libp2p - a modular network library for peer-to-peer protocols.
- IPLD - a set of standards and implementations for creating decentralized data-structures that are universally addressable and linkable.
- (add yours here)
The Multiformats Project is an Open Source software project. It is built by a large community of contributors. Please join us on GitHub or Matrix to request features, file bugs, contribute code, improve documentation, and ask questions. We have a very open and welcoming community.
- GitHub Project
- Website Repository
- Matrix chatroom (
#multiformats:ipfs.io
) - Code of Conduct
- Contributing Guide