My two cents: ROOT is huge, and you don’t need to understand it all to contribute. It’s much simpler to pick one issue that seems self-contained enough, ideally related to ROOT features that you are already a bit familiar with, and try to figure out what’s needed to fix that – ROOT devs will be happy to help you along and reply to any questions.
Also to familiarize with a new codebase it’s not so useful to read it as if it was a book. It’s simpler to start from a feature or component and ask “how does this work?”, and you can look at its code but also run a debugger on a toy program to see what the interesting code paths are, or use ad-hoc tools such as sourcetrail to navigate the sources.
Cheers,
Enrico