Skip to content

Rework README as user-facing, add usage and architecture docs - #16

Merged
bgrewell merged 1 commit into
mainfrom
docs/documentation
Aug 6, 2026
Merged

Rework README as user-facing, add usage and architecture docs#16
bgrewell merged 1 commit into
mainfrom
docs/documentation

Conversation

@bgrewell

@bgrewell bgrewell commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Summary

Documentation restructure per the plan: README for newcomers, depth in docs/.

README

Now answers "what is this and how do I use it in 30 seconds": install, four CLI one-liners (extract / build / bootable build / inspect), a minimal library example, the support matrix, and links to the deeper docs. Contributor-oriented content moved out.

docs/USAGE.md — advanced user guide

The complete tour: open options and their effects, inspection, extraction, creation, mutation, El Torito boot configuration (BIOS/EFI, boot info table), hybrid MBR vs GPT layouts and why the two modes exist, name handling (Rock Ridge mangling, Joliet limits, interchange levels 1–3), UDF, full CLI flag reference, and a real limitations section — including operational gotchas like keeping the source reader open across Save.

docs/ARCHITECTURE.md — developer guide

For contributors: package map with dependency direction, the read path, the mutable tree's two content sources (pending vs reader-backed and why that makes modify memory-safe), the Pack layout order, the sizes-before-locations rule, record plans and SUSP continuation budgeting, internals per extension, the eight invariants that keep images valid, the three-layer testing strategy (with the lesson that symmetric bugs pass internal round-trips — only foreign readers catch them), and a step-by-step for adding a new on-disk structure.

One small API addition

ISO9660.AddSymlink(path, target) — symlinks could previously only enter an image via AddLocalDirectory, which made the documented API asymmetric. Tests that reached into the unexported tree now use the public method.

Test plan

  • Full suite green (go test -count=1 ./...), gofmt/vet clean
  • Docs cross-checked against the actual API surface and CLI flags

Slim the README down to what a newcomer needs: install commands, the
four CLI one-liners, a minimal library example, the support matrix, and
pointers into docs/. Details that served contributors more than users
move out.

Add docs/USAGE.md, the complete user guide: opening options and what
they mean, inspection, extraction, creation, mutation, bootable image
configuration (El Torito BIOS/EFI entries, boot info table), hybrid
MBR/GPT layouts and when each applies, name handling across Rock Ridge,
Joliet, and interchange levels, UDF, a CLI reference, and an honest
limitations section (4 GiB write ceiling, UDF read-only, symlinks
requiring Rock Ridge, keeping the source reader open).

Add docs/ARCHITECTURE.md for contributors: package map, read path,
the mutable tree and its two content sources, the Pack layout order and
the sizes-before-locations rule, record plans and SUSP continuation
budgeting, per-extension internals (Rock Ridge, Joliet, El Torito,
hybrid boot, UDF), the eight invariants that keep images valid, the
three-layer testing strategy, and a checklist for adding a new on-disk
structure.

Also add a public AddSymlink API on ISO9660 — symlinks could previously
only enter an image through AddLocalDirectory, which made the documented
API needlessly asymmetric. Tests that reached into the unexported tree
now use it.
@bgrewell
bgrewell merged commit b6b0caa into main Aug 6, 2026
1 check passed
@bgrewell
bgrewell deleted the docs/documentation branch August 6, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant