Asimov hasn't been getting the love it deserves, and I'm happy to welcome @sudar as a co-maintainer (see #48) to help things along.
I have a lot of ideas for where I'd like to see Asimov go, but want to open them up to the community for thoughts + discussion before implementing.
Near-term
Get Asimov submitted to Homebrew (#2)
This has been a goal since the beginning of the project, but Homebrew's policies dictate that the repository needs to meet a certain threshold of stars (50) on GitHub in order to be considered. Fortunately, this was exceeded some time ago, so now it's a matter of getting the Homebrew recipe in-place. I had started (and then re-started) this effort, but #34 looks the most promising. I'm totally the blocker in reviewing and approving :/
Introduce automated testing (#31)
The logic as it stands right now is pretty straight-forward (match a config/dependencies file with its corresponding installation directory and, if found, exclude from Time Machine) but having something that could run in a CI environment would be extremely useful to make sure we're not breaking things as we go.
Eventually
Introduce a configuration standard (#27)
A number of issues have hinted at the need for a user-level Asimov configuration file, enabling individual users to configure not only the patterns that should be matched but also other directories (#28), whitelist specific directories (#14), and more.
Issue #27 proposed something like an .asimovrc
file, which could be used to store Asimov configurations.
Expand beyond development dependencies
Asimov was designed for developers, but there have been some great suggestions around other things that can be excluded from Time Machine (for example, Spotify caches, suggested in #39).
If Asimov becomes something of the de facto tool for keeping Time Machine backups limited in scope, there are a number of other file types that we might want to include:
- Multimedia render files
- Caches and log files
- Thumbnail metadata
Possibly rewrite in something besides Bash?
Asimov is currently written in Bash, since it's essentially performing filesystem traversal, basic pattern matching, and then interfacing with the tmutil
program; if we want to get into more sophisticated functionality (for example, asimov list
to see everything excluded from Time Machine backups, it's probably best to consider rewriting in a different language.
My default direction would be as a Symfony Console application, but that's mostly because PHP is my primary language (and PHP comes pre-installed on MacOS). An abstraction around tmutil
will make the tool easier to work with, and Symfony components are designed to be well-tested. Distributing it as a PHAR means we still only have one file being installed.
The drawback here is that MacOS typically ships with older versions of PHP, which means the package would either need to be written using older PHP conventions, PHP would need to be marked as a dependency within Homebrew, and/or support would need to be restricted to versions of MacOS that ship more recent (read: PHP 7.2+) releases.
Make Asimov the go-to tool for interfacing with tmutil
The default tmutil
tool shipped with MacOS isn't super-well documented, and is much more a developer tool than something intended for typical users. While I don't believe a GUI is necessary (Time Machine already provides that), providing a user-friendly Time Machine interface would be helpful.
Potential commands could include:
add
- add files/directories to the exclusion list
config
- read/write entries from the user's .asimovrc
file
ls
/list
- Show all files/directories that have been excluded from Time Machine
prune
- Locate any directories/files that have been added to the exclusion list but no longer exist (which would address #38)
rm
/remove
- Remove files/directories from the exclusion list
scan
- Scan the filesystem for any new files/directories to be excluded. This is the default behavior of Asimov today.