|
1 |
| -# Specifications |
2 |
| - |
3 |
| - |
| 1 | +# IPFS Protocol Specifications |
4 | 2 |
|
5 | 3 | [](http://ipn.io)
|
6 | 4 | [](http://ipfs.io/)
|
7 | 5 | [](http://webchat.freenode.net/?channels=%23ipfs)
|
8 |
| -[](https://github.com/RichardLitt/standard-readme) |
9 | 6 |
|
10 | 7 | > This repository contains the specs for the IPFS Protocol and associated subsystems.
|
11 | 8 |
|
12 |
| -Some day we will hopefully transform these specs into RFCs. For now, they assume a high level of familiarity with the concepts. |
13 |
| - |
14 |
| -## Table of Contents |
15 |
| - |
16 |
| -- [Work In Progress](#work-in-progress) |
17 |
| -- [Specs](#specs) |
18 |
| - - [High level Architecture of IPFS](/architecture) |
19 |
| - - [IPLD](https://github.com/ipld/specs) |
20 |
| - - [libp2p](https://github.com/libp2p/specs) |
21 |
| - - [IPRS](https://github.com/libp2p/specs/blob/master/IPRS.md) |
22 |
| - - [bitswap](/bitswap) |
23 |
| - - [Files API and MFS](/files) |
24 |
| - - [Public API (CLI, HTTP and Core)](/public-api) |
25 |
| - - [DEX - Importers and Exporters](/dex) |
26 |
| - - [keychain](/keychain) |
27 |
| - - [keystore](/keystore) |
28 |
| - - [Repo](/repo) |
29 |
| - - [Protocol Driven Development](https://github.com/ipfs/pdd) |
30 |
| -- [Contribute](#contribute) |
31 |
| -- [License](#license) |
| 9 | +## Badges and spec lifecycle |
32 | 10 |
|
33 |
| -## Work In Progress |
34 |
| - |
35 |
| -**Specs are not finished yet. We use the following tag system to identify their state:** |
| 11 | +We use the following label system to identify the state of each spec: |
36 | 12 |
|
37 | 13 | -  - this spec is a work-in-progress, it is likely not even complete.
|
38 | 14 | -  - this spec is a rough draft and will likely change substantially.
|
39 | 15 | -  - this spec is believed to be close to final. Minor changes only.
|
40 | 16 | -  - this spec is likely to improve, but not change fundamentally.
|
41 | 17 | -  - this spec will not change.
|
42 | 18 |
|
43 |
| -Nothing in this spec repository is `permanent` yet. The most important pieces of IPFS are now `reliable` or `stable`. Many subsystems remain as `draft`. |
44 |
| - |
45 |
| -Note that, as in many IPFS repositories, most of the work is happening in [the issues](https://github.com/ipfs/specs/issues/) or in [active pull requests](https://github.com/ipfs/specs/pulls/). Go take a look! |
| 19 | +Nothing in this spec repository is `permanent` yet. The most important pieces of IPFS are now `reliable` or `stable`. Many subsystems remain as `draft`. Note that, as in many IPFS repositories, most of the work is happening in [the issues](https://github.com/ipfs/specs/issues/) or in [active pull requests](https://github.com/ipfs/specs/pulls/). Go take a look! |
46 | 20 |
|
47 |
| -## Specs |
| 21 | +## Index |
48 | 22 |
|
49 | 23 | The specs contained in this repository are:
|
50 | 24 |
|
51 |
| -**IPFS Protocol:** |
52 |
| -- [protocol](/architecture) - the top-level spec and the stack |
53 |
| -- [overviews](/overviews) - quick overviews of the various parts of IPFS |
54 |
| - |
55 |
| -**Networking layer:** |
56 |
| -- [libp2p](https://github.com/libp2p/specs) - libp2p is a modular and extensible network stack, built and use by IPFS, but that it can be reused as a standalone project. Covers: |
57 |
| - - network - the network layer spec |
58 |
| - - routing - the routing layer spec |
59 |
| - - kademlia - Kademlia DHT |
60 |
| - - relay - the relay protocol |
61 |
| - - dnssd - mDNS for local area networks |
62 |
| - - snr - supernode delegated routing |
63 |
| - - multirouter - combines multiple others |
64 |
| - |
65 |
| -**Records, Naming and Record Systems:** |
66 |
| -- [IPRS](https://github.com/libp2p/specs/blob/master/IPRS.md) - InterPlanetary Record System |
67 |
| -- [IPNS](/naming) - InterPlanetary Naming System |
68 |
| - |
69 |
| -**Data Structures and formats:** |
70 |
| -- [IPLD](https://github.com/ipld/spec) - InterPlanetary Linked Data. |
71 |
| -- [unixfs](/unixfs) |
72 |
| -- [multiformats](http://github.com/multiformats/multiformats) |
73 |
| - - [multihash](https://github.com/multiformats/multihash) - self-describing hash digest format. |
74 |
| - - [multiaddr](https://github.com/multiformats/multiaddr) - self-describing addressing format. |
75 |
| - - [multicodec](https://github.com/multiformats/multicodec) - self-describing protocol/encoding streams (note: a file is a stream). |
76 |
| - - [multistream](https://github.com/multiformats/multistream) - multistream is a format -- or simple protocol -- for disambiguating, and layering streams. It is extremely simple. |
77 |
| - |
78 |
| -**Files / Mutable File System:** |
79 |
| -- [Files Impl and API](/files) - Virtual File System interface, unix like, on top of the MerkleDAG |
80 |
| - |
81 |
| -**Block Exchanges:** |
82 |
| -- [bitswap](/bitswap) - BitTorrent-inspired exchange |
83 |
| - |
84 |
| -**Specific Internal Components:** |
85 |
| -- Blocks and Block Service |
86 |
| -- DAG and DAG Service |
87 |
| -- Data Importing |
88 |
| -- [Repo](/repo) - IPFS node local repository spec |
89 |
| - |
90 |
| -**Public APIs:** |
91 |
| -- [Core API](/public-api/core) - IPFS programatic interface |
92 |
| -- [HTTP API](https://github.com/ipfs/http-api-spec) - IPFS HTTP API specification |
93 |
| -- [CLI](/public-api/cli) - Command Line Interface |
94 |
| - |
95 |
| -**Key Management:** |
96 |
| -- [KeyStore](/keystore) - Key management on IPFS |
97 |
| -- [KeyChain](/keychain) - Distribution of cryptographic Artificats |
98 |
| - |
99 |
| -**Other/related/included:** |
100 |
| -- [PDD](https://github.com/ipfs/pdd) - Protocol Driven Development |
| 25 | +- **IPFS Protocol:** |
| 26 | + - [protocol](/architecture) - the top-level spec and the stack |
| 27 | + - [overviews](/overviews) - quick overviews of the various parts of IPFS |
| 28 | +- **User Interface (aka Public APIs):** |
| 29 | + - [Core API](/public-api/core) - IPFS programatic interface |
| 30 | + - [HTTP API](https://github.com/ipfs/http-api-spec) - IPFS HTTP API specification |
| 31 | + - [CLI](/public-api/cli) - Command Line Interface |
| 32 | +- **Networking layer:** |
| 33 | + - [libp2p](https://github.com/libp2p/specs) - libp2p is a modular and extensible network stack, built and use by IPFS, but that it can be reused as a standalone project. Covers: |
| 34 | + - network - the network layer spec |
| 35 | + - routing - the routing layer spec |
| 36 | + - kademlia - Kademlia DHT |
| 37 | + - relay - the relay protocol |
| 38 | + - dnssd - mDNS for local area networks |
| 39 | + - snr - supernode delegated routing |
| 40 | + - multirouter - combines multiple others |
| 41 | +- **Records, Naming and Record Systems:** |
| 42 | + - [IPRS](https://github.com/libp2p/specs/blob/master/IPRS.md) - InterPlanetary Record System |
| 43 | + - [IPNS](/naming) - InterPlanetary Naming System |
| 44 | +- **Data Structures and formats:** |
| 45 | + - [IPLD](https://github.com/ipld/spec) - InterPlanetary Linked Data. |
| 46 | + - [unixfs](/unixfs) |
| 47 | + - [multiformats](http://github.com/multiformats/multiformats) |
| 48 | + - [multihash](https://github.com/multiformats/multihash) - self-describing hash digest format. |
| 49 | + - [multiaddr](https://github.com/multiformats/multiaddr) - self-describing addressing format. |
| 50 | + - [multicodec](https://github.com/multiformats/multicodec) - self-describing protocol/encoding streams (note: a file is a stream). |
| 51 | + - [multistream](https://github.com/multiformats/multistream) - multistream is a format -- or simple protocol -- for disambiguating, and layering streams. It is extremely simple. |
| 52 | +- **Files / Mutable File System:** |
| 53 | + - [Files Impl and API](/files) - Virtual File System interface, unix like, on top of the MerkleDAG |
| 54 | +- **Block Exchanges:** |
| 55 | + - [bitswap](/bitswap) - BitTorrent-inspired exchange |
| 56 | +- **Specific Internal Components:** |
| 57 | + - Blocks and Block Service |
| 58 | + - DAG and DAG Service |
| 59 | + - Data Importing |
| 60 | + - [Repo](/repo) - IPFS node local repository spec |
| 61 | +- **Key Management:** |
| 62 | + - [KeyStore](/keystore) - Key management on IPFS |
| 63 | + - [KeyChain](/keychain) - Distribution of cryptographic Artificats |
| 64 | +- **Other/related/included:** |
| 65 | + - [PDD](https://github.com/ipfs/pdd) - Protocol Driven Development |
101 | 66 |
|
102 | 67 | ## Contribute
|
103 | 68 |
|
104 |
| -Suggestions, contributions, criticisms are welcome. Though please make sure to familiarize yourself deeply with IPFS, the models it adopts, and the principles it follows. |
| 69 | +[](https://github.com/ipfs/community/blob/master/contributing.md) |
105 | 70 |
|
| 71 | +Suggestions, contributions, criticisms are welcome. Though please make sure to familiarize yourself deeply with IPFS, the models it adopts, and the principles it follows. |
106 | 72 | Please be aware that specs are really hard to design by committee. Treat this space like you would the workshop of an artist. Please suggest improvements, but please don't be disappointed if we say no to something. What we leave out is often more important than what we add in.
|
107 |
| - |
108 | 73 | Feel free to join in. All welcome. Open an [issue](https://github.com/ipfs/specs/issues)!
|
109 |
| - |
110 | 74 | This repository falls under the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
|
111 |
| - |
112 |
| -[](https://github.com/ipfs/community/blob/master/contributing.md) |
113 |
| - |
114 |
| -## License |
115 |
| - |
116 |
| -TBD. See https://github.com/ipfs/specs/issues/137. |
0 commit comments