On Wednesday, 22 October 2014 at 02:09:53 UTC, Jonathan M Davis wrote:
The usual suggestion that I've heard given (without any particular language in mind) is to start by tracking down and fixing a bug in it
This is how I usually do it too, though you don't even need to find a bug in it. Picking any feature and trying to find it in the codebase and understand how it is implemented will usually serve well as an entry point. To understand all of the code, I'd start taking notes though, as they're useful to fall back on later. Either way, I wouldn't try to swallow all of it before starting to work with the code. I've been working on codebases just fine without understanding them in their entirety, as such is the magic of code separation. I'm pretty sure there are real codebases in the wild where nobody understands all of it. X11 comes to mind.