One cool feature of functional package managers such as Nix and Guix is that the dependency graphs are entirely transparent and can be inspected programmatically.
I wrote a script that lists the number of dependents for each package in Guix by traversing the package graphs:
https://gist.github.com/mbakke/f354272666fbef09c5229f7b85377...
Running it takes about 16 seconds on my laptop, and piping to 'grep -v bootstrap | sort -rn | tail -n 20' gives:
16695 guile
16692 ld-wrapper
14686 pkg-config
14512 perl
14444 ncurses
13135 readline
13133 zlib
13022 libffi
12470 xz
12448 libunistring
12433 openssl
12353 bash
12050 libxml2
12016 gettext-minimal
11950 tar
11942 bzip2
11896 expat
11857 tzdata
11850 net-base
11846 python-minimal
(GCC, glibc and binutils are missing for complicated reasons, but should be up there with Guile)
By changing (all-packages) on line 26 to:
(fold-packages (lambda (package result)
(if (string-prefix? "python-" (package-name package))
(cons package result)
result))
'()))
We get the most popular Python projects:
6672 python-setuptools-scm
6667 python-nose
6662 python-pyparsing
6662 python-more-itertools
6661 python-wcwidth
6660 python-py
6660 python-pluggy
6660 python-atomicwrites
6657 python-six
6593 python-mock
6587 python-appdirs
6586 python-lxml
6584 python-filelock
6584 python-distlib
6583 python-sortedcontainers
6580 python-hypothesis
6577 python-elementpath
6576 python-xmlschema
6575 python-pytest
6303 python-libxml2
This approach misses "end user" packages such as browsers and QEMU, but provides some insight into high value targets.
For end user packages, Debians "popularity contest" can be useful:
https://popcon.debian.org/