KC's post specifically asked about the OCaml compiler. My third year dissertation, supervised by David Allsopp, asked "what if assembly languages had instructions for functional programming languages" and in particular, OCaml! Hacking on the OCaml compiler is a course in software archaeology for many a younger CS student. Make, sed, awk, autoconf, bootstrapping, the runtime, frontend, git, lexing, parsing etc. Even if you are focusing on a particular aspect of the compiler (for me, it was the assembly generation in the backend) you still bump into a good 80 percent of the machinery that makes the compiler tick.
This is where having a good mentor is invaluable. David took the time to explain the parts of the compiler to me, and suggested some good starter exercises to get me going. Not only that, but David could help with all manners of questions that were vaguely related to the project at hand. From our conversations in early 2020 we have:
Another question I had (whilst trying to install the RISC-V cross-compiler in an Opam switch) is the difference/meaning of:
Followed by David helpfully adding 20GB to the root device on the shared server we were using, so I could run some Docker containers! Without an experienced, patient supervisor, this would have been death by a thousand cuts at the time.