As previously mentioned, it's past time that we did something as a team about the hygiene of our codebase.
To that end, I am coordinating a collection of initiatives over at least the next quarter to address specific areas of concern, under the umbrella of general codebase and API cleanup. This work is known collectively as Carnitas.
The high level goal is to make the code clearer, simpler, more automatically and self documenting. Some of the high impact work collected under this umbrella so far are:
- A generalized TabContents API. This includes simplifying the API for TabContents and extracting it and relevant mparch pieces from src/chrome as much as possible into a standalone dep. This will allow a variety of products based on Chrome to reliably consume this core component.
- Much cleanup in browser-land. It is kind of spaghetti soup in src/chrome/browser right now. I would like to break it down into more clearly isolated pieces. We are also seeking to minimize dependencies between components and make sure the dependencies flow in the right direction. This will allow us in time to reduce the size of browser.lib and be smarter about our build. We are also seeking to define a clearer API between Chrome and ChromeOS in the FE so that Chrome changes impose less headache for the ChromeOS folk.
- Encourage C++ best practices and style guide adherence through automatic means (clang). This will allow us to maintain readability standards as we grow the team rapidly.
Are there other major areas of cleanup or refactoring that should be covered by Carnitas? If so, please let me know. I plan to send out a weekly update of progress to this list so people can see what we're up to and how we're tracking towards our objectives.
Also, if you're interested in helping with cleanup and have cycles spare, let me know.
Regards,
-Ben
(Why "Carnitas"? Because it's fun to say!)