-
Notifications
You must be signed in to change notification settings - Fork 5
/
roadmap.schema.json
210 lines (210 loc) · 8.3 KB
/
roadmap.schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
{
"$schema": "http://json-schema.org/schema",
"description": "A road map represents a high-level plan for a project or team.",
"type": "object",
"required": [
"title",
"authors",
"milestones"
],
"properties": {
"title": {
"type": "string",
"description": "A brief title which describes this road map."
},
"description": {
"type": "string",
"description": "A markdown formatted description of what this road map represents and any additional context which may be useful to a reader."
},
"authors": {
"type": "array",
"items": {
"$ref": "#/definitions/Author"
}
},
"timeline": {
"type": "array",
"description": "The list of important dates which relate to this road map.",
"items": {
"$ref": "#/definitions/TimelineMarker"
}
},
"objectives": {
"type": "array",
"description": "The list of objectives which the team is working towards over the course of this road map.",
"items": {
"$ref": "#/definitions/Objective"
}
},
"milestones": {
"type": "array",
"description": "The list of milestones which act as indicators of progress for this road map.",
"items": {
"$ref": "#/definitions/Milestone"
}
}
},
"definitions": {
"Author": {
"type": "object",
"description": "The details of an author responsible for this road map, should a reader have questions.",
"required": [
"name",
"contact"
],
"properties": {
"name": {
"type": "string",
"description": "The full name of the author."
},
"contact": {
"type": "string",
"description": "The contact address for the author - usually their email, but may also be an IM handle or otherwise."
}
},
"examples": [
{
"name": "John Doe",
"contact": "[email protected]"
}
]
},
"TimelineMarker": {
"type": "object",
"description": "An important date which relates to this road map.",
"required": [
"date",
"title"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"description": "The date that this timeline marker is associated with."
},
"title": {
"type": "string",
"description": "A brief name associated with this timeline marker to describe it."
},
"description": {
"type": "string",
"description": "A markdown formatted description of what this timeline marker represents, or additional context associated with it."
}
}
},
"Objective": {
"type": "object",
"description": "An objective describes a high level goal for the team. It is usually something that will be worked towards over several milestones and might not have a clear definition of done.",
"properties": {
"title": {
"type": "string",
"description": "A brief name associated with this objective which describes the intended outcome."
},
"description": {
"type": "string",
"description": "A markdown formatted description of what this objective represents and how it influences the direction that the team is moving in."
}
},
"examples": [
{
"title": "Our users love the documentation we provide",
"description": "Great documentation is critical to the adoption of our project and is an integral part of everything we introduce."
}
]
},
"Milestone": {
"type": "object",
"description": "An indicator of progress for this road map. Usually milestones are collections of deliverables which, when considered together, represent a shift in the value delivered by a team or project.",
"required": [
"title",
"deliverables"
],
"properties": {
"title": {
"type": "string",
"description": "A brief name associated with this milestone to describe the value shift."
},
"description": {
"type": "string",
"description": "A markdown formatted description of what this milestone represents and, if appropriate, the justification for its presence and prioritization."
},
"deliverables": {
"type": "array",
"description": "The list of deliverables which make up this milestone. Deliverables usually map to specific pieces of work which may be delegated to a member of your team.",
"items": {
"$ref": "#/definitions/Deliverable"
}
}
},
"examples": [
{
"title": "Documentation Website",
"description": "Publish a documentation website for the project, with information that customers can use to understand how to use it.",
"deliverables": [
{
"title": "Setup Docs Repo",
"description": "Create a documentation repository and configure the build tooling to generate and publish a website.",
"requirement": "MUST",
"state": "DOING"
},
{
"title": "Getting Started Guide",
"description": "Put together a getting started guide for new customers.",
"requirement": "SHOULD",
"state": "TODO"
}
]
}
]
},
"Deliverable": {
"type": "object",
"description": "A specific piece of work which may be delegated to a member of the team.",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"description": "A brief name describing this deliverable."
},
"description": {
"type": "string",
"description": "A markdown formatted description of what this deliverable entails and why it is necessary for this milestone."
},
"reference": {
"type": "string",
"format": "uri",
"description": "A URI at which additional information about this deliverable may be found (whether that be documentation or a tracking ticket)."
},
"state": {
"$ref": "#/definitions/State"
},
"requirement": {
"$ref": "#/definitions/Requirement"
}
}
},
"State": {
"type": "string",
"description": "The state of an item on the road map.",
"enum": [
"TODO",
"DOING",
"DONE",
"SKIP"
],
"default": "planned"
},
"Requirement": {
"type": "string",
"description": "An RFC2119 verb which describes how a specific requirement should be treated.",
"enum": [
"MUST",
"SHOULD",
"MAY"
],
"default": "SHOULD"
}
}
}