The future of symlinks in `krew`s installation procedure
Krew tries hard to not break an existing plugin installation, if something during install goes awry. To that end, krew uses symlinks to create a pointer from $KREW_HOME/bin/kubectl-<plugin_name> into the fully prepared plugin folder $KREW_HOME/store/<plugin_name>/v1.0/my-exe. This can happen very late in the installation procedure and is pretty much atomic. The only thing that could fail thereafter is removing the previous plugin version folder, which would take up space but is harmless otherwise.
This has worked pretty well for all UNIX like systems which support symlinks.
However, it pretty much failed for Windows, because the installation user needs administrator privileges to create symlinks on Windows. Thus we need to recommend installation with admin privileges, which is pretty sad.
As a consequence, I think that far less Windows users want or can adopt krew and our reach stays below its potential (think about users on corp machines). Therefore, let's discuss if we can come up with an installation procedure that does not require symlinks. I think we need to balance the potential impact against the risk of less reliable installation on other OSes.
Source: kubernetes-sigs/krew