There is lots to learn about the chromium code base, both at a macro level (how the processes are laid out, how IPC works, the flow of a URL load), and at a micro level (code idioms such as smart pointer usage guidelines, message loops, common threads, threading guidelines, string usage guidelines, etc). Learning to do things the chromium way: Coding style: http://www.chromium.org/developers/coding-style. If you’ve coded elsewhere, the chrome guidelines (and code reviewer comments) might seem hardcore and nitpicky. For example, extra spaces at the end of lines are forbidden. All comments should be legitimate English sentences, including the ending period. There is a strict 80 column limit (with exceptions for things that can’t possibly be broken up). A personal learning plan: Eventually you’ll have your build setup, and want to get to work. In a perfect world, we would have all the time we needed to read every line of code and understand it before writing our first line of code. In practice, we’d have a hard time reading just the checkins that happen in one day if we did nothing else, so none of us will ever be able to read all of the code. So, what can we do? We suggest you develop your own plan for learning what you need, here are some suggested starting points. Fortunately for us, Chromium has some top quality design docs http://www.chromium.org/developers/design-documents. While these can go a bit stale (for instance, when following along, you may find references to files that have been moved or renamed or refactored out of existence), it is awesome to be able to comprehend the way that the code fits together overall.
Webkit: Sometimes to make a fix or add a feature to chromium, the right place to put it is in webkit. You can find out more about webkit here http://webkit.org. There is also a “How Webkit works” slide deck here: https://docs.google.com/presentation/pub?id=1ZRIQbUKw9Tf077odCh66OrrwRIVNLvI_nhLm2Gi__F0 There is a slide that explains a basic workflow for webkit development for people who are already familiar with chromium development here: http://dev.chromium.org/developers/webkit-development-workflow |
