Published September 21, 2026 · Added September 21, 2026

I Wanted to Pay My Dependencies. Only One of Three Registries Would Let Me Find Out Who to Pay.

Noble Ronin writes that after building an actor that normalizes package metadata across npm, PyPI, and crates.io, he went looking for funding links so he could send money to his dependencies and found the three registries treat the data very differently. npm implements a real funding key in package.json and an npm fund command that walks the dependency tree, and 9 of 25 well-known packages he sampled declared a funding channel, while foundation- and company-backed packages such as react, vue, typescript, jest, and next did not. PyPI's project_urls is free-form text with no reserved funding key, and crates.io's sparse index carries no homepage, repository, or funding field at all. He also found that chalk's package.json declares a GitHub Sponsors URL even though its repository has no .github/FUNDING.yml, and argues the gap makes it hard to route money to the maintainers who need it.

Noble Ronin writes that after building an actor that normalizes package metadata across npm, PyPI, and crates.io, he went looking for funding links so he could send money to his dependencies and found the three registries treat the data very differently. npm implements a real funding key in package.json and an npm fund command that walks the dependency tree, and 9 of 25 well-known packages he sampled declared a funding channel, while foundation- and company-backed packages such as react, vue, typescript, jest, and next did not. PyPI’s project_urls is free-form text with no reserved funding key, and crates.io’s sparse index carries no homepage, repository, or funding field at all. He also found that chalk’s package.json declares a GitHub Sponsors URL even though its repository has no .github/FUNDING.yml, and argues the gap makes it hard to route money to the maintainers who need it.

Read the original story.

Source: Dev