diff --git a/docs/content/tiers.md b/docs/content/tiers.md new file mode 100644 index 000000000..d0f045eb0 --- /dev/null +++ b/docs/content/tiers.md @@ -0,0 +1,58 @@ +--- +title: "Backend Support Tiers" +description: "A complete list of supported backends and their stability tiers." +--- + +# Tiers + +Rclone backends are divided into tiers to give users an idea of the stability of each backend. + +| Tier | Label | Intended meaning | +|--------|---------------|------------------| +| Tier 1 | Core | Production-grade, first-class | +| Tier 2 | Stable | Well-supported, minor gaps | +| Tier 3 | Supported | Works for many uses; known caveats | +| Tier 4 | Experimental | Use with care; expect gaps/changes | +| Tier 5 | Deprecated | No longer maintained or supported | + +## Overview + +Here is a summary of all backends: + +{{< tiers-table >}} + +## Scoring + +Here is how the backends are scored. + +### Features + +These are useful optional features a backend should have in rough +order of importance. Each one of these scores a point for the Features +column. + +- F1: Hash(es) +- F2: Modtime +- F3: Stream upload +- F4: Copy/Move +- F5: DirMove +- F6: Metadata +- F7: MultipartUpload + + +### Tier + +The tier is decided after determining these attributes. Some discretion is allowed in tiering as some of these attributes are more important than others. + +| Attr | T1: Core | T2: Stable | T3: Supported | T4: Experimental | T5: Incubator | +|------|----------|------------|---------------|------------------|---------------| +| Maintainers | >=2 | >=1 | >=1 | >=0 | >=0 | +| API source | Official | Official | Either | Either | Either | +| Features (F1-F7) | >=5/7 | >=4/7 | >=3/7 | >=2/7 | N/A | +| Integration tests | All Green | All green | Nearly all green | Some Flaky | N/A | +| Error handling | Pacer | Pacer | Retries | Retries | N/A | +| Data integrity | Hashes, alt, modtime | Hashes or alt | Hash OR modtime | Best-effort | N/A | +| Perf baseline | Bench within 2x S3 | Bench doc | Anecdotal OK | Optional | N/A | +| Adoption | widely used | often used | some use | N/A | N/A | +| Docs completeness | Full | Full | Basic | Minimal | Minimal | +| Security | Principle-of-least-privilege | Reasonable scopes | Basic auth | Works | Works | diff --git a/docs/layouts/_default/baseof.html b/docs/layouts/_default/baseof.html index 326e826c4..82a9cc000 100644 --- a/docs/layouts/_default/baseof.html +++ b/docs/layouts/_default/baseof.html @@ -44,6 +44,11 @@ {{ $statusCode }} {{ end }} + {{ if .Page.File }} + {{ $backendName := .Page.File.TranslationBaseName }} + {{ partial "tier.html" (dict "name" $backendName "align" true) }} + {{ end }} + {{ block "main" . }} {{ end }} diff --git a/docs/layouts/partials/tier.html b/docs/layouts/partials/tier.html new file mode 100644 index 000000000..b106b54b2 --- /dev/null +++ b/docs/layouts/partials/tier.html @@ -0,0 +1,27 @@ +{{/* Expect the context (.) to be the backend name string as .name and whether to align as .align */}} +{{ $backendName := .name | lower }} +{{ $data := index site.Data.backends $backendName }} + +{{ $tierColors := dict +"Tier 1" "success" +"Tier 2" "success" +"Tier 3" "warning" +"Tier 4" "danger" +"Tier 5" "danger" +}} +{{ $tierMessages := dict +"Tier 1" "Core: Production-grade, first-class" +"Tier 2" "Stable: Well-supported, minor gaps" +"Tier 3" "Supported: Works for many uses; known caveats" +"Tier 4" "Experimental: Use with care; expect gaps/changes" +"Tier 5" "Deprecated: No longer maintained or supported" +}} + +{{ if $data }} + {{ $color := index $tierColors $data.tier | default "secondary" }} + {{ $message := index $tierMessages $data.tier | default "" }} + + + {{ $data.tier }} + +{{ end }} diff --git a/docs/layouts/shortcodes/tiers-table.html b/docs/layouts/shortcodes/tiers-table.html new file mode 100644 index 000000000..eec983f40 --- /dev/null +++ b/docs/layouts/shortcodes/tiers-table.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + {{ range $name, $data := site.Data.backends }} + + + + + + + + + + + + + {{ end }} + +
BackendTierMaintainersFeaturesTestsIntegrityPerfAdoptionDocsSecurity
+ {{ $name | title }} + + {{ partial "tier.html" (dict "name" $name "align" false) }} + {{ $data.maintainers | default "-" }}{{ $data.features_score | default "-" }}{{ $data.integration_tests | default "-" }}{{ $data.data_integrity | default "-" }}{{ $data.performance | default "-" }}{{ $data.adoption | default "-" }}{{ $data.docs | default "-" }}{{ $data.security | default "-" }}