summaryrefslogtreecommitdiff
path: root/doc/index.rst
diff options
context:
space:
mode:
authorCrash Over Burn2026-04-15 00:48:45 +0000
committerยท๐‘‘๐‘ด๐‘•๐‘‘๐‘ฉ๐‘ค2026-04-15 00:48:45 +0000
commit6e398ebdf0b0bf656a34ed4dd3b92963d684a888 (patch)
tree37eeca14e6e41ff23820adcb239f374bf844be35 /doc/index.rst
parente6c901d2e5430a3815109b38ced11a4f695f0226 (diff)
downloadnixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.tar
nixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.tar.gz
nixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.tar.bz2
nixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.tar.lz
nixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.tar.xz
nixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.tar.zst
nixtaml-6e398ebdf0b0bf656a34ed4dd3b92963d684a888.zip
Add comprehensive project documentation
Create complete documentation set in doc/ folder: - index.rst: Main project overview, quickstart, architecture - philosophy.rst: Design principles, KDL rationale, VCS diversity - roadmap.rst: Phased development plan (Phase 2.5 current, Phase 3 graphs next) - history.rst: Development timeline, key decisions, lessons learned - manifest.rst: Updated to v0.2.0, added Fossil docs, schema upgrade notes Documentation covers: - Current state (Phase 2.5) - Complete roadmap through Phase 4 - Visual dependency graph plans (Phase 3) - Philosophy and anti-corporate stance - History from origins to present All documentation in reStructuredText format for website generation.
Diffstat (limited to 'doc/index.rst')
-rw-r--r--doc/index.rst233
1 files changed, 233 insertions, 0 deletions
diff --git a/doc/index.rst b/doc/index.rst
new file mode 100644
index 0000000..f99cdbf
--- /dev/null
+++ b/doc/index.rst
@@ -0,0 +1,233 @@
+================================================================================
+Nixtamal Project Documentation
+================================================================================
+
+.. role:: ab
+.. role:: ac
+
+A Nix version pinning tool with first-class support for diverse version control
+systems and modern dependency management.
+
+------------------------------------------------------------------------------
+Overview
+------------------------------------------------------------------------------
+
+Nixtamal is an OCaml-based tool that addresses the limitations of Nix flakes
+while maintaining compatibility with traditional Nix workflows. It provides
+deterministic dependency pinning through lockfiles while supporting a diverse
+ecosystem of version control systems.
+
+**Key Capabilities:**
+
+โ€ข Multi-VCS support: Git, Darcs, Pijul, Fossil, and archives/files
+โ€ข KDL-based declarative configuration
+โ€ข Concurrent locking with domain-based parallelism
+โ€ข Schema versioning with upgrade paths
+โ€ข Template/Jinja2 support for dynamic URLs
+โ€ข Mirror support for resilience
+โ€ข Dual workflow: Traditional Nix + Flake compatibility
+
+**Website:** https://nixtamal.tech
+**Community:** xmpp:nixtamal@chat.toastal.in.th?join
+
+------------------------------------------------------------------------------
+Quick Links
+------------------------------------------------------------------------------
+
+.. toctree::
+ :maxdepth: 2
+
+ philosophy
+ manifest
+ roadmap
+ history
+
+------------------------------------------------------------------------------
+Current State (Phase 2)
+------------------------------------------------------------------------------
+
+**Version:** 0.2.0 (Schema Version)
+
+**Implemented Features:**
+
+โœ… **Core Functionality**
+ - Manifest parsing and validation (KDL)
+ - Lockfile generation and management (JSON)
+ - Concurrent prefetching with Eio
+ - All major VCS types supported
+
+โœ… **Schema Management**
+ - Versioned schemas (0.1.1 โ†’ 0.2.0)
+ - ``nixtamal upgrade`` command
+ - Automatic backup and rollback
+
+โœ… **VCS Support**
+ - Git (with submodules, LFS)
+ - Darcs (with context/tag references)
+ - Pijul (channels, states, changes)
+ - Fossil (branches, tags, checkins)
+ - Nilla framework integration
+ - Files and archives
+
+โœ… **Build System**
+ - Traditional Nix (default.nix, shell.nix)
+ - Flake support (flake.nix)
+ - Hybrid workflows
+
+โœ… **Quality Assurance**
+ - Comprehensive test suite with coverage (36.87%)
+ - Property-based testing (QCheck)
+ - CI/CD integration
+
+**In Development:**
+
+๐Ÿ”„ **Phase 2.5** (Current Focus)
+ - Documentation website (nixtamal.tech)
+ - Test coverage expansion
+ - Visual dependency graphs
+
+------------------------------------------------------------------------------
+Installation
+------------------------------------------------------------------------------
+
+**Via Nix Flake:**
+
+.. code:: bash
+
+ nix run github:toastal/nixtamal -- --help
+
+**Via Traditional Nix:**
+
+.. code:: bash
+
+ nix-build release.nix
+ ./result/bin/nixtamal --help
+
+**Development Shell:**
+
+.. code:: bash
+
+ nix develop
+ dune build
+ dune runtest
+
+------------------------------------------------------------------------------
+Basic Usage
+------------------------------------------------------------------------------
+
+**Initialize a project:**
+
+.. code:: bash
+
+ nixtamal set-up
+
+**Lock dependencies:**
+
+.. code:: bash
+
+ nixtamal lock
+
+**Refresh to latest versions:**
+
+.. code:: bash
+
+ nixtamal refresh
+
+**Upgrade schema:**
+
+.. code:: bash
+
+ nixtamal upgrade --dry-run # Preview changes
+ nixtamal upgrade # Apply upgrade
+
+**Check for stale dependencies:**
+
+.. code:: bash
+
+ nixtamal list-stale
+
+------------------------------------------------------------------------------
+Architecture
+------------------------------------------------------------------------------
+
+**Core Modules:**
+
+``lib/input.ml``
+ Input type definitions for all supported VCS and file types
+
+``lib/manifest.ml``
+ KDL parsing and validation for manifest.kdl
+
+``lib/lockfile.ml``
+ Lockfile serialization and deserialization
+
+``lib/prefetch.ml``
+ VCS-specific prefetch implementations
+
+``lib/nixtamal.ml``
+ Core orchestration and workflow logic
+
+``lib/schema.ml``
+ Schema versioning and upgrade logic
+
+``lib/input_foreman.ml``
+ Concurrent input management and locking
+
+``bin/cmd.ml``
+ CLI command definitions and interface
+
+------------------------------------------------------------------------------
+Philosophy & Design Principles
+------------------------------------------------------------------------------
+
+See :doc:`philosophy` for detailed discussion of:
+
+โ€ข Why KDL over JSON/YAML
+โ€ข First-class VCS diversity
+โ€ข The anti-corporate stance
+โ€ข Privacy and decentralization
+โ€ข Dual workflow philosophy
+
+------------------------------------------------------------------------------
+Development Roadmap
+------------------------------------------------------------------------------
+
+See :doc:`roadmap` for complete phased development plan:
+
+โ€ข **Phase 1** โœ… Foundation (Completed)
+โ€ข **Phase 2** โœ… Core Features (Completed)
+โ€ข **Phase 2.5** ๐Ÿ”„ Website & Documentation (Current)
+โ€ข **Phase 3** ๐Ÿ“Š Visual Dependency Graphs (Next)
+โ€ข **Phase 4** ๐Ÿ”ฎ Future Enhancements
+
+------------------------------------------------------------------------------
+Development History
+------------------------------------------------------------------------------
+
+See :doc:`history` for complete project timeline:
+
+โ€ข Origins as a community fork
+โ€ข Transition from Darcs to Git
+โ€ข Flake integration development
+โ€ข Nilla framework support
+โ€ข Upstream porting effort (2026-04-14)
+
+------------------------------------------------------------------------------
+Contributing
+------------------------------------------------------------------------------
+
+**Code Style:**
+- Tabs for OCaml, spaces for Nix/dune (per .editorconfig)
+- OCamlFormat for formatting
+- SPDX headers required
+- Prefer Result over exceptions
+
+**Communication:**
+- Website: https://nixtamal.tech
+- XMPP MUC: xmpp:nixtamal@chat.toastal.in.th?join
+
+**License:**
+GPL-3.0-or-later (tools) / LGPL-2.1-or-later (libraries)
+
+------------------------------------------------------------------------------
+.. vim: set textwidth=80