diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-11-04 10:25:53 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-11-04 10:25:53 +0000 |
| commit | 52bad9954cdddf55ab749fd0c6387edbc766632f (patch) | |
| tree | d9dd2078b70a627a71d1adb9555cee83faec5cd0 /docs/explanation/README.md | |
| parent | db460efdd4cf34d3b6ac8c19b1b8f89f22bc279f (diff) | |
docs: use Diátaxis structure
Diffstat (limited to 'docs/explanation/README.md')
| -rw-r--r-- | docs/explanation/README.md | 225 |
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 | |||
| 9 | Explanation 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 | |||
| 131 | 1. **Read to understand** - Not to accomplish a task | ||
| 132 | 2. **Follow your curiosity** - Read what interests you | ||
| 133 | 3. **Connect concepts** - Link ideas together | ||
| 134 | 4. **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 | |||
| 145 | When 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 | |||
| 221 | See [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.* | ||