1
0
mirror of https://github.com/rclone/rclone.git synced 2026-01-28 23:35:47 +00:00

docs: add tiering to the documentation #8873

This commit is contained in:
Nick Craig-Wood
2026-01-14 18:37:00 +00:00
parent c65d2383b2
commit 8679bbce90
4 changed files with 126 additions and 0 deletions

58
docs/content/tiers.md Normal file
View File

@@ -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 |

View File

@@ -44,6 +44,11 @@
<span class="badge badge-pill badge-danger float-right" style="margin-top: 30px; font-size: 100%" title="{{ $statusMessage }}">{{ $statusCode }}</span>
{{ end }}
{{ if .Page.File }}
{{ $backendName := .Page.File.TranslationBaseName }}
{{ partial "tier.html" (dict "name" $backendName "align" true) }}
{{ end }}
{{ block "main" . }}
{{ end }}
</div>

View File

@@ -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 "" }}
<a href="/tiers/" class="badge badge-pill badge-{{ $color }} {{ if .align }}float-right{{ end }}" style="{{ if .align }}margin-top: 30px; {{ end }}font-size: 100%" title="{{ $message }}">
{{ $data.tier }}
</a>
{{ end }}

View File

@@ -0,0 +1,36 @@
<table>
<thead>
<tr>
<th>Backend</th>
<th>Tier</th>
<th>Maintainers</th>
<th>Features</th>
<th>Tests</th>
<th>Integrity</th>
<th>Perf</th>
<th>Adoption</th>
<th>Docs</th>
<th>Security</th>
</tr>
</thead>
<tbody>
{{ range $name, $data := site.Data.backends }}
<tr>
<td style="font-weight: bold;">
<a href="/{{ $name | urlize }}">{{ $name | title }}</a>
</td>
<td>
{{ partial "tier.html" (dict "name" $name "align" false) }}
</td>
<td>{{ $data.maintainers | default "-" }}</td>
<td>{{ $data.features_score | default "-" }}</td>
<td>{{ $data.integration_tests | default "-" }}</td>
<td>{{ $data.data_integrity | default "-" }}</td>
<td>{{ $data.performance | default "-" }}</td>
<td>{{ $data.adoption | default "-" }}</td>
<td>{{ $data.docs | default "-" }}</td>
<td>{{ $data.security | default "-" }}</td>
</tr>
{{ end }}
</tbody>
</table>