Hi Arun, On 2026-02-27 at 01:56+00:00, Arun Isaac wrote: > I recently came across[1] this article that using git > as a database for package managers is a really bad idea. > The article argues the point with examples from many other > package managers including Nix. Guix is also a heavy user > of git of course, and perhaps we should be worried. > > https://nesbitt.io/2025/12/24/package-managers-keep-using-git-as-a-database.html
On 2025-12-24, Andrew Nesbitt wrote: > Users would see progress bars like "Resolving deltas:" [...] > Nix already solved the client-side problem. The package manager > fetches expressions as tarballs via channels, Authentication of Guix channel tarballs would be nice, of course it's not as good as full history authentication, but from an user PoV speed could be an important tradeoff. On 2025-12-24, Andrew Nesbitt wrote: > The [nixpkgs] repository totals 83GB with half a million tree objects > and 20,000 forks. A local clone is only 2.5GB. The rest is GitHub’s > fork network storing every pull request branch and merge commit. Sounds like a GitHub problem to me /s But really, this is not a problem inherent to Git. Something like AGit could help with garbage collectibility on Codeberg's side, and this was not an issue when we were using git:send-email. On 2025-12-24, Andrew Nesbitt wrote: > The underlying issue is that git inherits filesystem limitations, > and filesystems make terrible databases. [...] > Directories with too many files become slow. [...] Guix is using modules, though I'm curious if it's because if Git or just a coincidence. On 2025-12-24, Andrew Nesbitt wrote: > Databases have CHECK constraints and UNIQUE constraints; > git has nothing, so every package manager builds > its own validation layer. Databases have locking; git doesn’t. > Databases have indexes for queries like > "all packages depending on X"; with git > you either traverse every file or build your own index. This is funny because it precisely describe Guix d-; The problem with developing directly on a database though is there's no colaborative tooling for it AFAIK. In brief, aside from guix pull it does not seem to me like there is much can be done without going back to the drawing board, but I'm no expert on this and wish to be corrected. Best wishes, Phong
signature.asc
Description: PGP signature
