|
1 | 1 | {
|
2 | 2 | "$schema": "http://json-schema.org/draft-07/schema#",
|
3 | 3 | "$id": "https://raft.github.io/implementation.schema.json",
|
4 |
| - "title": "Implementation", |
5 |
| - "description": "...", |
| 4 | + "title": "Raft Implementation", |
| 5 | + "description": "This file contains the schema describing a single Raft implementation.", |
6 | 6 | "type": "object",
|
7 | 7 | "properties": {
|
8 | 8 | "repoURL": {
|
| 9 | + "description": "URL pointing to base GitHub repo.", |
9 | 10 | "type": "string",
|
10 | 11 | "pattern": "^https://github.com/([^/]+)/([^/]+)(?<!.git)$",
|
11 | 12 | "format": "uri"
|
12 | 13 | },
|
13 | 14 | "directory": {
|
| 15 | + "description": "Optional path within Git repo where the Raft implementation is located.", |
14 | 16 | "type": "string",
|
15 | 17 | "pattern": "^[^/].*/$"
|
16 | 18 | },
|
17 | 19 | "name": {
|
| 20 | + "description": "Implementation project name. If the project is referred to as 'Raft', disambiguate it.", |
18 | 21 | "type": "string",
|
19 | 22 | "pattern": "^.+(?<!^[Rr][Aa][Ff][Tt])$"
|
20 | 23 | },
|
21 | 24 | "authors": {
|
| 25 | + "description": "List of primary authors (people). Try to keep this short.", |
22 | 26 | "type": "array",
|
23 | 27 | "items": {
|
24 | 28 | "type": "object",
|
25 | 29 | "properties": {
|
26 | 30 | "name": {
|
| 31 | + "description": "Person's name (or alias).", |
27 | 32 | "type": "string"
|
28 | 33 | },
|
29 | 34 | "twitter": {
|
| 35 | + "description": "Author's public Twitter username (without the @).", |
30 | 36 | "type": "string",
|
31 |
| - "pattern": "^https://twitter.com/([^/]+)$", |
32 |
| - "format": "uri" |
| 37 | + "pattern": "^[A-Za-z0-9_]{1,15}$" |
33 | 38 | },
|
34 | 39 | "github": {
|
| 40 | + "description": "Author's GitHub username.", |
35 | 41 | "type": "string",
|
36 |
| - "pattern": "^https://github.com/([^/]+)$", |
37 |
| - "format": "uri" |
| 42 | + "pattern": "^[A-Za-z0-9]([A-Za-z0-9-]{0,37}[A-Za-z0-9]?)$" |
38 | 43 | },
|
39 | 44 | "homepage": {
|
| 45 | + "description": "Author's public home page.", |
40 | 46 | "type": "string",
|
41 | 47 | "format": "uri"
|
| 48 | + }, |
| 49 | + "organization": { |
| 50 | + "description": "The author's affiliation for the project, such as an employer.", |
| 51 | + "type": "string" |
42 | 52 | }
|
43 |
| - } |
| 53 | + }, |
| 54 | + "required": [ |
| 55 | + "name" |
| 56 | + ], |
| 57 | + "additionalProperties": false |
44 | 58 | },
|
45 | 59 | "maxItems": 7
|
46 | 60 | },
|
47 | 61 | "language": {
|
48 |
| - "type": "string", |
49 |
| - "description": "SPDX license expression. See https://spdx.org/licenses/" |
| 62 | + "description": "Primary programming language for the implementation.", |
| 63 | + "type": "string" |
50 | 64 | },
|
51 | 65 | "license": {
|
| 66 | + "description": "SPDX license expression describing how the implementation may be used. See https://choosealicense.com/ or https://spdx.org/licenses/.", |
52 | 67 | "type": "string"
|
53 | 68 | },
|
54 | 69 | "features": {
|
| 70 | + "description": "Describe how complete the implementation is.", |
55 | 71 | "type": "object",
|
56 | 72 | "properties": {
|
57 | 73 | "basic": {
|
58 |
| - "type": "boolean", |
59 |
| - "description": "Leader election and log replication" |
| 74 | + "description": "The implementation handles leader election and log replication.", |
| 75 | + "type": "boolean" |
60 | 76 | },
|
61 | 77 | "persistence": {
|
62 |
| - "type": "boolean", |
63 |
| - "description": "Term and log are persisted to disk" |
| 78 | + "description": "The implementation safely persists the term and log to disk.", |
| 79 | + "type": "boolean" |
64 | 80 | },
|
65 | 81 | "logCompaction": {
|
| 82 | + "description": "The implementation does some form of log compaction, such as snapshotting.", |
66 | 83 | "type": "boolean"
|
67 | 84 | },
|
68 | 85 | "membershipChanges": {
|
| 86 | + "description": "The implementation can dynamically change the set of servers safely.", |
69 | 87 | "type": "boolean"
|
70 | 88 | }
|
71 |
| - } |
| 89 | + }, |
| 90 | + "additionalProperties": false |
72 | 91 | }
|
73 | 92 | },
|
74 | 93 | "required": [
|
|
0 commit comments