XStow vs Stow – Key Differences

stow

According to the official XStow news, the package was last updated on 2010-07-22.
On the other hand, the GNU Stow git repository (mantained by Adam Spiers) had activity just 10 days ago, and the latest stable version came out on Feb. 18, 2012.

Most of the information I can find online about the differences between Stow and XStow dates from many years ago, and does not seem to reflect any of the recent changes.

With this, what is a modern look at the differences between GNU Stow and XStow?

Best Answer

The 'Special Features' section of the XStow home page is out of date; for example GNU Stow now supports multiple stow directories, and supports regular expressions in some contexts. The 2.x release was almost a complete rewrite, with major refactoring, an improved two-phase approach, and a comprehensive test suite. Since then I added and changed many things including support for ignore lists, file adoption, optional disabling of folding (AFAICS XStow doesn't support folding at all, which wouldn't be too surprising because that's by far the trickiest thing to get right).

In my undoubtedly biased opinion, the original motivation for writing XStow was questionable, or at least driven by reasons which are now obsolete. The home page says "Stow requires Perl. But what's on systems where no Perl is available, or not yet installed? I tried compiling Stow with perlcc, but it failed", but in reality how many systems are there out there which support symlinks and don't have Perl preinstalled? Perl is ubiquitous. C++ strikes me as an absolutely terrible language choice for this kind of utility where performance is far less important than code maintainability.

That said, XStow does have seem to have a few nice tricks, and I intend to steal at least one of them for GNU Stow by adding install hooks to handle the Info dir merging use case, at least. Also the code is maintained in a git repository and I'll gladly accept pull requests against the github project.

I'm also planning to release a new version of GNU Stow at some point this year, but so far not much changed in git since the last release (2.2.0). My top priorities are currently to facilitate selective folding and install hooks.