Skip to content

Commit 51577eb

Browse files
authored
Merge pull request #214 from ipfs/specs-maintainer-protocol
Repo reorg, cleaning up the spider webs
2 parents 9755770 + 1daa09d commit 51577eb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+282
-334
lines changed

public-api/cli/README.md renamed to API_CLI.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
1-
CLI - Command Line Interface
2-
============================
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) CLI API, the IPFS Daemon interface
32

4-
![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square)
3+
**Author(s)**:
4+
- N/A
5+
6+
**Maintainer(s)**:
7+
- N/A
8+
9+
* * *
10+
11+
**Abstract**
12+
13+
TODO
14+
15+
# Table of Contents
16+
17+
TODO
518

619
## Commands
720

public-api/core/README.md renamed to API_CORE.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
1-
Core API
2-
========
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) Core API
32

4-
> The `core` API is the programmatic interface for IPFS, it defines the method signatures.
3+
**Author(s)**:
4+
- N/A
55

6-
# Status ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square)
6+
**Maintainer(s)**:
7+
- N/A
8+
9+
**Abstract**
10+
11+
The `core` API is the programmatic interface for IPFS, it defines the method signatures.
12+
13+
# Table of Contents
14+
15+
TODo
716

817
## Required for compliant IPFS implementation
918

@@ -112,4 +121,4 @@ Core API
112121
- put
113122
- get
114123

115-
# [Interface definition and test suite](https://github.com/ipfs/interface-ipfs-core)
124+
## [Interface definition and test suite](https://github.com/ipfs/interface-ipfs-core)

API_HTTP.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) HTTP API
2+
3+
**Author(s)**:
4+
- N/A
5+
6+
**Maintainer(s)**:
7+
- N/A
8+
9+
* * *
10+
11+
**Abstract**
12+
13+
TODO
14+
15+
# Table of Contents
16+
17+
TODO
18+
19+
## Description
20+
21+
The current spec is auto generated documentation from the Golang implementation of IPFS. Find it at https://github.com/ipfs/http-api-docs

architecture/README.md renamed to ARCHITECTURE.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) IPFS Architecture Overview
2-
====================================================================================================
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) IPFS Architecture Overview
32

4-
Authors:
53

4+
**Authors(s)**:
65
- [Juan Benet](https://github.com/jbenet)
76
- [David Dias](https://github.com/daviddias)
87

9-
Reviewers:
8+
**Maintainer(s)**:
9+
- N/A
1010

1111
* * *
1212

13+
**Abstract**
14+
1315
This spec document defines the IPFS protocol stack, the subsystems, the interfaces, and how it all fits together. It delegates non-interface details to other specs as much as possible. This is meant as a top-level view of the protocol and how the system fits together.
1416

1517
Note, this document is not meant to be an introduction of the concepts in IPFS and is not recommended as a first pass to understanding how IPFS works. For that, please refer to the [IPFS paper](https://github.com/ipfs/papers/raw/master/ipfs-cap2pfs/ipfs-p2p-file-system.pdf).
@@ -81,7 +83,7 @@ IPFS has five layers:
8183
- **routing** - locating peers and objects
8284
- **network** - establishing connections between peers
8385

84-
![](stack.png)
86+
![](img/ipfs-stack.png)
8587

8688
These are briefly described bottom-up.
8789

@@ -171,8 +173,7 @@ The IPFS **naming** layer -- or IPNS -- handles the creation of:
171173
- mutable pointers to objects
172174
- human-readable names
173175

174-
IPNS is based on [SFS](http://en.wikipedia.org/wiki/Self-certifying_File_System). It is a
175-
PKI namespace -- a name is simply the hash of a public key. Whoever controls the private key controls the name. Records are signed by the private key and distributed anywhere (in IPFS, via the routing system). This is an egalitarian way to assign mutable names in the internet at large, without any centralization whatsoever, or certificate authorities.
176+
IPNS is based on [SFS](http://en.wikipedia.org/wiki/Self-certifying_File_System). It is a PKI namespace -- a name is simply the hash of a public key. Whoever controls the private key controls the name. Records are signed by the private key and distributed anywhere (in IPFS, via the routing system). This is an egalitarian way to assign mutable names in the internet at large, without any centralization whatsoever, or certificate authorities.
176177

177178
See more in the namin spec (TODO).
178179

bitswap/README.md renamed to BITSWAP.md

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,27 @@
1-
# Bitswap
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) Bitswap
22

3-
Authors:
3+
**Authors(s)**:
4+
- David Dias
5+
- Jeromy Johnson
6+
- Juan Benet
47

5-
- David Dias
6-
- Jeromy Johnson
7-
- Juan Benet
8+
**Maintainers(s)**:
89

9-
Reviewers:
10+
* * *
1011

11-
> tl;dr;
12-
13-
-----
14-
15-
# Abstract
12+
**Abstract**
1613

1714
Bitswap is the data trading module for IPFS. Its purpose is to request blocks from and send blocks to other peers in the network. Bitswap has two primary jobs:
18-
19-
1. Attempt to acquire blocks from the network that have been requested by the client.
20-
2. Judiciously (though strategically) send blocks in its possession to other peers who want them.
21-
22-
# Status of this spec
23-
24-
![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square)
15+
1. Attempt to acquire blocks from the network that have been requested by the client.
16+
2. Judiciously (though strategically) send blocks in its possession to other peers who want them.
2517

2618
# Organization of this document
2719

28-
- [Introduction](#introduction)
29-
- [Subsystems](#subsystems)
30-
- [Implementation Details](#implementation-details)
31-
- [API Spec](#api-spec)
32-
- [Implementations](#implementations)
20+
- [Introduction](#introduction)
21+
- [Subsystems](#subsystems)
22+
- [Implementation Details](#implementation-details)
23+
- [API Spec](#api-spec)
24+
- [Implementations](#implementations)
3325

3426
# Introduction
3527

@@ -91,7 +83,7 @@ message Message {
9183
bytes prefix = 1; // CID prefix (cid version, multicodec and multihash prefix (type + length)
9284
bytes data = 2;
9385
}
94-
86+
9587
Wantlist wantlist = 1;
9688
optional repeated bytes blocks = 2; // used to send Blocks in bitswap 1.0.0
9789
repeated Block payload = 3; // used to send Blocks in bitswap 1.1.0
@@ -194,7 +186,7 @@ bs.getBlock(multihash, (err, block) => {
194186
// 1) try to fetch from repo
195187
// 2) if not -> ask bitswap
196188
// 2.1) bitswap will cb() once the block is back, once.
197-
// bitswap will write to the repo as well.
189+
// bitswap will write to the repo as well.
198190
})
199191
```
200192

DWEB_ADDRESSING.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) Addressing on the Decentralized Web
2+
3+
**Authors(s)**:
4+
- [Lars Gierth](mailto:[email protected])
5+
6+
**Maintainers(s)**:
7+
-
8+
9+
* * *
10+
11+
**Abstract**
12+
13+
This document is largely incomplete.
14+
15+
16+
# Table of contents:
17+
- Introduction
18+
- The precarious web
19+
- Link competition and link rot
20+
- The addressing rift
21+
- DWeb Addressing
22+
- Namespaces
23+
- /ipfs -- immutable data
24+
- /ipns -- mutable pointers
25+
- Addressing data from other content-addressed systems
26+
- Network addressing
27+
- Interoperability
28+
- DWeb Addressing with HTTP
29+
- ipfs:// and ipns:// URL schemes
30+
- dweb: URI scheme
31+
- Content Security Policy / Origins
32+
- Appendix
33+
- DWeb Maturity Model
34+
- FAQ
35+
- Implementations
36+
- Future Work
37+
- Related work
38+
39+
## Introduction
40+
41+
Location-based addressing is a centralizing vector on the web. It lets links rot and drives copies of content into mutual competition.
42+
43+
This document describes a content-based addressing model which provides permanent links that don't rot and are cryptographically verifiable. The result is a more cooperative, resilient, and performant web.

dex/README.md renamed to IMPORTERS_EXPORTERS.md

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,34 @@
1-
![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) DEX
2-
=============================================================================
3-
4-
Authors:
1+
# ![](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square) Data Importers & Exporters
52

3+
**Authors(s)**:
64
- David Dias
75
- Juan Benet
86

9-
Reviewers:
10-
11-
- n/a
12-
137
* * *
148

15-
# Abstract
9+
**Abstract**
1610

1711
IPFS Data Importing spec describes the several importing mechanisms used by IPFS that can be also be reused by other systems. An importing mechanism is composed by one or more chunkers and data format layouts.
1812

19-
# Status of this spec
20-
2113
Lots of discussions around this topic, some of them here:
2214

2315
- https://github.com/ipfs/notes/issues/204
2416
- https://github.com/ipfs/notes/issues/216
2517
- https://github.com/ipfs/notes/issues/205
2618
- https://github.com/ipfs/notes/issues/144
2719

28-
# Organization of this document
29-
30-
This RFC is organized by chapters described on the *Table of contents* section.
31-
3220
# Table of contents
3321

34-
- [%N%. Introduction]()
35-
- [%N%. Requirements]()
36-
- [%N%. Architecture]()
37-
- [%N%. Interfaces]()
38-
- [%N%. Implementations]()
39-
- [%N%. References]()
22+
- [Introduction]()
23+
- [Requirements]()
24+
- [Architecture]()
25+
- [Interfaces]()
26+
- [Implementations]()
27+
- [References]()
4028

41-
# Introduction
29+
## Introduction
4230

43-
Importing data into IPFS can be done in a variety of ways. These are use-case specific, produce different datastructures, produce different graph topologies, and so on. These are not strictly needed in an IPFS implementation, but definitely make it more useful.
31+
Importing data into IPFS can be done in a variety of ways. These are use-case specific, produce different datastructures, produce different graph topologies, and so on. These are not strictly needed in an IPFS implementation, but definitely make it more useful.
4432

4533
These data importing primitivies are really just tools on top of IPLD, meaning that these can be generic and separate from IPFS itself.
4634

@@ -62,7 +50,7 @@ Essentially, data importing is divided into two parts:
6250

6351
- Have a set of primitives to digest, chunk and parse files, so that different chunkers can be replaced/added without any trouble.
6452

65-
# Requirements
53+
## Requirements
6654

6755
These are a set of requirements (or guidelines) of the expectations that need to be fullfilled for a layout or a splitter:
6856

@@ -76,7 +64,7 @@ These are a set of requirements (or guidelines) of the expectations that need to
7664
- a splitter, once fed with data, should yield chunks to be added to layout or another layout of itself
7765
- an importer is a aggregate of layouts and splitters
7866

79-
# Architecture
67+
## Architecture
8068

8169
```bash
8270
┌───────────┐ ┌──────────┐
@@ -95,15 +83,15 @@ These are a set of requirements (or guidelines) of the expectations that need to
9583
- `layouts or topologies` graph topologies (eg balanced vs trickledag vs ext4, ... etc)
9684
- `importer` is a process that reads in some data (single file, set of files, archive, db, etc), and outputs a dag. may use many chunkers. may use many layouts.
9785

98-
# Interfaces
86+
## Interfaces
9987

10088
#### splitters
10189

10290
#### layout
10391

10492
#### importer
10593

106-
# Implementations
94+
## Implementations
10795

10896
#### chunker
10997

@@ -113,5 +101,4 @@ These are a set of requirements (or guidelines) of the expectations that need to
113101

114102
#### importer
115103

116-
# References
117-
104+
## References

0 commit comments

Comments
 (0)