upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs/explanation/README.md
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2025-11-04 10:25:53 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2025-11-04 10:25:53 +0000
commit52bad9954cdddf55ab749fd0c6387edbc766632f (patch)
treed9dd2078b70a627a71d1adb9555cee83faec5cd0 /docs/explanation/README.md
parentdb460efdd4cf34d3b6ac8c19b1b8f89f22bc279f (diff)
docs: use Diátaxis structure
Diffstat (limited to 'docs/explanation/README.md')
-rw-r--r--docs/explanation/README.md225
1 files changed, 225 insertions, 0 deletions
diff --git a/docs/explanation/README.md b/docs/explanation/README.md
new file mode 100644
index 0000000..cc3ec49
--- /dev/null
+++ b/docs/explanation/README.md
@@ -0,0 +1,225 @@
1# Explanation
2
3**Understanding-oriented documentation** - Concepts, design decisions, and the "why" behind ngit-grasp.
4
5---
6
7## What Is Explanation?
8
9Explanation documentation helps you **understand concepts** and design decisions, providing context and discussing alternatives.
10
11**Characteristics:**
12- ✅ Understanding-oriented (clarify concepts)
13- ✅ Theoretical (ideas and design)
14- ✅ Discuss alternatives
15- ✅ Provide context and background
16- ✅ Answer "why" questions
17
18**Not explanation:**
19- ❌ Step-by-step lessons (those are Tutorials)
20- ❌ Problem-solving recipes (those are How-To)
21- ❌ Technical specifications (those are Reference)
22
23---
24
25## Available Explanation Documentation
26
27### [Architecture Overview](architecture.md)
28**Understand the system design and component interaction**
29
30**Topics:**
31- Overall architecture
32- Component responsibilities
33- Data flows
34- Technology choices
35- Design patterns
36
37**Read when:** You want to understand how ngit-grasp works as a system
38
39---
40
41### [Inline Authorization](inline-authorization.md)
42**Why we validate pushes inline instead of using Git hooks**
43
44**Topics:**
45- The authorization problem
46- Git hooks approach
47- Inline approach
48- Comparison and trade-offs
49- Implementation details
50
51**Read when:** You want to understand the core architectural decision
52
53---
54
55### [Design Decisions](decisions.md)
56**Key architectural choices and their rationale**
57
58**Topics:**
59- Inline authorization vs hooks
60- Technology stack choices
61- Storage design
62- API design
63- Performance considerations
64
65**Read when:** You want to know why things are the way they are
66
67---
68
69### [Comparison with ngit-relay](comparison.md)
70**How ngit-grasp differs from the reference implementation**
71
72**Topics:**
73- Architecture comparison
74- Component differences
75- Trade-offs
76- Migration path
77- Compatibility
78
79**Read when:** You're familiar with ngit-relay and want to understand differences
80
81---
82
83## Planned Explanation Documentation
84
85### GRASP Protocol Design
86**Status:** 🔜 Planned
87
88**Topics:**
89- Why Nostr for Git?
90- Authorization model
91- Trust and verification
92- Decentralization benefits
93
94---
95
96### Storage Architecture
97**Status:** 🔜 Planned
98
99**Topics:**
100- Why separate Git and Nostr storage?
101- Indexing strategy
102- Performance considerations
103- Scaling approach
104
105---
106
107### Testing Philosophy
108**Status:** 🔜 Planned
109
110**Topics:**
111- Why test isolation?
112- Integration vs unit tests
113- Compliance testing approach
114- Test-driven development
115
116---
117
118### Performance Considerations
119**Status:** 🔜 Planned
120
121**Topics:**
122- Async architecture
123- Caching strategy
124- Database choices
125- Bottlenecks and solutions
126
127---
128
129## How to Use Explanation Documentation
130
1311. **Read to understand** - Not to accomplish a task
1322. **Follow your curiosity** - Read what interests you
1333. **Connect concepts** - Link ideas together
1344. **Question and explore** - Think critically
135
136**Not sure if this is what you need?**
137- Want to learn by doing? → [Tutorials](../tutorials/)
138- Need to solve a problem? → [How-To Guides](../how-to/)
139- Looking for technical details? → [Reference](../reference/)
140
141---
142
143## Contributing Explanation Documentation
144
145When writing explanation:
146
147**DO:**
148- ✅ Discuss concepts and ideas
149- ✅ Provide context and background
150- ✅ Explain alternatives
151- ✅ Use analogies and examples
152- ✅ Connect to broader context
153- ✅ Answer "why" questions
154
155**DON'T:**
156- ❌ Provide step-by-step instructions (link to Tutorials/How-To)
157- ❌ List technical details (link to Reference)
158- ❌ Assume you must be comprehensive
159- ❌ Avoid opinions (explanation can be opinionated)
160
161**Template:**
162```markdown
163# Explanation: [Topic]
164
165**Purpose:** [What concept/decision this explains]
166**Audience:** [Who wants to understand this]
167
168---
169
170## The Problem/Question
171
172[What are we trying to understand?]
173
174---
175
176## Background
177
178[Context and history]
179
180---
181
182## Our Approach
183
184[How we address it]
185
186### Why This Works
187
188[Explanation of benefits]
189
190### Trade-offs
191
192[What we gain and lose]
193
194---
195
196## Alternatives Considered
197
198### [Alternative 1]
199
200**Pros:**
201- [Benefits]
202
203**Cons:**
204- [Drawbacks]
205
206**Why we didn't choose it:**
207[Reasoning]
208
209---
210
211## Conclusion
212
213[Summary of understanding]
214
215---
216
217## Related Documentation
218- [Links to relevant docs]
219```
220
221See [Diátaxis: Explanation](https://diataxis.fr/explanation/) for detailed guidance.
222
223---
224
225*Part of the [ngit-grasp documentation](../README.md) using the [Diátaxis](https://diataxis.fr/) framework.*