https://ryandward.github.io/freeport
Linux is not a person. It does not have a birthday.
Asking your operating system to store a birth date is like asking a
bridge to carry a passport. Linux runs server farms, HPC clusters,
containers, CI pipelines, embedded controllers, and network
appliances. Somebody decided that all of these machines need a
birthDate field in their system packages. We remove it.
Legislation in multiple US states and Brazil requires operating
systems to collect user birth dates and expose age brackets through
a real time API. In response, birthDate fields, D-Bus interfaces,
and installer prompts are being added to core open source packages
like systemd, accountsservice, and xdg-desktop-portal.
| State | Bill | Status |
|---|---|---|
| California | AB 1043 | Enacted, effective Jan 1, 2027 |
| Colorado | SB 26-051 | Passed Senate, in House committee |
| Louisiana | HB 570 | Enacted, effective July 1, 2026 |
| Utah | SB 142 | Enacted |
| New York | S8102A | Pending |
| Illinois | HB 3304, HB 4140, SB 2037 | Pending |
| Federal | KOSA, ASAA | Pending |
| Brazil | Lei 15.211 | Enacted |
These bills share a common template (the ICMEC "Digital Age Assurance Act") and none contain exemptions for open source, non-commercial software, or infrastructure deployments. The TBOTE Project has documented through IRS filings, Senate lobbying disclosures, and state ethics records that Meta funded the advocacy group pushing these bills nationally while writing the legislation to exclude social media platforms from its own requirements. (findings repo)
This code ships to every machine that installs these packages. Your
Kubernetes nodes get the same birthDate field as a laptop. The law
targets consumer operating systems but the code lands in
infrastructure.
freeport patches individual packages to remove identity collection fields, then rebuilds them. Your distro stays your distro. You swap one package. Everything else is untouched.
We are not a fork. We do not maintain a parallel copy of systemd. We carry the minimum diff to remove the identity fields, and we apply it on top of whatever your distro ships.
Every 4 hours we scan upstream for new identity collection code across GitHub, GitLab, and Codeberg. Findings go to issue #1. Built packages are verified to contain zero identity collection strings before publishing.
sudo pacman-key --recv-keys B06E95AC8D45885FE6451B669D64B2DDC464B011 --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key B06E95AC8D45885FE6451B669D64B2DDC464B011Add to /etc/pacman.conf above [core]:
[freeport]
Server = https://github.com/ryandward/freeport/releases/download/reposudo pacman -Syu freeport-hookfreeport-hook scans every package before installation and blocks
anything containing identity collection code. When Arch ships a new
upstream version, freeport rebuilds it clean and publishes the update
through the same repo.
git clone https://github.com/ryandward/freeport.git
cd freeport/distros/arch/systemd
makepkg -siPatches are standard unified diffs against upstream source. The packaging around them is distro-specific. If you package for Debian, Fedora, Void, Gentoo, or anything else, open a PR.
| Project | What was added | Status |
|---|---|---|
| systemd | birthDate in userdb records, --birth-date in homectl |
Merged. Revert was closed. |
| xdg-desktop-portal | QueryAgeBracket D-Bus method |
Draft |
| xdg-specs | Age verification signal specification | Closed after community pushback |
| accountsservice | BirthDate property with polkit-gated get/set |
Open |
| Ubuntu D-Bus proposal | org.freedesktop.AgeVerification1 with SetAge, SetDateOfBirth, GetAgeBracket |
Proposed on ubuntu-devel. Technical blueprint for distro compliance. |
| Project | What was added | Status |
|---|---|---|
| Calamares | Birth date field, writes to AccountsService and userdb | Draft. European project getting US compliance PRs. Locked. |
| archinstall | Required birth date during user creation | Open |
| elementary OS | Birth date UI and account portal | Settings, Portals |
| Ubuntu | birthDate in desktop provisioning | Closed after backlash |
| ageverifyd | Reference D-Bus daemon for org.freedesktop.AgeVerification1 |
Repo |
| MidnightBSD | DOB in installer, aged/agectl tools |
Mailing list |
The patch removes:
birthDatefield from the user record struct--birth-dateflag fromhomectl- JSON dispatch, parsing, and display code for birth dates
- Pre-epoch date parsing path (only existed for birth dates)
- Associated test cases and documentation
Nothing else is touched. No other user record fields, no general date/time parsing, no other systemd functionality.
Complying: Fedora (project leader confirmed compliance), Ubuntu (reviewing with legal), elementary OS (following Ubuntu), Pop!_OS (considering minimal changes)
Refusing: Slackware, Garuda Linux, Adenix, Omarchy, MidnightBSD (banned CA residents from desktop use)
Systemd-free (not affected): Artix, Alpine, antiX, Void, Devuan
Silent: Arch, SUSE, NixOS, Linux Mint
This is a one person project. I need people who know package manager internals. I need people who package for distros other than Arch. I need lawyers who understand AB 1043. I need people who want to watch upstream and flag new threats.
Open an issue. Start a discussion.
- TBOTE Project pulled IRS 990s, Senate lobbying disclosures, state ethics records, and campaign finance data to document the lobbying operation behind these bills. Findings repo.
- AntiSurv/oss-anti-surveillance tracks identity collection across the Linux stack. No patches.
- BryanLunduke/DoesItAgeVerify tracks which operating systems have implemented identity collection.
- Ageless Linux is a Debian distro in deliberate noncompliance with AB 1043.
- outerheaven199X/ageverifyd
reference
org.freedesktop.AgeVerification1daemon.
MIT