Electric-Coin-Company / tfl-book

A Trailing Finality Layer book for a proposed Zcash protocol change.
MIT License
5 stars 2 forks source link

tfl-book

The Zcash Trailing Finality Layer design book.

This repository is the source text and rendering configuration for the book. To read the book, use the link above.

The mdbook tool renders the contents into a pretty format from markdown based source code

Github CI

There are two github CI workflows:

git-hooks

There is a directory git-hooks that we advocate all contributors use.

Use this command to enable it:

git config --local core.hooksPath git-hooks

Prerequisites

Note: Nix users can rely on flake.nix which packages the final rendered HTML into <prefix>/share/doc/tfl-book. Users can install this via nix profile install 'github:Electric-Coin-Company/tfl-book', or to build the local version nix build.

Rust prerequisites

Other prerequisites

Rendering

Release Process

Releases are defined as distinct revisions that embody a consistent set of changes from the prior releases, identified by a version with XXX.YYY.ZZZ format. Releases serve a few purposes. They:

Versioning Schema

The versioning scheme isn't precise and roughly follows this rubrik:

When a version X.Y.Z increments, the scope of change since the prior release is implied by the new version:

Release Process

To create a new release:

  1. Decide that the main branch is in a coherent state without likely sources of confusion or self-inconsistency.
  2. Decide the new release's version as in Versioning Schema above.
  3. Create a release branch named release-<NEW VERSION>.
  4. Update the release branch with these changes:
    • book.toml: Modify the title to end with vX.Y.Z. This ensures the version is visible to readers on all pages.
    • src/version-history.md: Introduce a new heading ## X.Y.Z - <RELEASE TITLE> above all prior entries (i.e. reverse chronologically).
    • The RELEASE TITLE should be a short-hand title capturing the primary change of the release.
    • The release body should always begin with a link titled Issue Tracking that navigates to the GitHub milestone page of completed issues in this release.
    • The rest of the release body should be a one- to three-sentence summary of changes. Readers who need more detail can follow issue tracking.
    • src/introduction.md: The first paragraph says This is <VERSION LINK> of the book. Update that link to point to the new release's entry in src/version-history.md.
  5. Submit those changes for GitHub pull-request review, resolve any blocking concerns, then merge to the main branch. Note: This step will render the release.
  6. Create a git tag on the git commit that merges into main: git tag vX.Y.Z && git push --tags

Note: We don't use GitHub "releases" since there's no release artifact other than the already published rendering.