- IPFS is a suite of specifications and tools that are defined by two key characteristics: content-addressing and
- transport-agnosticity. This document provides context and details about these characteristics. In doing so it defines what
- is or is not an IPFS implementation.
-
- The most versatile form of IPFS Gateway is a Path Gateway. It exposes namespaces like /ipfs/ and
- /ipns/ under an HTTP server root and provides basic primitives for integrating IPFS resources
- within the existing HTTP stack.
-
- Trustless Gateways are a minimal subset of Path Gateways
- that allow light IPFS clients to retrieve data behind a CID and verify its integrity without delegating any
- trust to the gateway itself.
-
- Subdomain Gateways are an extension of Path Gateways that
- enable website hosting isolated per CID/name, while remaining compatible with web browsers relative pathing and
- the security model of the web.
-
- The Redirects File specification is an extension of the Subdomain Gateway and DNSLink Gateway specifications that
- enables URL redirects or rewrites by adding redirect rules to a0 file stored underneath the root CID of a web
- site.
-
- Specifies the format and system used to create and maintain specifications for
- the interplanetary stack.
-
-
diff --git a/src/architecture/index.html b/src/architecture/index.html
index 1a6e69864..e03e08161 100644
--- a/src/architecture/index.html
+++ b/src/architecture/index.html
@@ -8,7 +8,7 @@
{% include 'header.html' %}
- {% include 'specs/architecture.html' %}
+ {% include 'list.html', posts: collections.architecture %}
{% include 'footer.html' %}
diff --git a/src/architecture/principles.md b/src/architecture/principles.md
index 1deb0fe3d..fdca4c278 100644
--- a/src/architecture/principles.md
+++ b/src/architecture/principles.md
@@ -1,4 +1,11 @@
---
+title: IPFS Principles
+description: >
+ IPFS is a suite of specifications and tools that are defined by two key characteristics: content-addressing and
+ transport-agnosticity. This document provides context and details about these characteristics. In doing so it defines what
+ is or is not an IPFS implementation.
+date: 2023-03-28
+maturity: reliable
editors:
- name: Robin Berjon
email: robin@berjon.com
@@ -9,12 +16,9 @@ editors:
affiliation:
name: Protocol Labs
url: https://protocol.ai/
-maturity: reliable
-date: 2023-03-28
+tags: ['architecture']
---
-# IPFS Principles
-
The IPFS stack is a suite of specifications and tools that share two key characteristics:
1. Data is addressed by its contents using an extensible verifiability mechanism, and
diff --git a/src/http-gateways/dnslink-gateway.md b/src/http-gateways/dnslink-gateway.md
index 20fbad1e1..12e2e4803 100644
--- a/src/http-gateways/dnslink-gateway.md
+++ b/src/http-gateways/dnslink-gateway.md
@@ -1,15 +1,18 @@
---
-maturity: reliable
+title: DNSLink Gateway Specification
+description: >
+ DNSLink Gateways are an extension of Path Gateways that enable hosting a
+ specific content path under a specific DNS name.
date: 2022-11-09
+maturity: reliable
editors:
- name: Marcin Rataj
github: lidel
- name: Thibault Meunier
github: thibmeu
+tags: ['httpGateways', 'webHttpGateways']
---
-# DNSLink Gateway Specification
-
DNSLink Gateway is an extension of :cite[path-gateway] that enables hosting a
specific content path under a specific DNS name.
diff --git a/src/http-gateways/index.html b/src/http-gateways/index.html
index 32ff601fe..27b633a18 100644
--- a/src/http-gateways/index.html
+++ b/src/http-gateways/index.html
@@ -12,13 +12,13 @@
HTTP
Low-level gateways that expose IPFS resources over HTTP protocol.
- {% include 'specs/http-gateways/http.html' %}
+ {% include 'list.html', posts: collections.lowLevelHttpGateways %}
Web
Designed for website hosting and improved interoperability with web browsers and
origin-based security model.
- {% include 'specs/http-gateways/web.html' %}
+ {% include 'list.html', posts: collections.webHttpGateways %}
{% include 'footer.html' %}
diff --git a/src/http-gateways/path-gateway.md b/src/http-gateways/path-gateway.md
index 6fbbea06b..033a02f1b 100644
--- a/src/http-gateways/path-gateway.md
+++ b/src/http-gateways/path-gateway.md
@@ -1,6 +1,11 @@
---
-maturity: reliable
+title: Path Gateway Specification
+description: >
+ The most versatile form of IPFS Gateway is a Path Gateway. It exposes namespaces, such
+ as /ipfs/ and /ipns/ under an HTTP server root and provides basic primitives for integrating
+ IPFS resources within the existing HTTP stack.
date: 2023-02-27
+maturity: reliable
editors:
- name: Marcin Rataj
github: lidel
@@ -15,6 +20,7 @@ editors:
url: https://hacdias.com/
xref:
- url
+tags: ['httpGateways', 'lowLevelHttpGateways']
---
# Path Gateway Specification
diff --git a/src/http-gateways/subdomain-gateway.md b/src/http-gateways/subdomain-gateway.md
index d1781ea3a..9932527e8 100644
--- a/src/http-gateways/subdomain-gateway.md
+++ b/src/http-gateways/subdomain-gateway.md
@@ -1,6 +1,11 @@
---
-maturity: reliable
+title: Subdomain Gateway Specification
+description: >
+ Subdomain Gateways are an extension of Path Gateways that enable website hosting
+ isolated per CID/name, while remaining compatible with web browsers relative pathing and
+ the security model of the web.
date: 2023-01-28
+maturity: reliable
editors:
- name: Marcin Rataj
github: lidel
@@ -17,10 +22,9 @@ editors:
xref:
- url
- html
+tags: ['httpGateways', 'webHttpGateways']
---
-# Subdomain Gateway Specification
-
Subdomain Gateway is an extension of :cite[path-gateway] that
enables website hosting isolated per CID/name, while remaining compatible with
web browsers relative pathing and security model of the web.
diff --git a/src/http-gateways/trustless-gateway.md b/src/http-gateways/trustless-gateway.md
index ff30b304c..31d254081 100644
--- a/src/http-gateways/trustless-gateway.md
+++ b/src/http-gateways/trustless-gateway.md
@@ -1,13 +1,17 @@
---
-maturity: reliable
+title: Trustless Gateway Specification
+description: >
+ Trustless Gateways are a minimal subset of Path Gateways that allow light IPFS
+ clients to retrieve data behind a CID and verify its integrity without delegating any
+ trust to the gateway itself.
date: 2022-11-09
+maturity: reliable
editors:
- name: Marcin Rataj
github: lidel
+tags: ['httpGateways', 'lowLevelHttpGateways']
---
-# Trustless Gateway Specification
-
Trustless Gateway is a minimal _subset_ of :cite[path-gateway]
that allows light IPFS clients to retrieve data behind a CID and verify its
integrity without delegating any trust to the gateway itself.
diff --git a/src/http-gateways/web-redirects-file.md b/src/http-gateways/web-redirects-file.md
index 57550d541..5b0d02a4a 100644
--- a/src/http-gateways/web-redirects-file.md
+++ b/src/http-gateways/web-redirects-file.md
@@ -1,15 +1,19 @@
---
-maturity: reliable
+title: Web _redirects File Specification
+description: >
+ The Redirects File specification is an extension of the Subdomain Gateway and DNSLink Gateway specifications that
+ enables URL redirects or rewrites by adding redirect rules to a0 file stored underneath the root CID of a web
+ site.
date: 2023-01-28
+maturity: reliable
editors:
- name: Justin Johnson
github: justincjohnson
- name: Marcin Rataj
github: lidel
+tags: ['httpGateways', 'webHttpGateways']
---
-# Web _redirects File Specification
-
The Web Redirects File specification is an extension of the Subdomain Gateway and DNSLink Gateway specifications.
Developers can enable URL redirects or rewrites by adding redirect rules to a file named `_redirects` stored underneath the root CID of their web site.
diff --git a/src/index.html b/src/index.html
index d5e27fc17..4b4154c2c 100644
--- a/src/index.html
+++ b/src/index.html
@@ -68,7 +68,7 @@
These documents define the architectural principles that IPFS is built upon, and can be used as tools to evaluate
implementations and applications of IPFS.
- {% include 'specs/architecture.html' %}
+ {% include 'list.html', posts: collections.architecture %}
project work: what the core values are, what the governance model is, how to produce documents,
etc.
- {% include 'specs/meta.html' %}
+ {% include 'list.html', posts: collections.meta %}
IPFS Gateway acts as a bridge between traditional HTTP clients and IPFS. Through the gateway, users can download files,
directories and other IPLD data stored in IPFS as if they were stored in a traditional web server.
- {% include 'specs/http-gateways/http.html' %}
- {% include 'specs/http-gateways/web.html' %}
+ {% include 'list.html', posts: collections.httpGateways %}
The InterPlanetary Naming System (IPNS) is a naming system responsible for creating, reading and updating mutable pointers to data.
- {% include 'specs/ipns.html' %}
+ {% include 'list.html', posts: collections.ipns %}
diff --git a/src/ipns/index.html b/src/ipns/index.html
index 345b252c0..409356a2e 100644
--- a/src/ipns/index.html
+++ b/src/ipns/index.html
@@ -7,7 +7,7 @@
{% include 'header.html' %}
- {% include 'specs/ipns.html' %}
+ {% include 'list.html', posts: collections.ipns %}
{% include 'footer.html' %}
diff --git a/src/ipns/ipns-pubsub-router.md b/src/ipns/ipns-pubsub-router.md
index 980183d2d..3ce9f058b 100644
--- a/src/ipns/ipns-pubsub-router.md
+++ b/src/ipns/ipns-pubsub-router.md
@@ -1,6 +1,8 @@
---
-maturity: reliable
+title: IPNS PubSub Router
+description: Specifies how to publish and retrieve IPNS records using libp2p PubSub router.
date: 2022-11-09
+maturity: reliable
editors:
- name: Adin Schmahmann
github: aschmahmann
@@ -8,10 +10,9 @@ editors:
github: lidel
xref:
- ipns-record
+tags: ['ipns']
---
-# IPNS PubSub Router
-
:ref[InterPlanetary Naming System (IPNS)] is a naming system responsible for the creating, reading and updating of mutable pointers to data.
IPNS consists of a public/private asymmetric cryptographic key pair, a record type and a protocol.
Part of the protocol involves a routing layer that is used for the distribution and discovery of new or updated IPNS records.
diff --git a/src/ipns/ipns-record.md b/src/ipns/ipns-record.md
index bd890d4b9..75cc9ebbe 100644
--- a/src/ipns/ipns-record.md
+++ b/src/ipns/ipns-record.md
@@ -1,6 +1,10 @@
---
-maturity: reliable
+title: IPNS Record and Protocol
+description: >
+ Specifies the IPNS protocol in a language-agnostic manner, allowing everyone to
+ create a compatible IPNS Record Publisher or Resolver.
date: 2023-02-13
+maturity: reliable
editors:
- name: Vasco Santos
github: vasco-santos
@@ -12,11 +16,10 @@ editors:
github: hacdias
url: https://hacdias.com/
- name: Gus Eggert
- github: guseggert
+ github: guseggert
+tags: ['ipns']
---
-# IPNS Record and Protocol
-
The InterPlanetary File System (IPFS) is powered by content-addressed data, which by nature is immutable: changing an object would change its hash, and consequently its address, making it a different object altogether. However, there are several use cases where we benefit from having mutable data. This is where the InterPlanetary Naming System (IPNS) gets into the equation. IPNS records provide cryptographically verifiable, mutable pointers to objects.
## Introduction
diff --git a/src/meta/code-of-conduct.md b/src/meta/code-of-conduct.md
index c15559fa8..894ba1508 100644
--- a/src/meta/code-of-conduct.md
+++ b/src/meta/code-of-conduct.md
@@ -1,5 +1,8 @@
---
+title: Code of Conduct
+description: The code of conduct that all community participants are held to.
date: 2015-03-19
+maturity: stable
editors:
- name: Juan Benet
github: jbenet
@@ -15,10 +18,9 @@ editors:
github: hsanjuan
- name: Jim Garrison
github: garrison
+tags: ['meta']
---
-# IPFS Community Code of Conduct
-
We believe that our mission is best served in an environment that is friendly, safe, and accepting, and free from
intimidation or harassment. Towards this end, certain behaviors and practices will not be tolerated.
diff --git a/src/meta/index.html b/src/meta/index.html
index 72ec7f3a9..4d808a369 100644
--- a/src/meta/index.html
+++ b/src/meta/index.html
@@ -9,7 +9,7 @@
{% include 'header.html' %}
- {% include 'specs/meta.html' %}
+ {% include 'list.html', posts: collections.meta %}
{% include 'footer.html' %}
diff --git a/src/meta/spec-for-specs.md b/src/meta/spec-for-specs.md
index 618d732bc..0b7b78c3e 100644
--- a/src/meta/spec-for-specs.md
+++ b/src/meta/spec-for-specs.md
@@ -1,5 +1,10 @@
---
+title: Spec for Specs
+description: >
+ Specifies the format and system used to create and maintain specifications for
+ the interplanetary stack.
date: 2023-03-14
+maturity: stable
editors:
- name: Robin Berjon
email: robin@berjon.com
@@ -10,14 +15,12 @@ editors:
affiliation:
name: Protocol Labs
url: https://protocol.ai/
-maturity: stable
xref:
- dom
- test-methodology
+tags: ['meta']
---
-# Spec for Specs
-
This document specifies the format and system used to create and maintain specifications for
the interplanetary stack.
diff --git a/template.html b/template.html
index eaeef008c..1c6fb3faf 100644
--- a/template.html
+++ b/template.html
@@ -4,6 +4,7 @@
+
diff --git a/template.md b/template.md
index f568d21c8..df40b202c 100644
--- a/template.md
+++ b/template.md
@@ -1,16 +1,13 @@
-# Specification Template
-
-![wip](https://img.shields.io/badge/status-wip-orange.svg?style=flat-square)
-
-**Author(s)**:
-- Name
-
-**Maintainer(s)**:
-- Name
-
-* * *
-
-**Abstract**
+---
+title: Specification Title
+description: >
+ Specification short description.
+date: YYYY-MM_DD
+maturity: wip
+editors:
+ - name: Your Name
+ github: yourGitHubHandle
+---
One paragraph explanation of the specification
From 2b52ad1997b29573d3ba167cf96df88968dfd2b6 Mon Sep 17 00:00:00 2001
From: Henrique Dias
Date: Mon, 8 May 2023 15:31:01 +0200
Subject: [PATCH 2/3] feat: add order
---
Makefile | 2 +-
src/_includes/list.html | 3 ++-
src/architecture/principles.md | 1 +
src/http-gateways/dnslink-gateway.md | 1 +
src/http-gateways/path-gateway.md | 1 +
src/http-gateways/subdomain-gateway.md | 1 +
src/http-gateways/trustless-gateway.md | 1 +
src/http-gateways/web-redirects-file.md | 1 +
src/ipns/ipns-pubsub-router.md | 1 +
src/ipns/ipns-record.md | 1 +
src/meta/code-of-conduct.md | 1 +
src/meta/spec-for-specs.md | 1 +
12 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 85868ece0..9fb82d280 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-SPEC_GENERATOR_VER=v1.3.0
+SPEC_GENERATOR_VER=v1.3.1
all: website
diff --git a/src/_includes/list.html b/src/_includes/list.html
index 2ce734543..9888d4b39 100644
--- a/src/_includes/list.html
+++ b/src/_includes/list.html
@@ -1,5 +1,6 @@
- {%- for post in posts -%}
+ {% assign sortedPosts = posts | sortByOrder %}
+ {%- for post in sortedPosts -%}
{%- endfor -%}
diff --git a/src/architecture/principles.md b/src/architecture/principles.md
index fdca4c278..fe4a448b1 100644
--- a/src/architecture/principles.md
+++ b/src/architecture/principles.md
@@ -17,6 +17,7 @@ editors:
name: Protocol Labs
url: https://protocol.ai/
tags: ['architecture']
+order: 0
---
The IPFS stack is a suite of specifications and tools that share two key characteristics:
diff --git a/src/http-gateways/dnslink-gateway.md b/src/http-gateways/dnslink-gateway.md
index 12e2e4803..5a1c2f66f 100644
--- a/src/http-gateways/dnslink-gateway.md
+++ b/src/http-gateways/dnslink-gateway.md
@@ -11,6 +11,7 @@ editors:
- name: Thibault Meunier
github: thibmeu
tags: ['httpGateways', 'webHttpGateways']
+order: 2
---
DNSLink Gateway is an extension of :cite[path-gateway] that enables hosting a
diff --git a/src/http-gateways/path-gateway.md b/src/http-gateways/path-gateway.md
index 033a02f1b..576124a89 100644
--- a/src/http-gateways/path-gateway.md
+++ b/src/http-gateways/path-gateway.md
@@ -21,6 +21,7 @@ editors:
xref:
- url
tags: ['httpGateways', 'lowLevelHttpGateways']
+order: 0
---
# Path Gateway Specification
diff --git a/src/http-gateways/subdomain-gateway.md b/src/http-gateways/subdomain-gateway.md
index 9932527e8..61eecfa18 100644
--- a/src/http-gateways/subdomain-gateway.md
+++ b/src/http-gateways/subdomain-gateway.md
@@ -23,6 +23,7 @@ xref:
- url
- html
tags: ['httpGateways', 'webHttpGateways']
+order: 3
---
Subdomain Gateway is an extension of :cite[path-gateway] that
diff --git a/src/http-gateways/trustless-gateway.md b/src/http-gateways/trustless-gateway.md
index 31d254081..6ce6de92b 100644
--- a/src/http-gateways/trustless-gateway.md
+++ b/src/http-gateways/trustless-gateway.md
@@ -10,6 +10,7 @@ editors:
- name: Marcin Rataj
github: lidel
tags: ['httpGateways', 'lowLevelHttpGateways']
+order: 1
---
Trustless Gateway is a minimal _subset_ of :cite[path-gateway]
diff --git a/src/http-gateways/web-redirects-file.md b/src/http-gateways/web-redirects-file.md
index 5b0d02a4a..f31e247bf 100644
--- a/src/http-gateways/web-redirects-file.md
+++ b/src/http-gateways/web-redirects-file.md
@@ -12,6 +12,7 @@ editors:
- name: Marcin Rataj
github: lidel
tags: ['httpGateways', 'webHttpGateways']
+order: 4
---
The Web Redirects File specification is an extension of the Subdomain Gateway and DNSLink Gateway specifications.
diff --git a/src/ipns/ipns-pubsub-router.md b/src/ipns/ipns-pubsub-router.md
index 3ce9f058b..5105bd499 100644
--- a/src/ipns/ipns-pubsub-router.md
+++ b/src/ipns/ipns-pubsub-router.md
@@ -11,6 +11,7 @@ editors:
xref:
- ipns-record
tags: ['ipns']
+order: 1
---
:ref[InterPlanetary Naming System (IPNS)] is a naming system responsible for the creating, reading and updating of mutable pointers to data.
diff --git a/src/ipns/ipns-record.md b/src/ipns/ipns-record.md
index 75cc9ebbe..821d36651 100644
--- a/src/ipns/ipns-record.md
+++ b/src/ipns/ipns-record.md
@@ -18,6 +18,7 @@ editors:
- name: Gus Eggert
github: guseggert
tags: ['ipns']
+order: 0
---
The InterPlanetary File System (IPFS) is powered by content-addressed data, which by nature is immutable: changing an object would change its hash, and consequently its address, making it a different object altogether. However, there are several use cases where we benefit from having mutable data. This is where the InterPlanetary Naming System (IPNS) gets into the equation. IPNS records provide cryptographically verifiable, mutable pointers to objects.
diff --git a/src/meta/code-of-conduct.md b/src/meta/code-of-conduct.md
index 894ba1508..91610b99d 100644
--- a/src/meta/code-of-conduct.md
+++ b/src/meta/code-of-conduct.md
@@ -19,6 +19,7 @@ editors:
- name: Jim Garrison
github: garrison
tags: ['meta']
+order: 0
---
We believe that our mission is best served in an environment that is friendly, safe, and accepting, and free from
diff --git a/src/meta/spec-for-specs.md b/src/meta/spec-for-specs.md
index 0b7b78c3e..5c6670461 100644
--- a/src/meta/spec-for-specs.md
+++ b/src/meta/spec-for-specs.md
@@ -19,6 +19,7 @@ xref:
- dom
- test-methodology
tags: ['meta']
+order: 1
---
This document specifies the format and system used to create and maintain specifications for
From c6e8718bcedf46d42bac1f3cb964f459e68e537a Mon Sep 17 00:00:00 2001
From: Marcin Rataj
Date: Mon, 8 May 2023 17:12:15 +0200
Subject: [PATCH 3/3] chore(lint): disable MD051/link-fragments
disabling as spec-generator uses more advanced logic for fragments and
validation happens there.
---
.markdownlint.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/.markdownlint.json b/.markdownlint.json
index a2d4d0494..4197e44b0 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -7,5 +7,6 @@
"fenced-code-language": false,
"blanks-around-lists": false,
"single-trailing-newline": false,
+ "link-fragments": false,
"line-length": false
}