Source archaeology β€’ by the numbers

How big did ACARSd become?

What began as a sound-card decoder grew into a family of daemons, clients, libraries, databases, web services and later ADS-B/Mode-S tools. The surviving source trees finally let us put some numbers on that growth.

47,976 physical lines of C in the surviving ACARSd 1.51 daemon build
80 C implementation files linked into that build
23,593 source lines in ACARSdClient: Tcl/Tk GUI plus native C support
125,307 lines across the recovered project snapshots listed below
πŸ€“ Nerd fact

What if you printed ACARSd?

The 80 C source files linked into the surviving ACARSd 1.51 daemon contain 1,233,701 characters in total β€” including comments, whitespace and source formatting.

Assuming roughly 3,000 characters on a normally filled A4 page, the daemon source alone would occupy about 411 A4 pages. Printed single-sided on ordinary 80 g/mΒ² office paper, that would be a stack roughly 4.1 cm high.

And that is only the ACARSd daemon β€” not ACARSdClient, the libraries, feeders, HomeRadar or ATLAS.

ACARSd 1.51 on paper
411

A4 pages

β‰ˆ 1.23 million source characters
β‰ˆ 4.1 cm of paper

The software family

Source code, counted from the surviving archives.

The figures are physical source lines, including comments and blank lines. For ACARSd, ACARSdClient, libacarsd and libhomeradar the surviving build definitions were used where possible. For CVS/RCS projects, the recovered HEAD revision was counted. Bundled third-party code such as SQLite and external ActionScript libraries is excluded.

ProjectLanguageFilesLinesBasis
ACARSd 1.51 daemonC8047,976Surviving Linux build target
ACARSdClientTcl/Tk3013,417GUI/application scripts
ACARSdClient supportC2610,176Native support code used by the client
libacarsdC42,495Core Linux library build target
libhomeradarC3612,499Surviving library build target
libacarsd2C229,800Recovered CVS HEAD sources
winsend2C / Win323411,917Native MinGW32-era GUI; bundled SQLite excluded
mACARSC164,264Recovered CVS HEAD sources
FlightShare2C / Win32174,739Native MinGW32-era GUI; recovered CVS HEAD
ATLASActionScript / MXML218,024Project classes + main MXML; third-party libraries excluded
Important: the grand total is a measure of the recovered project snapshots, not a claim of 125,307 unique lines personally written by one person. Utility modules were reused between projects, and the archives contain shared code. The individual project figures are the meaningful numbers.
ACARSDCLIENT

30 Tcl/Tk files

13,417 lines of Tcl/Tk drove the GUI β€” maps, server lists, statistics, sockets, uploads and even the hidden BreakOut, Memory and MovePuzzle games.

NATIVE SUPPORT

26 C files

10,176 lines of C supported image handling, compression, maps, statistics, networking helpers and other native functions behind the Tcl/Tk client.

ATLAS

21 project source files

8,024 lines of recovered ActionScript/MXML cover the ATLAS application itself, excluding the large third-party libraries bundled in the CVS tree.

The data side

Then the messages started to pile up.

The code was only half of the story. Every connected receiver could contribute contacts, and the searchable database grew until ordinary queries became an engineering problem of their own.

18M+

flight movements

Remembered in the searchable database by 2008. Contemporary libhomeradar notes from the period document query timeouts, server load and the introduction of faster indexes.

Author recollection + surviving project notes
35,499

entries in one World ACARS report

The largest surviving report supplied for the museum is from 18 June 2008.

Surviving World ACARS report
16,081

entries in an early worldwide report

The surviving report for 2 January 2006 already shows more than sixteen thousand worldwide contacts for a single day.

Surviving World ACARS report
17,996

entries in a late worldwide report

A large surviving 2014 report shows the network still collecting almost eighteen thousand entries in a day.

Surviving World ACARS report
DATABASE

1 master + 3 mirrors

The database infrastructure eventually ran as a master with three synchronised mirrors β€” a long way from the small database that accompanied the first decoder.

RADIO INPUT

Up to 8 scanners

Later ACARSd releases could use four sound cards and eight airband scanners. The multi-card support grew out of real contributor setups, including the famously private Frankfurt station with three scanners.

NETWORK

TCP 2202

The characteristic ACARSd service port became recognisable enough to receive its own Nmap service detection and, later, a dedicated acarsd-info.nse script.

Perspective

It stopped being β€œa decoder” rather quickly.

ACARSd 1.51 alone is nearly forty-eight thousand physical lines of C. Around it sat a 23,000-line client, reusable decoder libraries, HomeRadar, Windows feeders and finally ATLAS. The database reached tens of millions of movements while daily worldwide reports could contain tens of thousands of contacts.

None of these figures prove software quality. They do show the scale that a hobby experiment reached.

Recovered snapshots
9

major projects / components

ACARSd, ACARSdClient, libacarsd, libhomeradar, libacarsd2, winsend2, mACARS, FlightShare2 and ATLAS are represented in this count.