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
| ID | Title | What Differs |
|---|---|---|
| DEV-0001 | Configuration Format | Defaults to TOML at XDG path instead of YAML |
| DEV-0002 | Hyphenated Command Names | Uses hyphens instead of underscores |
| DEV-0003 | fzf Not Auto-Installed | Never installs software on your behalf |
| DEV-0004 | JSON Output Structure | Top-level array of section objects |
| DEV-0005 | No config update/refresh | Missing keys filled from compiled-in defaults |
| DEV-0006 | update Is Self-Update | Updates the Rust binary, not a Ruby gem |
| DEV-0007 | No help -c Compact Flag | Help generated by clap, no compact mode |
| DEV-0008 | select Uses --no-menu Not --force | Clearer name for non-interactive batch mode |
| DEV-0009 | select -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-0012 | redo --file Has No -f Short Flag | Global -f conflict |
| DEV-0013 | completion generate --file No -f | Global -f conflict |