Over the past weeks I have dived into the Matter codebase: https://github.com/project-chip/connectedhomeip . It’s quite big and complicated (but I’m sure small as compared to some other projects).
Every day I’m understanding a little more, hacking a little further, etc. Making some changes, learning lots of things.
How I do that right now is by keeping a (markdown) devlog, and pointing to github urls (file + lines in certain revision), in my own fork (where I can also change things, make my own experiments in branches, to which I can then point in my devlog).
It works, but I was wondering what others are using. I know there are not that many people jumping into the deep end of a code base they don’t have any experience with (more common seems to be: start fixing simple bugs, and you will understand more and more slowly; and at least in a commercial setting you tend to have a mentor), but I think it probably happens often enough that people may have started to write some tools for it.
I’m using python, and 2 things that allowed me to go through a codebase quicker are:
Assuming there isn’t a documentation present with stuff like that already.
Other than that testing proved to be a good approach for me too. Just go through code and write tests for functionalities you encounter, it may take a longer time doing it this way, but the time isn’t “wasted” as you’re increasing coverage etc (Assuming there are no tests or you implemented a change which didn’t break them).
At least in projects I encountered the testing approach, or even just going through tests proved to be a quicker solution, as it’s pretty much functionalities condensed into a few files instead of going through the whole code (Assuming the tests are granular enough etc)
Those are certainly interesting ideas, I will see if it makes sense on what I’m doing here!
I actually meant more in the way of a tool that integrates writing your findings, pointing at code, keeping track of changes, reminding you when you change lines (or want to write a comment on lines) that you commented on before. I’m not sure how it would look, I just feel that right now I’m doing a lot of stuff by hand :).