Summer of Code 2009 Summary

This text is the summary email I sent to the Chromium mailing list after completing my summer of code.

My project was 'Forging a better Cr on Linux', and Dean was my mentor.

I had an eye on doing performance/memory usage work motivated by my attempts to run Chromium on the Beagleboard; an ARM system with 128MB of RAM. Chromium works and you can come along to OSDC for my talk "There's something on my ARM" for all the details.

I didn't get as much done as I would have liked as I was attending classes and sitting exams throughout my "Summer" of Code, a downside of being a student from the southern hemisphere. This means I'm going to stick around the project to continue working on things I'm interested in.

(For my record as much as anyone else) here is a summary of the patches I wrote, in chronological order:

Patches

Scale backing store cache size

This would scale the number of DIBs stored based on the system RAM. It's since been replaced by a more complex algorithm.

Set process name on Linux

This was to help distinguish the renderer from the browser (and the zygote, which was just appearing at the time). It was reverted as it broke the UI tests which iterate over the process name. I did not resubmit as 'ps f' provides the same information for less lines of code.

Jankfs

An idea Dean had; write a FUSE filesystem to simluate slow and unreliable storage. See the thread on chromium-dev.

ARM build

The tree had built for ARM at some point in the past but had since bitrotted. I went through building a toolchain, and then a root filesystem, and found 3 gcc ICE (internal compiler errors) on the way. I then made a bunch of changes in working towards building and running Chromium on the Beagleboard:

For instructions on building see LinuxChromiumArm

Memory usage in task manager on Linux

Calculates the memory usage of each process. This is committed and working, but the API needs to be re-worked to be less Windows-like before about:memory is ready for Linux. See codereview 159777

Fix proxy settings for Gnome >=2.26

Newer versions of Gnome use a different binary name, this made the "Change proxy settings" button work for both.

Add ctrl+w accelerator to close bookmark manager for linux

Fix PR_ImplodeTime for Linux x64

This was one of the last patches to make the chrome tree compile for x64 without patches, building on Dean's work. Beware the 2038 bug.

One liners

Summary

According to the logs I wrote 22 patches.

Despite having been around open source projects for a number of years, Chroimum's development process taught me many new things. Having code review for all changes made was a new to me, and line by line review is great at ensuring I got detailed feedback.

Dean's mentoring was the most valuable part of the experience. He was great at answering questions and explaining the concepts I was not familiar with. Having the ability to communicate via IM made this very easy and I would encourage mentors and students to follow this setup in future years.

Thanks to Dean for mentoring me, and everyone else who reviewed and committed my patches.