Ever since I found the tool cloc, I've found it primally satisfying to use it on stuff. How many lines of code does your favorite project manage its magic in? cloc shows you how the weight is split between languages as well as comments, blank lines, and real code.
I counted a bunch of various projects and thought the totals were rather interesting. I'm counting only the lines of code, excluding comments and blank lines.
ls(FreeBSD version) - 2600. 1800 of this is C, the other 800
sh(FreeBSD version) - 13k. Ouch. And I used to toy with the idea of writing my own shell... yeah, maybe not. 12k C, 600 Make, 300
sh. Only a few hundred of these lines are tests.
Nano - 74k, but 56k of it is PO files. Only about 16k of actual code (all C).
Xpdf - 100k C++. Damn, to think it takes that much to render PDFs. Well okay, it does a lot more than that, but still.
Qutebrowser - 110k. The main code is about 40k lines of mostly Python; the tests add another 25k Python, 17k JS, 6500 of something I've never heard of called Cucumber, and a few other things. The other 20k comes from "./misc" and docs. So the job itself isn't as heavy as the total makes it sound, but still, sheesh. And it's just a browser frontend, not a rendering engine!
Xorg - 200k. I counted this a long time ago and wrote it down. If I remember correctly, this was only the xorg-server's count, but the repo was very confusingly structured, so it could be a very unfair count. (The repo was also exceedingly difficult to find and took me forever to download :))
PDF.js - 120k; 100k JS. (I counted all of browser/extensions/; but I know at least most of this is PDF.js)
Necko (netwerk/) - 380k. 160k C++, 80k C, 60k JS.
Firefox frontend (all of browser/, besides extensions/) - 700k. Phew! And I thought Qutebrowser was big! 600k is JS, 80k C++.
NSS - 1m, 700k C and 140k C++.
For comparison to some other programming languages:
CPython (3.9.0 alpha) - 1m. What seemed to be the Python interpreter itself was only about 500k lines of C; the other 500k being the Python stdlib.
Google's Go implementation - 1.7m. 1.6m of it was Go. I'm surprised this is so much larger than CPython. And still so much lighter than Spidermonkey.
Oh, did I skip the actual Gecko rendering engine? I saved the best for last.
- Gecko rendering engine - it's not obvious from their descriptions which dirs should even count as part of it, but I think the brunt of what counts is under layout/, dom/ and parser/. Combined, they're 3.5m. Somehow, 1.5m of this is HTML. There's about 1m C++ and 500k JS.