Which is pretty cool, btw! But if you are actually interested in "Python Meets ZSH", have a look at Xonsh instead :)
Not your faults but we all need to ditch from those black boxes if we want to evolve instead to go to well colored jails.
Anyway IMO the best description is: "wrapper to execute scripts in a context depending on local directory instead being shell-wide, simple CLI provided to use and manage all scripts."
One of it's key features is that it enables you to define shell functions that are local to a specific directory, but Funky also does a bit more behind the scenes to add some value. For example it also:
* Checks for aliases of the same name and disables them if any exist (this can cause annoying ZSH errors if you tried to define the function manually).
* Appends special bash paraemeters (e.g. "$@") when appropriate so funks act more like aliases without the drawbacks.
* Tries to predict how ZSH completion should be defined, running a `compdef` command if it succeeds. (It needs a little more work in this area I think.)
And I think there's definitely some potential for greater functionality going forward.
Traditional shells have some nice things mostly due to the power of UNIX software, but also limitations for the very same reason.
Personally having choose to live in Emacs I notice a significant reduction of shell usage, eshell included, but it still can't substitute a real terminal for me, I tried xonsh and find the same: sometime python power rocks, sometimes does not. Perhaps we still need many new step before achieve a new game changing interface...
I’m getting tired of people making up ad-hoc cutesy names for no reason whatsoever. E.g. why do we call Rust packages “crates”?
“Compilation unit” just doesn’t roll off the tounge the same way as “crate.”
(And “funk” is how many pronounce “func” as in “function”, they’re using the short name to reinforce the tool’s name. That’s not “no reason.”)
"Rolls off the tongue" is at best an "eh" reason, at worst just an opinion about how a word sounds to some people, which isn't a very strong argument for coming up with new words.
Conciseness is a virtue. Additionally, “compilation unit” can also be misleading; for example, incremental recompilation compiles just a portion of a compilation unit, so it’s not really a unit anymore.
On the other hand “crate” tells you nothing at all.
This is off-topic, but I was curious enough to go looking. It seems there has been a thing called a "crate" ever since the first commit in Graydon's personal repo , though I'm not sure it had the same meaning as it does now.
PATH is a global namespace. We probably shouldn't just go making ambiguous binary names to be used by a shell.
Granted, that is just a weakness of shell design.