🧙🏻♀️ A dotfile ecosystem: cross-shell, cross-os, cross-arch. Make your commands and configurations portable, solve a problem once and for all users. Hundreds of builtin composable primitives for powerful and intuitive CLI and TUI scripting and automation. Portable between Bash, Zsh, Fish, Nu, Xonsh, Elvish, Dash, KornShell, macOS, Linux, Windows https://dorothy.bevry.me
Benjamin Lupton https://balupton.com
Sponsors https://github.com/bevry/dorothy/tree/HEAD?tab=readme-ov-file#sponsors
- We want those computers to work for us, not against us. We want to own our technology, not be owned by it.
- Dorothy returns that flexibity and power to us. Allowing easy swapping between machines, without time lost to lockin.
- We want to reduce redundant efforts, solve a problem once and for all users, not just for out-of-date stack exchange updoots
- Dorothy enables that open collaboration, providing hundreds of primivites we can leverage to save time, work faster, and collaborate.
- We value things that are eternally useful, not things that will go out of date in a few months or years.
- Dorothy is about intentions, not inventions. It is coded by hand for whatever works, as long as it will work a very long time. There isn't tech lockin.
- We want to learn quickly how to leverage these abilities for more power.
More on this: https://github.com/bevry/dorothy/blob/master/docs/dorothy/manual-to-assisted.md
- Started as my own dotfiles in 2013, first commit: https://github.com/bevry/dorothy/commit/e7e133ee
- It's now nearly 4000 commits and 500 stars later
- My own dotfiles now extend Dorothy: https://github.com/balupton/dotfiles
- We have several known users, all using a different combination of shells, operating systems, and architectures (macOS, Windows, Linux, ARM, Intel)
- Dorothy allows us to make sure our commands works across all these combinations, saving us all time, crowd-sourcing developer operations to the commons for the needs of indie developers, small businesses, and educational institutions
- Used to easily configure low-cost devices for family members and philanthropy efforts in Indonesia, where an old device can become a career that escapes from poverty
- But also, used to fill the need that I had for Dorothy, where to achieve anything, it requires individualised, specialised, knowledge, often with tooling made for enterprises, requiring the scale of enterprise teams to manage
Since 2023:
- Supports Windows via WSL
- Comprehensive CI testing for all Bash versions, all supported distros and architectures, including WSL
- Commands have continued to get polished,:
choose-optionandchoose-menunow just a powerfulchoosethat handles resizing, paging, descriptions, hotkeysis-*helpers for elevation checks - is a file missing because you don't have access, or because it truly doesn't exist- Proper ANSI supports, clearing, and constraining
- Powerful testing framework via
eval-helperandeval-tester - Robost regular expression handling via
echo-regexp, goodbyeawk,gawk,sed,sd,grep,ripgrep,teipconvolutions - Powerful filtering via
get-devicesandmount-helper(currently macos only, linux support being readded soon) - First-class styling now via
__print_style/echo-style - Beautiful and intuitive help syntax via
__print_help/echo-help - Formal conventions around Transformes, Generics, and Installers.
- Intricacies between bash versions, operating systems, etc have continued to be fixed, documented, and worked around:
- A new
bash.bashcomprehensive standard library, (along withzsh.zsh, andnu.nu) that handles version and intuition discrepencies.
- Dorothy is the largest repository of production quality bash code that I am aware of
What hasn't changed:
- Support for the user and your ambitions.
- Renamed and deprecated commands will gracefully be handled, reporting the deprecation and what needs to be done.
- Continued upgrade and integration support: bevry/dorothy#185
- Continued small and large improvements of our commands, sources, and conventions.
- The core offering of:
- Automatic configuration of your environment variables for the tooling you have installed.
- Semi-automatic configuration of your system, via tooling like
setup-shell,setup-system,setup-git,setup-... - Powerful commands and primitives that you can extend for your ambitions, such as
secret,setup-util,edit, and so on: https://github.com/bevry/dorothy?tab=readme-ov-file#showcase
For a summary of the hundreds of commands and the utilities, refer to the presentation Dorothy @ CampJS 2023 November.
- Command / Generics
- Installers / Utilieis
- Transformers / Echoes