[#1] Implement FrostFS Proposals
Signed-off-by: Mikhail Petrov <m.petrov@yadro.com>
This commit is contained in:
parent
5807c420af
commit
7b16d141f7
15 changed files with 101 additions and 335 deletions
|
@ -1,64 +0,0 @@
|
|||
// Colors
|
||||
$gray: #737373;
|
||||
$light-gray: lighten($gray, 52%);
|
||||
$medium-gray: lighten($gray, 35%);
|
||||
$dark-gray: darken($gray, 20%);
|
||||
|
||||
// Font sizes
|
||||
$font-size--primary: 1rem;
|
||||
$font-size--s: 1.15rem;
|
||||
$font-size--m: 1.65rem;
|
||||
$font-size--l: 1.75rem;
|
||||
$font-size--xl: 2rem;
|
||||
$font-size--xxl: 2.25rem;
|
||||
$font-size--xxxl: 3rem;
|
||||
|
||||
// Responsive breakpoints, corresponds to the BootStrap V4 ones
|
||||
$bp-xs: 0;
|
||||
$bp-xs-max: 575px;
|
||||
$bp-sm: 576px;
|
||||
$bp-md: 768px;
|
||||
$bp-lg: 992px;
|
||||
$bp-xl: 1200px;
|
||||
$bp-xxl: 1300px;
|
||||
|
||||
// Embellishments
|
||||
$headerHeight: 6.875rem;
|
||||
$headerHeightLg: 8.125rem;
|
||||
$activeHeaderHeight: 5rem;
|
||||
$footerHeight: 7rem;
|
||||
|
||||
// Z-index of different layers
|
||||
$modal-z: 110;
|
||||
$header-z: 100;
|
||||
$overlay-z: 75;
|
||||
$sidebar-z: 50;
|
||||
$banner-z: 20;
|
||||
$floating-button-z: 15;
|
||||
$glossary-letter-z: 10;
|
||||
$toolbar-button-z: 1;
|
||||
$promotion-z: -1;
|
||||
$footer-z: 0;
|
||||
|
||||
// various manifest constants
|
||||
$border-radius: 4px;
|
||||
$button-border-radius: 28px;
|
||||
$header-link-spacing-xl: 1.875rem;
|
||||
$header-link-spacing-lg: .875rem;
|
||||
$header-link-spacing-xxl: 1.875rem;
|
||||
$section-margin: 3.625rem;
|
||||
$section-margin-md: 7rem;
|
||||
$panel-margin-top: 2.5rem;
|
||||
|
||||
// Container widths
|
||||
$container-s: 750px;
|
||||
$container: 1040px;
|
||||
$container-l: 1440px;
|
||||
|
||||
// popover style
|
||||
$popoverBorderColor: #777777;
|
||||
$popoverShadowColor: #777777;
|
||||
$popoverHeaderBackgroundColor: #{$light-gray};
|
||||
$popoverHeaderTextColor: var(--textColor);
|
||||
$popoverBackgroundColor: var(--backgroundColor);
|
||||
$popoverTextColor: var(--textColor);
|
|
@ -1,52 +0,0 @@
|
|||
@import "constants";
|
||||
|
||||
.glossary {
|
||||
.trampolines {
|
||||
font-size: $font-size--l;
|
||||
text-align: center;
|
||||
padding-top: .8rem;
|
||||
|
||||
@media print {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.entries {
|
||||
.letter {
|
||||
@media screen {
|
||||
dt:target::before {
|
||||
height: calc(#{$headerHeight} + 4.2rem);
|
||||
margin-top: calc(-#{$headerHeight} - 4.2rem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: $font-size--m;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 2.2rem;
|
||||
padding-bottom: .15rem;
|
||||
top: calc(#{$headerHeight} - 1rem);
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
z-index: $glossary-letter-z;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-left: 0;
|
||||
|
||||
dt {
|
||||
list-style-type: none;
|
||||
margin-bottom: 0;
|
||||
margin-top: .9rem;
|
||||
margin-left: 0;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
dd {
|
||||
list-style-type: none;
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,101 +0,0 @@
|
|||
@import "constants";
|
||||
|
||||
.popover {
|
||||
display: none;
|
||||
z-index: $overlay-z;
|
||||
color: $popoverTextColor;
|
||||
background-color: $popoverBackgroundColor;
|
||||
border-radius: $border-radius;
|
||||
border: 1px solid $popoverBorderColor;
|
||||
box-shadow: 3px 3px 8px $popoverShadowColor, -3px -3px 8px $popoverShadowColor;
|
||||
|
||||
max-width: 276px;
|
||||
@media (min-width: $bp-md) {
|
||||
max-width: 350px;
|
||||
}
|
||||
|
||||
@media (min-width: $bp-xl) {
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
&.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
color: $popoverHeaderTextColor;
|
||||
background-color: $popoverHeaderBackgroundColor;
|
||||
font-size: 140%;
|
||||
border-radius: $border-radius $border-radius 0 0;
|
||||
}
|
||||
|
||||
.body {
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
$arrow-width: 5px;
|
||||
$arrow-height: 5px;
|
||||
|
||||
.arrow {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid;
|
||||
position: absolute;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
&[x-placement^=top] {
|
||||
margin-bottom: $arrow-height;
|
||||
|
||||
.arrow {
|
||||
border-width: $arrow-height $arrow-width 0 $arrow-height;
|
||||
border-top-color: $popoverBackgroundColor;
|
||||
bottom: -$arrow-height;
|
||||
margin: 0 $arrow-width;
|
||||
}
|
||||
}
|
||||
|
||||
&[x-placement^=bottom] {
|
||||
margin-top: $arrow-height;
|
||||
|
||||
.arrow {
|
||||
border-width: 0 $arrow-width $arrow-height;
|
||||
border-bottom-color: $popoverBackgroundColor;
|
||||
top: -$arrow-height;
|
||||
margin: 0 $arrow-width;
|
||||
}
|
||||
}
|
||||
|
||||
&[x-placement^=right] {
|
||||
margin-left: $arrow-width;
|
||||
|
||||
.arrow {
|
||||
border-width: $arrow-height $arrow-width $arrow-height 0;
|
||||
border-right-color: $popoverBackgroundColor;
|
||||
left: -$arrow-width;
|
||||
margin: $arrow-height 0;
|
||||
}
|
||||
}
|
||||
|
||||
&[x-placement^=left] {
|
||||
margin-right: $arrow-width;
|
||||
|
||||
.arrow {
|
||||
border-width: $arrow-height 0 $arrow-width $arrow-height;
|
||||
border-left-color: $popoverBackgroundColor;
|
||||
right: -$arrow-width;
|
||||
margin: $arrow-height 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.term {
|
||||
@media screen {
|
||||
border-bottom: dashed 1px;
|
||||
cursor: help;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
|
@ -3,7 +3,21 @@ title: "FrostFS Proposals"
|
|||
icon: "ti-blackboard"
|
||||
description: "Index of FrostFS Enhancement Proposals"
|
||||
type: "docs"
|
||||
date: "2021-12-07"
|
||||
date: "2022-12-22"
|
||||
---
|
||||
|
||||
### Introduction
|
||||
|
||||
This proposals contains the index of all FrostFS Enhancement Proposals. Proposals numbers are assigned by the proposals editors, and once assigned are never changed.
|
||||
|
||||
### PEP Status Key
|
||||
|
||||
- **Accepted** — Normative proposal accepted for implementation
|
||||
- **Active** — Currently valid informational guidance, or an in-use process
|
||||
- **Deferred** — Inactive draft that may be taken up again at a later time
|
||||
- **Draft** — Proposal under active discussion and revision
|
||||
- **Final** — Accepted and implementation complete, or no longer active
|
||||
- **Provisional** — Provisionally accepted but additional feedback needed
|
||||
- **Rejected** — Formally declined and will not be accepted
|
||||
- **Superseded** — Replaced by another succeeding PEP
|
||||
- **Withdrawn** — Removed from consideration by sponsor or authors
|
||||
|
|
14
content/proposals/core/_index.en.md
Normal file
14
content/proposals/core/_index.en.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: "Core"
|
||||
date: "2022-12-22"
|
||||
---
|
||||
|
||||
{{< proposals_table "core" "Accepted" >}}
|
||||
{{< proposals_table "core" "Active" >}}
|
||||
{{< proposals_table "core" "Deferred" >}}
|
||||
{{< proposals_table "core" "Draft" >}}
|
||||
{{< proposals_table "core" "Final" >}}
|
||||
{{< proposals_table "core" "Provisional" >}}
|
||||
{{< proposals_table "core" "Rejected" >}}
|
||||
{{< proposals_table "core" "Superseded" >}}
|
||||
{{< proposals_table "core" "Withdrawn" >}}
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
title: Glossary
|
||||
description: A glossary of common FrostFS terms
|
||||
date: "2021-12-29"
|
||||
weight: 100
|
||||
---
|
||||
|
||||
{{<glossary>}}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: "Mainnet"
|
||||
---
|
||||
|
||||
Main Network of Neo Blockchain. See [Neo Documentation](https://docs.neo.org/v3/docs/en-us/network/testnet.html)
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: "FrostFS"
|
||||
---
|
||||
|
||||
**F**rostFS **E**xaggerative **O**bject **F**ile **S**torage. Also known as **Neo** **F**ile **S**torage
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: "Object"
|
||||
---
|
||||
|
||||
An immutable piece of data with metadata in the form of a set of key-value headers. Object has a globally unique identifier.
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: "Validator"
|
||||
---
|
||||
|
||||
In the NEO network, NEO holders can enroll themselves to be validators (consensus node candidates), and then be voted as consensus nodes. The voting status of validators and number of consensus nodes are stored in blockchain.
|
||||
|
14
content/proposals/meta/_index.en.md
Normal file
14
content/proposals/meta/_index.en.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: "Meta"
|
||||
date: "2022-12-22"
|
||||
---
|
||||
|
||||
{{< proposals_table "meta" "Accepted" >}}
|
||||
{{< proposals_table "meta" "Active" >}}
|
||||
{{< proposals_table "meta" "Deferred" >}}
|
||||
{{< proposals_table "meta" "Draft" >}}
|
||||
{{< proposals_table "meta" "Final" >}}
|
||||
{{< proposals_table "meta" "Provisional" >}}
|
||||
{{< proposals_table "meta" "Rejected" >}}
|
||||
{{< proposals_table "meta" "Superseded" >}}
|
||||
{{< proposals_table "meta" "Withdrawn" >}}
|
14
content/proposals/services/_index.en.md
Normal file
14
content/proposals/services/_index.en.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: "Services"
|
||||
date: "2022-12-22"
|
||||
---
|
||||
|
||||
{{< proposals_table "services" "Accepted" >}}
|
||||
{{< proposals_table "services" "Active" >}}
|
||||
{{< proposals_table "services" "Deferred" >}}
|
||||
{{< proposals_table "services" "Draft" >}}
|
||||
{{< proposals_table "services" "Final" >}}
|
||||
{{< proposals_table "services" "Provisional" >}}
|
||||
{{< proposals_table "services" "Rejected" >}}
|
||||
{{< proposals_table "services" "Superseded" >}}
|
||||
{{< proposals_table "services" "Withdrawn" >}}
|
|
@ -1,54 +0,0 @@
|
|||
|
||||
<style>
|
||||
.primary .article-container article {
|
||||
overflow-x: visible;
|
||||
}
|
||||
</style>
|
||||
|
||||
{{ $styles := resources.Get "sass/glossary.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}" media="screen">
|
||||
|
||||
<div class="glossary">
|
||||
{{- $glossary := .Site.GetPage "/concepts/glossary" -}}
|
||||
{{- $words := $glossary.Resources.ByType "page" -}}
|
||||
|
||||
<div class="trampolines">
|
||||
{{- $previous := "-" -}}
|
||||
|
||||
{{ range $w := $words }}
|
||||
{{ $first := upper (slicestr $w.Title 0 1) }}
|
||||
|
||||
{{ if ne $first $previous }}
|
||||
{{ if ne $previous "-" }}
|
||||
|
|
||||
{{ end }}
|
||||
<a href="#{{ $first }}" aria-label="Words starting with the letter {{ $first }}">{{ $first }}</a>
|
||||
{{ $previous = $first }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="entries">
|
||||
{{ $previous = "-" }}
|
||||
{{ range $w := $words }}
|
||||
{{ $first := upper (slicestr $w.Title 0 1) }}
|
||||
|
||||
{{ if ne $first $previous }}
|
||||
{{ if ne $previous "-" }}
|
||||
</dl>
|
||||
</div>
|
||||
{{ end }}
|
||||
<div id="{{ $first }}" class="letter">
|
||||
<h4>{{ $first }}</h4>
|
||||
<dl>
|
||||
{{ $previous = $first }}
|
||||
{{ end }}
|
||||
|
||||
{{ $name := $w.Title | urlize }}
|
||||
<dt id="{{ $name }}">{{ $w.Title }}</dt>
|
||||
<dd aria-labelledby="{{ $name }}">{{ $w.Content }}</dd>
|
||||
{{ end }}
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
44
layouts/shortcodes/proposals_table.html
Normal file
44
layouts/shortcodes/proposals_table.html
Normal file
|
@ -0,0 +1,44 @@
|
|||
<h5 id="index-by-category" style="margin-bottom: 10px;">{{ .Get 1 }}</h5>
|
||||
{{ $active_category := .Get 0 }}
|
||||
{{ $active_status := .Get 1 }}
|
||||
|
||||
{{ $is_exists := 0 }}
|
||||
{{ range $page := .Site.RegularPages }}
|
||||
{{ if gt (len (findRE $active_status $page.Params.status)) 0 }}
|
||||
{{ if gt (len (findRE (print "/" $active_category "/") $page.File)) 0 }}
|
||||
{{ $is_exists = 1 }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq $is_exists 1 }}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Status</th>
|
||||
<th>PEP</th>
|
||||
<th>Authors</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range $page := .Site.RegularPages }}
|
||||
{{ if gt (len (findRE $active_status $page.Params.status)) 0 }}
|
||||
{{ if gt (len (findRE (print "/" $active_category "/") $page.File)) 0 }}
|
||||
<tr>
|
||||
<th>{{ $page.Params.status }}</th>
|
||||
<th>
|
||||
<a href="{{ $page.Permalink }}">{{ $page.Title }}</a>
|
||||
</th>
|
||||
<th>{{ $page.Params.author }}</th>
|
||||
<!-- <th>{{ $page.Lastmod }}</th> -->
|
||||
</tr>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
{{ else }}
|
||||
<p>Not found</p>
|
||||
{{ end }}
|
||||
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
{{ .Page.Scratch.Set "needPopper" true }}
|
||||
|
||||
{{- $styles := resources.Get "sass/term.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint -}}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}" media="screen">
|
||||
|
||||
{{- $position := .Position }}
|
||||
{{- $term := .Inner -}}
|
||||
{{- $gloss_entry := $term -}}
|
||||
{{- if .Get 0 -}}
|
||||
{{- $gloss_entry = .Get 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $glossary := .Site.GetPage "/concepts/glossary" -}}
|
||||
{{- $words := $glossary.Resources.ByType "page" -}}
|
||||
{{- $dfn := "" -}}
|
||||
{{- $title := $term -}}
|
||||
{{- range $w := $words -}}
|
||||
{{- if (eq (upper $w.Title) (upper $gloss_entry)) -}}
|
||||
{{- $dfn = $w.Content -}}
|
||||
{{- $title = $w.Title -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if (eq $dfn "") -}}
|
||||
{{- errorf "Could not find glossary entry for '%s' (%s)" $gloss_entry $position -}}
|
||||
{{- end -}}
|
||||
|
||||
<span class="term" data-title="{{- $title }}" data-body="{{- $dfn | string -}}">{{ $term }}</span>
|
Loading…
Reference in a new issue