This video shows the source file tree of Audacity over time. The individual files are represented as circles, the lines are folders. More explanations in description.
By and large, the cpp files (blue) are the main bits of Audacity code. They are generally paired with header files (h, in red), which just is a quirk of C++ programming. xpm files are images, which are particularly well-suited to be included in C and C++ programs.
You may see the folders win, mac and m4. These mostly contain compiling scripts for VisualStudio, XCode and Autoconf, respectively.
Due to the long history of Audacity, there have been some CVS → SVN → git conversions here, as well as manual wrangling things into uniformity. Originally development happened in sf-cvs/audacity-src/trunk/ which I rewrote the history for to be directly in / instead. Additionally, I filtered out lib-src/, which contains vendored dependencies.
Interesting events:
0:00 Audacity 0.8
0:30 Split from audacity-old
The old folder is kept around for a while, but from here the development happens in a new place.
0:41 Audacity 1.0 and 1.1 release on the same day
1:45 Audacity 1.3 and 1.2.4 get released together
3:05 audacity-old gets zapped
3:40 Audacity 2.0
4:30 Audacity 2.0.6 accidentally appears
This probably was meant to be put into a branches/ folder (which I don't track), but briefly existed in trunk/ instead.
5:38 A swarm of translators appears
Just before each release, translators get notified that they now can safely make changes without worrying that the source will change before the release. Also, the number of .po files is the number of translations. You can observe these "swarms" throughout the video.
6:26 Audacity 3.0
6:33 The first Muse-release of Audacity, 3.0.3
7:06 final state
The final state is helpful to the discussion why this is a WIP: There currently are two major projects ongoing in Audacity:
1. Getting most of the src folder (on the left) to become individual libraries (on the right) or modules (currently a small folder in the middle)
2. Moving from wxWidgets to QML.
Both of these efforts just got started, so currently, there isn't much to see of that. This leaves this video without a satisfying end point. In a full video, I'd want either one or both of these major projects to be complete, so you can see the massive changes happening currently. I'd also want to include a narration and trivia about the project.
So while we wait for that, I hope you enjoyed this video as-is.
CREDITS:
Visualization: Leo Wattenberg, https://leo.wattenberg.dk using https://gource.io/
Music: teetow, https://teetow.com/