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.
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.
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.
≈ 1.23 million source characters
≈ 4.1 cm of paper
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.
| Project | Language | Files | Lines | Basis |
|---|---|---|---|---|
| ACARSd 1.51 daemon | C | 80 | 47,976 | Surviving Linux build target |
| ACARSdClient | Tcl/Tk | 30 | 13,417 | GUI/application scripts |
| ACARSdClient support | C | 26 | 10,176 | Native support code used by the client |
| libacarsd | C | 4 | 2,495 | Core Linux library build target |
| libhomeradar | C | 36 | 12,499 | Surviving library build target |
| libacarsd2 | C | 22 | 9,800 | Recovered CVS HEAD sources |
| winsend2 | C / Win32 | 34 | 11,917 | Native MinGW32-era GUI; bundled SQLite excluded |
| mACARS | C | 16 | 4,264 | Recovered CVS HEAD sources |
| FlightShare2 | C / Win32 | 17 | 4,739 | Native MinGW32-era GUI; recovered CVS HEAD |
| ATLAS | ActionScript / MXML | 21 | 8,024 | Project classes + main MXML; third-party libraries excluded |
13,417 lines of Tcl/Tk drove the GUI — maps, server lists, statistics, sockets, uploads and even the hidden BreakOut, Memory and MovePuzzle games.
10,176 lines of C supported image handling, compression, maps, statistics, networking helpers and other native functions behind the Tcl/Tk client.
8,024 lines of recovered ActionScript/MXML cover the ATLAS application itself, excluding the large third-party libraries bundled in the CVS tree.
After the binary rescue and the final WORLD ACARS Report import, a direct count of the reconstructed MariaDB database returned 114,328,158 message rows. The local 2026 feeder is active again, so this number is a documented recovery snapshot rather than a permanent ceiling.
Verified with a direct full-table count on 30 August 2026 after the historical imports had completed.
RECOVERY SNAPSHOT • LIVE FEED CONTINUESThe earliest continuous historical material begins with ACARS_Report_20060101.txt. Earlier isolated timestamps were traced to corrupted 2017-era client records rather than genuine 2002/2005 traffic.
PROVENANCE CHECKED AGAINST UPLOAD METADATAThe first full archive year already contains almost 6.9 million searchable records across the reconstructed sources.
INDEXED RANGE COUNTForty Qingdao records appear as 31 December 2002 and five US records as 30 May 2005. All came from ACARSd 1.65 uploads received in 2017 and are retained as historical data-quality evidence.
PRESERVED, NOT TREATED AS ARCHIVE STARTThe final importer pass classified all 4,072 surviving files, preserved report-source provenance and skipped material already present. Counts below describe the completed import run, not an estimate.
Structurally recognised WORLD ACARS Reports among 4,072 surviving files; 1,976 files were invalid or non-WAR material.
FINAL CLASSIFICATIONRecords successfully parsed from the valid historical reports across the complete import run.
4,777 MALFORMED LINES RETAINED IN COUNTSRows added after idempotent duplicate handling; 1,663 report files were already imported and therefore skipped on the final pass.
IDEMPOTENT IMPORTThe source-preservation layer links historical records to 4,429 unique WORLD-report source keys.
WAR SOURCE LEDGERThe 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.
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 notesThe largest surviving report supplied for the museum is from 18 June 2008.
Surviving World ACARS reportThe surviving report for 2 January 2006 already shows more than sixteen thousand worldwide contacts for a single day.
Surviving World ACARS reportA large surviving 2014 report shows the network still collecting almost eighteen thousand entries in a day.
Surviving World ACARS reportThe database infrastructure eventually ran as a master with three synchronised mirrors — a long way from the small database that accompanied the first decoder.
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 station in Oberursel near Frankfurt with three scanners.
The characteristic ACARSd service port became recognisable enough to receive its own Nmap service detection and, later, a dedicated acarsd-info.nse script.
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.
ACARSd, ACARSdClient, libacarsd, libhomeradar, libacarsd2, winsend2, mACARS, FlightShare2 and ATLAS are represented in this count.
The final decoder run covered 179 rescue blocks, from acars-0000 through acars-0178. These are recovered client uploads, not the old WORLD report files and not a reconstruction of the original production database.
Original server-side upload files rescued from the failing ext3 host.
RAW COLLECTION FILESOnly 5,798 files failed structural decoding.
99.6648% SUCCESSIndividual reconstructed records contained in the successful uploads.
42.22 RECORDS / UPLOAD AVG.1,431,560 recovered uploads
292,417 recovered uploads
Important: extreme timestamps are not automatically treated as the historical start or end of the archive. Client clocks and upload context are checked separately. A 26 August 2026 upload has, however, been independently validated against its original TAR mtime and Apache POST log.