You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This section gives the reader a very rough overview of the landscape in which the new system is being built and what is actually being built. This isn’t a requirements doc. Keep it succinct! The goal is that readers are brought up to speed but some previous knowledge can be assumed and detailed info can be linked to. This section should be entirely focused on objective background facts.
47
-
label: 'Context and scope'
47
+
label: "Context and scope"
48
48
id: scope
49
49
type: textarea
50
50
validations:
@@ -53,7 +53,7 @@ body:
53
53
- attributes:
54
54
description: |
55
55
A short list of bullet points of what the goals of the system are, and, sometimes more importantly, what non-goals are. Note, that non-goals aren’t negated goals like “The system shouldn’t crash”, but rather things that could reasonably be goals, but are explicitly chosen not to be goals. A good example would be “ACID compliance”; when designing a database, you’d certainly want to know whether that is a goal or non-goal. And if it is a non-goal you might still select a solution that provides it, if it doesn’t introduce trade-offs that prevent achieving the goals.
56
-
label: 'Goals and non-goals'
56
+
label: "Goals and non-goals"
57
57
id: goals
58
58
type: textarea
59
59
validations:
@@ -65,7 +65,7 @@ body:
65
65
The design doc is the place to write down the trade-offs you made in designing your software. Focus on those trade-offs to produce a useful document with long-term value. That is, given the context (facts), goals and non-goals (requirements), the design doc is the place to suggest solutions and show why a particular solution best satisfies those goals.
66
66
67
67
The point of writing a document over a more formal medium is to provide the flexibility to express the problem set at hand in an appropriate manner. Because of this, there is no explicit guidance for how to actually describe the design.
68
-
label: 'The design'
68
+
label: "The design"
69
69
id: design
70
70
type: textarea
71
71
validations:
@@ -74,21 +74,21 @@ body:
74
74
- attributes:
75
75
description: |
76
76
If the system under design exposes an API, then sketching out that API is usually a good idea. In most cases, however, one should withstand the temptation to copy-paste formal interface or data definitions into the doc as these are often verbose, contain unnecessary detail and quickly get out of date. Instead focus on the parts that are relevant to the design and its trade-offs.
77
-
label: 'APIs'
77
+
label: "APIs"
78
78
id: apis
79
79
type: textarea
80
80
81
81
- attributes:
82
82
description: |
83
83
Systems that store data should likely discuss how and in what rough form this happens. Similar to the advice on APIs, and for the same reasons, copy-pasting complete schema definitions should be avoided. Instead focus on the parts that are relevant to the design and its trade-offs.
84
-
label: 'Data storage'
84
+
label: "Data storage"
85
85
id: persistence
86
86
type: textarea
87
87
88
88
- attributes:
89
89
description: |
90
90
Design docs should rarely contain code, or pseudo-code except in situations where novel algorithms are described. As appropriate, link to prototypes that show the implementability of the design.
91
-
label: 'Code and pseudo-code'
91
+
label: "Code and pseudo-code"
92
92
id: pseudocode
93
93
type: textarea
94
94
@@ -101,7 +101,7 @@ body:
101
101
On the other end are systems where the possible solutions are very well defined, but it isn’t at all obvious how they could even be combined to achieve the goals. This may be a legacy system that is difficult to change and wasn’t designed to do what you want it to do or a library design that needs to operate within the constraints of the host programming language.
102
102
103
103
In this situation you may be able to enumerate all the things you can do relatively easily, but you need to creatively put those things together to achieve the goals. There may be multiple solutions, and none of them are really great, and hence such a document should focus on selecting the best way given all identified trade-offs.
'Suggest an idea for this project without a plan for implementation'
2
+
"Suggest an idea for this project without a plan for implementation"
3
3
labels:
4
4
- feat
5
-
name: 'Feature Request'
5
+
name: "Feature Request"
6
6
body:
7
7
- attributes:
8
8
value: |
@@ -11,11 +11,11 @@ body:
11
11
If you already have a plan to implement a feature or a change, please create a [design document](https://github.com/aeneasr/gh-template-test/issues/new?assignees=&labels=rfc&template=DESIGN-DOC.yml) instead if the change is non-trivial!
12
12
type: markdown
13
13
- attributes:
14
-
label: 'Preflight checklist'
14
+
label: "Preflight checklist"
15
15
options:
16
16
- label:
17
-
'I could not find a solution in the existing issues, docs, nor
18
-
discussions.'
17
+
"I could not find a solution in the existing issues, docs, nor
Copy file name to clipboardExpand all lines: .github/workflows/stale.yml
+5-5
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
-
name: 'Close Stale Issues'
1
+
name: "Close Stale Issues"
2
2
on:
3
3
workflow_dispatch:
4
4
schedule:
5
-
- cron: '0 0 * * *'
5
+
- cron: "0 0 * * *"
6
6
7
7
jobs:
8
8
stale:
@@ -35,10 +35,10 @@ jobs:
35
35
Thank you for your understanding and to anyone who participated in the conversation! And as written above, please do participate in the conversation if this topic is important to you!
0 commit comments