Contributing to S10RAGE ๐ ๏ธ
Welcome to S10RAGE โ the open-source engineering encyclopedia and "MDN for Data Storage Engineering".
S10RAGE exists to provide rigorous, production-grade technical documentation on everything data storage: from silicon physics, NAND flash, and PCIe NVMe to Linux kernel I/O, distributed consensus (Raft/Paxos), storage engines (LSM/B-Tree), and cloud-native Kubernetes CSI.
We welcome contributions from systems engineers, storage architects, Linux kernel developers, database engineers, SREs, and passionate students.
Quick Navigationโ
- How S10RAGE is Structured
- Step-by-Step: Adding a New Storage Module
- Authoring Standards & Formatting
- Registering Your Module in Navigation
- Testing & Validating Locally
- Submitting a Pull Request
- Maintainers & Getting Help
Repository Structureโ
S10RAGE is built on Docusaurus 3 with TypeScript, React, MDX, Mermaid, and KaTeX.
S10RAGE/
โโโ docs/ # All technical modules & documentation
โ โโโ 01-introduction/ # Core engineering modules & reference guides
โ โโโ ...
โ โโโ 18-reference-architecture/
โ โโโ storage-networking/ # Topic-based specialized modules
โ โโโ physical-layer/
โ โโโ os-subsystem/
โ โโโ storage-engines/
โ โโโ distributed-storage/
โ โโโ interactive/ # MDX interactive tools (React components)
โ โโโ intro.md # Documentation portal home
โ โโโ contributing.md # Web version of this contributor guide
โโโ src/
โ โโโ components/ # Reusable React & interactive widgets
โ โโโ css/custom.css # Global design system & theme tokens
โ โโโ pages/ # Landing page, maintainers page, etc.
โโโ static/ # Logos, icons, SVG diagrams, and images
โ โโโ img/
โโโ sidebars.ts # Sidebar navigation tree definition
โโโ docusaurus.config.ts # Top navbar, footer, search, and site config
โโโ package.json
Step-by-Step: Adding a New Storage Moduleโ
Follow these steps to contribute a new topic or module:
1. Fork and Clone the Repositoryโ
git clone https://github.com/sohansinghbhadoria/S10RAGE.git
cd S10RAGE
git checkout -b feat/add-storage-module-name
2. Install Dependenciesโ
npm install
3. Choose the Location for Your Moduleโ
- If expanding an existing topic, place your markdown file inside the relevant directory in
docs/:docs/physical-layer/for NAND, controllers, PCIe, DRAM.docs/os-subsystem/for VFS, page cache, io_uring, block layer.docs/storage-engines/for B-Trees, LSM, WAL, row/columnar stores.docs/interfaces-and-protocols/for NVMe, NVMe-oF, RDMA, NFS, iSCSI.docs/distributed-storage/for Ceph, MinIO, S3, Raft, Paxos, Erasure Coding.docs/kubernetes-storage/for CSI, PVCs, StatefulSets, rook-ceph.
- If creating an entirely new category, create a new folder under
docs/(e.g.docs/storage-security/).
4. Create the Markdown / MDX Fileโ
Create a new file, for example docs/storage-security/zero-trust-san.md:
---
id: zero-trust-san
title: "Zero-Trust SAN & Storage Network Encryption"
description: "Architecture and implementation of line-rate IPsec, MACsec, and NVMe-in-band authentication."
sidebar_label: "๐ก๏ธ Zero-Trust SAN Security"
---
# Zero-Trust SAN & Storage Network Encryption
Comprehensive technical breakdown of storage fabric security...
5. Register Your Module in Navigationโ
To make your module appear in the documentation navigation, open sidebars.ts and add its file path relative to docs/ (without the .md extension):
// sidebars.ts
{
type: 'category',
label: '๐ก๏ธ Storage Security & Compliance',
collapsed: true,
items: [
'storage-security/zero-trust-san', // <-- Your module ID
],
},
6. (Optional) Add to the Navbar Dropdownโ
If your module is part of a major core pillar, you can expose it in the top navigation bar by adding an entry in docusaurus.config.ts under themeConfig.navbar.items:
// docusaurus.config.ts
{
label: '๐ก๏ธ Zero-Trust Storage Security',
to: '/docs/storage-security/zero-trust-san',
},
Authoring Standards & Formattingโ
S10RAGE maintains an MDN-grade standard of engineering depth. Avoid high-level marketing summaries; dive straight into hardware realities, memory layouts, wire protocols, and kernel syscalls.
Architecture Diagrams (Mermaid)โ
Use Mermaid code blocks to illustrate I/O paths, protocol handshakes, and packet frames:
```mermaid
sequenceDiagram
autonumber
participant Host as Host NVMe Driver
participant Sub as NVMe-oF Target Controller
Host->>Sub: Connect Request (RDMA CM / TCP SYN)
Sub-->>Host: Connect Accept
Host->>Sub: Fabrics Connect Command (Caps, KeepAlive)
Sub-->>Host: Connect Completion (Queue Created)
```
Mathematical Models & Physics (KaTeX)โ
Use LaTeX syntax for latency calculations, bandwidth formulas, or RAID parity equations:
$$
\text{Rebuild Time} = \frac{\text{Drive Capacity}}{\text{Sustained Sequential Write Speed} \times (1 - \text{I/O Contention Factor})}
$$
Callouts & Admonitionsโ
Use Docusaurus admonitions to highlight operational warnings, gotchas, or performance tips:
:::tip[Zero-Copy Hint]
Always align user-space buffers to 4KiB page boundaries using `posix_memalign()` when issuing `O_DIRECT` reads to NVMe block devices.
:::
:::caution[Data Loss Risk]
Disabling the write cache (`hdparm -W 0`) guarantees write persistence on power loss, but reduces random write throughput by up to 80% on consumer SATA SSDs without PLP capacitors.
:::
Reproducible CLI Commands & Benchmarksโ
Include real-world verification commands (fio, nvme-cli, bpftrace, sysctl, iostat):
# Verify NVMe queue depth and host memory buffer (HMB) allocation
sudo nvme id-ctrl /dev/nvme0 -H | grep -E "hmpre|hmmin|sqes|cqes"
Testing & Validating Locallyโ
Always verify your changes locally before submitting a PR:
1. Start the Development Serverโ
npm run start
Open http://localhost:3000 to verify your new page renders properly, images and diagrams load, and navigation links work.
2. Run the Production Build Checkโ
npm run build
Critical:
npm run buildruns a strict broken-link checker and TypeScript compiler. Your build must pass with zero errors and zero broken links.
Submitting a Pull Requestโ
- Commit your changes:
git add .git commit -m "docs: add module on zero-trust SAN storage security"
- Push to your fork:
git push origin feat/add-storage-module-name
- Open a PR:
- Go to S10RAGE Pull Requests.
- Click New Pull Request.
- Provide a concise summary of the storage topic added, key diagrams, and confirmation that
npm run buildpassed.
Maintainers & Getting Helpโ
- Project Lead: Sohan Singh
- LinkedIn: in/amazinglysingh
- GitHub: @sohansinghbhadoria
- Issues & Discussion:
- Open a GitHub Issue to propose a topic or discuss architecture before writing.