Skip to content

Commit 2835fb3

Browse files
Matt Zumwaltdaviddias
Matt Zumwalt
authored andcommitted
more info about namespace proliferation
1 parent a515b90 commit 2835fb3

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

addresses-scheme/readme.md

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ The IPFS address scheme is described in [the IPFS whitepaper](https://github.com
77

88
The discussions around `ipfs:` vs. `dweb:` is a confusing one that's been going on since @jbenet published the [IPFS whitepaper](https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf), with a number of other approaches being proposed. That design discussion has been going on for a long time, with many lengthy discussions in github issues.
99

10+
## Competing Goals
11+
1012
There are a few goals tugging against each other:
13+
1114
1. The Noble Goal: Unify the filesystem-database-web rift
12-
2. The Quick Fix: Conform to URL orthodoxy
15+
2. The Goal of a Quick Fix: Conform to URL orthodoxy
1316
3. The Design Goal: Create Addresses that People will Love Using
1417
4. The Clean-Namespaces Goal: Avoid polluting the scheme namespace with multiple schemes
1518

@@ -18,11 +21,11 @@ This has led to some competing approaches -- mainly the 'dweb:' Approach and the
1821
Regardless of which goals and approaches resonate with you, there are a number of important factors that have to be handled by any schema. A number of those factors are collected & discussed in these issues:
1922
https://github.com/ipfs/in-web-browsers/issues?q=is%3Aissue+label%3Aspecs
2023

21-
## The Noble Goal: Unify the filesystem-database-web rift
24+
### The Noble Goal: Unify the filesystem-database-web rift
2225

2326
In short, @jbenet (creator of IPFS) wants to fix a mistake that happened 25-30 years ago and sees this current decision as an inflection point where we either A) use this "decentralization" moment to fix the problem or B) let all these decentralized protocols worsen the problem by going along with the existing momentum. In @gozala's words (voicing the perspective of web browser implementers), "While I think that’s a very noble goal, I think it would be hard to sell for a very pragmatic crowd".
2427

25-
### Unify the filesystem-database-web rift
28+
#### Unify the filesystem-database-web rift
2629

2730
In conversations documented [here](https://github.com/ipfs/in-web-browsers/issues/4), @jbenet and @gozala cover this topic relatively concisely.
2831

@@ -38,23 +41,23 @@ also
3841

3942
> A minor reason is not having to force people to swallow N shemes (ipfs:// ipns:// ipld:// and counting), and instead use one that muxes.
4043
41-
### ... but don't let it prevent pragmatism.
44+
#### ... but don't let it prevent pragmatism.
4245

4346
@gozala encouraged pragmatism:
4447
> While I think that’s a very noble goal, I think it would be hard to sell for a very pragmatic crowd like browser vendors. I frequently see standardization process taking specs into least ambitious and most pragmatic direction, I often disagree, but I think often times that’s only way to make progress. Maybe some version of this goal could be articulated in [less] perfectionistic manner and in a more pragmatic one ?
4548
4649
@jbenet agreed to that pragmatism:
4750
> **These goals are secondary in time to getting browser adoption. Meaning that we CAN do things like recommend ipfs:// ipns:// ipld://** IF browser vendors think that it's unlikely to get adoption this way now. We can work on unifying the fs-db-web rift later. **We're not dogmatic, we're pragmatic.** But we want to make sure we push in the right places and try to make as much as we can better.
4851
49-
## The Quick Fix: Conform to URL orthodoxy.
52+
### The Goal of a Quick Fix: Conform to URL orthodoxy.
5053

5154
The short-term fix that people reach for is to create an `ipfs:` schema, as proposed in https://github.com/ipfs/specs/pull/139. This would conform to established habits around the use of URLs.
5255

53-
## The Design Goal: Create Addresses that People will Love Using
56+
### The Design Goal: Create Addresses that People will Love Using
5457

5558
From a design perspective, the challenge is to create a schema that makes intuitive sense, maximizes possibilities, and allows people to identify content with addresses that are reliable, powerful, and pleasant to use.
5659

57-
## The Clean-Namespaces Goal: Avoid polluting the scheme namespace with multiple schemes
60+
### The Clean-Namespaces Goal: Avoid polluting the scheme namespace with multiple schemes
5861

5962
If we do this wrong, the growth of decentralized web technologies will cause a proliferation of schemes that will quickly become unwieldy, will discourage interoperability, and will maintain a high barrier to innovation in the protocol space.
6063

@@ -63,6 +66,11 @@ If we do this wrong, the growth of decentralized web technologies will cause a p
6366
### Strengths of this Approach
6467

6568
_PLEASE HELP FILL THESE_
69+
70+
#### Strength: Prevents Proliferation of Schemes and Namespaces
71+
72+
NOT doing this now effectively shuts down future possibilities by making new namespaces "not worth doing the work of introducing a URL scheme".
73+
6674
#### Strength: Getting away from the `://`
6775
as @lidel [comments](https://github.com/ipfs/specs/pull/153#discussion_r104291285)
6876
> I kinda like this _aesthetic_. No matter what prefix is picked, it looks better than anything with `://`
@@ -74,6 +82,18 @@ as @lidel [comments](https://github.com/ipfs/specs/pull/153#discussion_r10429128
7482
### Criticisms of this Approach
7583
_PLEASE HELP FILL THESE_
7684

85+
#### Criticism: It's not clear how this helps the whole ecosystem
86+
@lidel [comments](https://github.com/ipfs/specs/pull/152#discussion_r104291969)
87+
> I feel it should be explicitly stated in the document if this single scheme aims to be for IPFS ecosystem only, or something that can be adopted by other distributed systems.
88+
>
89+
> If we want to share it with others, eg. Ethereum, Tor Onion Services etc, then I see potential problem with single scheme: who is responsible for muxing when multiple vendors are in play?
90+
Let's say we have: `dweb://ipfs/Qmbar..` and `dweb://foo/buz`. If IPFS browser add-on provides handler for `dweb://`, FOO is unable to handle its own URIs.
91+
We should plan for this now, and have contingency written down..
92+
93+
#### Criticism: Doesn't fit with the way Browsers identify origins
94+
95+
Some current browsers have trouble with the construction: origin = a:/b/c because they expect: `origin = a:/b`, even though that's not in the URI spec.
96+
7797
### Designing the `dweb:` Schema
7898

7999
A draft spec for the `dweb:` schema is under way at https://github.com/ipfs/in-web-browsers/issues/28
@@ -82,6 +102,14 @@ A draft spec for the `dweb:` schema is under way at https://github.com/ipfs/in-w
82102

83103
The short-term fix that people reach for is to create an `ipfs:` schema, as proposed in https://github.com/ipfs/specs/pull/139. That approach seems simple at first, but it's got problems.
84104

105+
### Strengths of this Approach
106+
107+
#### Strength: Fits with Established Conventions & Expectations around URLs
108+
109+
#### Strength: Fits with the way browsers identify origins
110+
111+
When enforcing the Single Origin Policy, some current browsers expect: `origin = a:/b`, even though that's not what the URI spec calls for. The `ipfs:` approach fits with that expectation, with URIs like `ipfs:/<root-hash>/foo/bar`, the origin would be `ipfs:/<root-hash>`
112+
85113
### Criticisms of this Approach
86114

87115
#### Criticism 1: We want IPFS, IPNS and IPLD to be handled by a single schema
@@ -92,6 +120,9 @@ The `dweb:` schema dodges this by treating IPFS and IPNS as namespaces within a
92120
#### Criticism 2: This would worsen the filesystem-database-web rift
93121
See [The Noble Goal: Unify the filesystem-database-web rift](#the-noble-goal-unify-the-filesystem-database-web-rift) above.
94122

123+
#### Criticism 3: Will Prevent Innovation by making it hard to mint new namespaces
124+
If we don't push for the `dweb:` approach it will prevent innovation by making it hard to mint new namespaces on the (content-addressed) web.
125+
95126
## Possible Compromises
96127

97128
### Treat `/ipfs:/` and `/ipfs/` as equivalent

0 commit comments

Comments
 (0)