Compute and display
The tool
Paste a dependency file. It resolves what it can, tells you who is behind it, and drafts the declaration. It moves no money and never will.
Everyone builds payments platforms. Open Collective, Tidelift, thanks.dev, GitHub Sponsors: all good, all necessary, all solving the second problem. The first problem is that nobody knows who they are standing on, and a tool that just computes and displays is about a weekend of work and appears to be the part nobody has built.
A payments platform is a company. This is a script. It is also the only part of the design that is useful immediately, licence or no licence.
Understands package.json, package-lock.json,
requirements.txt, go.mod, or one name per line.
Everything stays in this tab.
Paste something on the left, or load the sample, and press Walk the tree.
What a real one would do
This page reads only what you paste into it. The version worth building does more:
- Resolve the full transitive tree from the lockfile, not the manifest. This is the difference between forty components and four hundred, and the interesting things are almost always in the difference.
- Fetch
maintainer.jsonfor each component that publishes one, following the repository URL to a domain. - Fall back to public signals where no profile exists: contributor counts, last commit, whether the org is a company, whether a funding file exists. Clearly marked as inferred rather than declared, because inferred data about real people should never be presented as fact.
- Rank by need, not by usage. The top of the list should be the unfunded single maintainer on your critical path, not the framework you use most.
- Link to funding channels that already exist. Deep link, do not intermediate. No account, no wallet, no fee, no rail.
- Diff against last year’s declaration and say what changed. This is where a series becomes more valuable than a document.
- Draft, then stop. Hand it to a person.
The tool must never look like the source of the obligation. If it did, the answer would be “we turned that feature off, so nothing applies”. Section 8.3 is explicit: the obligation exists whether or not any such software is used, present, or functional. Someone running a stripped fork with the reporting code deleted still owes the declaration. The licence names the fields; the tool is a convenience.
For the same reason, suggested contribution amounts live in the standard and in the tool’s interface, never in the licence. A number in binding text is a fee schedule.
What it deliberately will not do
- Take payments. Not a wallet, not an escrow, not a distribution mechanism, not a percentage. The moment money flows through this, it needs a company and the company needs to behave well forever, which is the failure mode the whole design was rebuilt to avoid.
- Score you. No badge, no grade, no percentage complete. Nobody assesses a declaration, and a tool that scored one would quietly become the regulator the licence refuses to appoint.
- Publish for you. It hands you a file. You put it on your own server, because that is the entire point of the file living on your own server.
- Phone home. Your dependency tree is not anybody else’s business, least of all this project’s.