The description at the end of the article about how package management doesn't have to be done in a way that shares all the files sounds a lot like a description of https://nixos.org/nix/
> If a member filename is an absolute path, a drive/UNC sharepoint and leading (back)slashes will be stripped, e.g.: ///foo/bar becomes foo/bar on Unix, and C:\foo\bar becomes foo\bar on Windows. And all ".." components in a member filename will be removed, e.g.: ../../foo../../ba..r becomes foo../ba..r. On Windows illegal characters (:, <, >, |, ", ?, and *) replaced by underscore (_).
It basically turns updates into appends and is based on a persistent tree structure (the header with a reference to the (revision) root page has to be swapped atomically. Other than that the revision indexes for new data are always appended. In order to reduce copy-on-write overhead for updated page (fragments) a sliding snapshot for the data pages is applied.
Naturally, unchanged pages are simply referenced (e.g. through offsets into the file, thus sharing unchanged pages between revisions).
What's also special is a path summary of all unordered paths in a resource, which enables user-defined smaller tailored secondary indexes and other query rewrites :-)
Interesting. Just made me think of using a custom filesystem to navigate a codebase. Similar to: https://github.com/osnr/TabFS. I wonder if anyone has done this.
In my memory of early Unix systems it wasn't a hard standard; some places /sbin wasn't user accessible, some it was.
I cannot recall if the att 3b2 systems had dynamic binaries in /sbin. if there was such a rule, that's the last place id expect it to be seen in the wild; i think in practice at sites it would've eroded by then into more of a "don't let users know these things exist" $PATH convenience.
https://fzakaria.com/2022/03/14/shrinkwrap-taming-dynamic-sh...
reply