Skip to content

Deviations from the Original

This project is a ground-up Rust rewrite of Brett Terpstra's doing. While it aims for full compatibility with the original Ruby implementation, there are intentional differences driven by Rust ecosystem conventions, architectural constraints, and practical improvements.

Each deviation is documented as a formal record in the repository. The full details, rationale, and migration notes for every deviation are available at:

github.com/aaronmallen/doing/tree/main/docs/deviations

Summary of Deviations

IDTitleWhat Differs
DEV-0001Configuration FormatDefaults to TOML at XDG path instead of YAML
DEV-0002Hyphenated Command NamesUses hyphens instead of underscores
DEV-0003fzf Not Auto-InstalledNever installs software on your behalf
DEV-0004JSON Output StructureTop-level array of section objects
DEV-0005No config update/refreshMissing keys filled from compiled-in defaults
DEV-0006update Is Self-UpdateUpdates the Rust binary, not a Ruby gem
DEV-0007No help -c Compact FlagHelp generated by clap, no compact mode
DEV-0008select Uses --no-menu Not --forceClearer name for non-interactive batch mode
DEV-0009select -F for --finish-f taken by global --doing-file
DEV-0010--quiet Has No -q Short Flag-q assigned to select --query
DEV-0011--age Has No -a Short Flag-a used by tag --autotag
DEV-0012redo --file Has No -f Short FlagGlobal -f conflict
DEV-0013completion generate --file No -fGlobal -f conflict

Released under the MIT License.