4 ms·
Looking at the languages used in Thunderbird source (https://wiki.mozilla.org/Tree_Rules/comm-central#Thunderbird https://wiki.mozilla.org/Tree_Rules/comm-centr
by sciurus 8y ago
Looking at the languages used in Thunderbird source (https://wiki.mozilla.org/Tree_Rules/comm-central#Thunderbird https://wiki.mozilla.org/Tree_Rules/comm-central#Thunderbird):
$ cloc build/ ldap/ editor/ mailnews/ mail/
3938 text files.
3848 unique files.
949 files ignored.
github.com/AlDanial/cloc v 1.80 T=6.01 s (497.6 files/s, 127309.9 lines/s)
---------------------------------------------------------------------------------------
Language files blank comment code
---------------------------------------------------------------------------------------
C++ 360 36718 26562 207587
JavaScript 1098 39149 63692 195828
CSS 278 7371 2664 30455
C 83 5339 8278 29463
C/C++ Header 413 7091 8979 24034
IDL 238 3205 0 18852
XML 40 1365 690 16902
JSON 24 7 0 5367
DTD 180 772 1360 5344
Python 24 893 2422 3740
NAnt script 118 489 0 2512
Objective C++ 5 461 163 2231
HTML 62 178 22 1666
XHTML 14 186 98 1096
INI 28 46 12 687
Windows Module Definition 7 24 156 354
LESS 1 33 52 183
make 4 36 22 133
TOML 1 17 7 110
Freemarker Template 6 24 0 98
WiX source 1 11 25 71
Ant 1 6 5 49
Markdown 1 10 0 49
Bourne Shell 3 8 11 23
Windows Resource File 2 6 11 15
---------------------------------------------------------------------------------------
SUM: 2992 103445 115231 546849
---------------------------------------------------------------------------------------
- jcranmer 8y agoYou forgot db/mork, which is another ~100K-ish LOC (at least as measured by wc -l).
- sciurus 8y agoOops! I'm not actually familiar with the Thunderbird source's organization, so I just went by what was marked as owned by Thunderbird in that wiki page I linked.
- jcranmer 8y agoIn practice, Thunderbird is all of comm-central sans suite/ and chat/. calendar/ used to be Sunbird [a standalone calendar client], but those people decided to channel all of their resources into Lightning instead, so all of the Sunbird-specific stuff was ripped out. Lightning is strictly speaking an independent project from Thunderbird, but it is far and away the most-used extension in Thunderbird and parts of it (particularly the backend) have essentially moved into the TB distribution for various policy reasons. There's some other stuff that's basically build system, release engineering, or testing gunk, but that stuff is mostly Python anyways and won't impact the SLOC metrics too badly.
- xte 8y agoMere line count does not tell a truth, simply because you can do more thing with a SLoC in a language than another, also sometime to be on certain platform you need an enormous amount of code only for them that's have no other purpose that boilerplate for a platform. Too simplistic :-)
- jcranmer 8y agoMost of the backend is written in C++. This is the mail protocol suite, the message database store logic, most of the internal account glue stuff, and even the bits that drive the main message listing (although that's moving to JS because Mozilla is killing off nsITreeView, a move which I fear for the performance implications of). The parts that are in JS are most of the code that drives the actual display. Of the MVC for the display, essentially the main model and view are both implemented in C++ whereas the controller is JS. The largest pieces of the backend that are in JS are the RSS functionality and gloda (one of the search backends), as well as half of the MIME parser.