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.
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.
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 Frankfurt station 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.