You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Audit fixes: compound licensing, IDNA, attribution strip, drop xlsx
- Licensing: add LICENSES/ with preserved upstream texts (mailchecker MIT,
fakefilter BSD 3-Clause, disposable-email-domains CC0). Rewrite LICENSE
as a compound-license summary. Rewrite README licensing section.
Correct sources.yaml (fakefilter was mis-labeled as MIT; it is BSD 3-Clause).
- build.py: IDNA punycode normalization in normalize() so internationalized
domains canonicalize before dedupe. Split output stamps: combined.txt and
typos.txt carry a mixed-license header; historical-* carry pure CC0.
- integrations/actionkit.md: soften claims about AK internal schema
(core_blackholedhistory / subscription_status are version-specific).
Expand "the Walkers" on first mention.
- integrations/action-network.md: document using the self URL from _links
in the sweep pattern instead of constructing /people/{id}.
- Attribution: strip CREDO/Avaaz from README narrative, LICENSE, LICENSES
index, and build.py stamps. Keep provenance detail in sources.yaml.
- Update bio from live jordankrueger.com content.
- Drop sources/original-community-list.xlsx and the openpyxl dependency
(incl. workflow pip install). Pre-bake the two historical snapshots as
static sources/historical-{a,b}.txt files read by build.py.
- Rename data/credo.txt -> data/historical-a.txt and
data/avaaz.txt -> data/historical-b.txt for consistency.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+14-7Lines changed: 14 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,9 +14,9 @@ It's purely defensive. The list exists so you can *not* send mail to these domai
14
14
15
15
## Who put this together
16
16
17
-
Curated by [Jordan Krueger](https://jordankrueger.com) — formerly at CREDO Action (the progressive advocacy arm of the CREDO brand, defunct as of January 2020), where I helped build the internal exclude list this repo is partly based on. Also one of the people who sketched out the "Blackhole Domains" feature in ActionKit back in the day. Now running [CampaignHelp](https://campaign.help), consulting for progressive advocacy orgs on IT and operations.
17
+
Curated by [Jordan Krueger](https://jordankrueger.com) — operations consultant for progressive nonprofits and advocacy orgs, running [CampaignHelp](https://campaign.help). Nearly two decades in the progressive movement, and one of the people who sketched out the "Blackhole Domains" feature in ActionKit back in the day.
18
18
19
-
Contributing sources are credited in [`sources.yaml`](sources.yaml) — Avaaz, the CREDO Action historical snapshot, and the big community disposable-email repos. Full attribution preserved.
19
+
The list draws on two progressive advocacy orgs' historical internal exclude lists (shared years ago through a community spreadsheet), plus the big community-maintained disposable-email repos. Per-source provenance and licensing is in [`sources.yaml`](sources.yaml).
20
20
21
21
## What's in the list
22
22
@@ -25,8 +25,8 @@ Four files live in `data/`:
25
25
| File | Size | What it is |
26
26
|------|------|------------|
27
27
|`combined.txt`|~66k | The one most people want. Everything below, deduped. |
28
-
|`credo.txt`|~1.2k |The CREDO Action internal list (historical snapshot, circa 2019). |
29
-
|`avaaz.txt`|~4.4k |Avaaz's internal list (historical snapshot, heavily typo-derived). |
28
+
|`historical-a.txt`|~1.2k |Historical snapshot of an internal exclude list from a progressive advocacy org (circa 2019). |
29
+
|`historical-b.txt`|~4.4k |Historical snapshot of an internal exclude list from a second progressive advocacy org, heavily typo-derived. |
30
30
|`typos.txt`|~3.2k | Subset of combined that looks like typos of Gmail/Yahoo/Hotmail/iCloud/AOL/Outlook across TLDs. |
31
31
32
32
All files are one-domain-per-line plain text, with a comment header.
@@ -61,11 +61,18 @@ If your org maintains an internal list you'd like to fold in, open an issue or P
61
61
62
62
## Licensing
63
63
64
-
Released under [CC0 1.0](LICENSE) — public domain, no attribution required. Use it however helps your mission.
64
+
Mixed-license compilation. Short version:
65
+
66
+
-**This repository's original work** — build scripts, integration guides, docs, and the two historical snapshots contributed directly to this repo — is [CC0 1.0](LICENSE) (public domain, no attribution required).
67
+
-**`data/combined.txt`** also folds in upstream community lists licensed under MIT (mailchecker), BSD 3-Clause (fakefilter), and CC0 (disposable-email-domains). Their original license texts are preserved in [`LICENSES/`](LICENSES/).
68
+
69
+
If you redistribute `combined.txt`, carry the `LICENSES/` directory alongside it (or point consumers at the upstream sources in [`sources.yaml`](sources.yaml)).
70
+
71
+
Individual domain strings are facts and aren't copyrightable on their own, but the *selection and arrangement* of a list can be — which is why we preserve each upstream's license rather than relicensing under CC0.
65
72
66
73
## How the list is built
67
74
68
-
A [GitHub Action](.github/workflows/rebuild.yml) runs `scripts/build.py` nightly. The script reads local snapshots (from`sources/`) and fetches upstream community lists, normalizes every entry (lowercase, strip, validate), deduplicates, and writes the output files. If an upstream source is unavailable, the build soft-fails for that source and continues — the list never goes dark because one upstream went down.
75
+
A [GitHub Action](.github/workflows/rebuild.yml) runs `scripts/build.py` nightly. The script reads the local historical snapshots (`sources/historical-a.txt`,`sources/historical-b.txt`) and fetches upstream community lists, normalizes every entry (lowercase, strip, punycode for IDNs, validate), deduplicates, and writes the output files. If an upstream source is unavailable, the build soft-fails for that source and continues — the list never goes dark because one upstream went down.
0 commit comments