Skip to content

ryandward/freeport

Repository files navigation

freeport

freeport

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.

The problem

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.

What we do

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.

Use it

Arch Linux

sudo pacman-key --recv-keys B06E95AC8D45885FE6451B669D64B2DDC464B011 --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key B06E95AC8D45885FE6451B669D64B2DDC464B011

Add to /etc/pacman.conf above [core]:

[freeport]
Server = https://github.com/ryandward/freeport/releases/download/repo
sudo pacman -Syu freeport-hook

freeport-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.

Build from source

git clone https://github.com/ryandward/freeport.git
cd freeport/distros/arch/systemd
makepkg -si

Other distros

Patches 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.

What we are tracking

Core packages

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.

Installers and desktops

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 systemd patch

The patch removes:

  • birthDate field from the user record struct
  • --birth-date flag from homectl
  • 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.

Distro responses

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

Help wanted

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.

Related

License

MIT

About

Strip age verification infrastructure from Linux packages. Arch first, distro agnostic by design.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors