Thoughts on Systems

Emil Sit

Jul 27, 2006 - 4 minute read - Research firefox mozilla programming tools web2.0

Robert O'Callahan visits MIT

Today, Robert O’Callahan stopped by MIT as part of his US Tour. He works for Novell is one of the “super reviewers” at the Mozilla Foundation. If you use FireFox (like 63% of my visitors this week), you probably run code he’s touched. He also wrote TTSSH, an SSH client that I linked to from my homepage for many years. Robert came to give a talk about current fronts in the “browser wars.” It was, though, less about Mozilla versus the world, and more about the way to develop the web for the future as well as some insight into the development of Mozilla.

His thoughts on the evolving the web with standards seems most similar to Mike Davidson’s view: instead of a developing “shiny and new” standards with a focus on validation, he would rather embrace, document and extend existing best practices. New functionality should be developed in backwards compatible manner and take into account problems (like security issues) that can arise when different standards interact in unexpected ways. He disparaged the compulsion of many researchers and parts of the W3C to try and design things from scratch; nothing winds up as clean as originally imagined (see SVG).

The impression I got is that standard writers operate in their own fiefdoms and don’t implement the full spec and so they don’t have the view of the world that a browser company like Mozilla or Opera might have. For example, validation and specs doesn’t help browsers deal with invalid input. Thus companies have banded together to form the WHAT working group to document de facto standards and produce on specifications with developers in mind.

Some interesting nuggets from his talk:

  • Randomized “fuzz testing” is more effective than current tools like those from Coverity. It finds more bugs than they have time to fix. This is perhaps because the code-base has very complex heap invariants that Coverity does not check for. More “custom” static analysis tools would be needed to check for those things.
  • The project’s regression tests are slow and not too complete. When asked about actual coverage, he wasn’t too sure but also indicated that there is a lot of dead code so strict coverage might not be as indicative. They have no automated UI testing.
  • Talkback is a tool that can send stack traces to the Mozilla Foundation when the browser crashes. It turns out that these traces are currently used to debug problems; instead the traces are usually for known bugs and help developers prioritize bugs for repair based on how frequently they happen in the wild.
  • Existing profiling tools aren’t good enough for them to discover the source of performance problems; they vary significantly from run-to-run and there is no good way to compare different runs, i.e., in order to find a change that introduced a performance problem. I wonder if DTrace would be at all useful.
  • The best external contributors to the project tend to be in quality assurance. Developers fall into two camps it seems: those that send one e-mail about helping but don’t make it very far, and those that show up with large patches solving real problems. Rob speculated that the build system served as a filter: if you could get past the build, you can probably produce useful code to address real issues.
  • In response to a question, he plugged microformats over RDF as being more likely to enable the Semantic-Web. I saw Sir Tim Berners-Lee in the audience, but he didn’t say anything during the talk.

It seems that one day Mozilla will soon have improved forms (?), 2D and 3D graphics, better font rendering (ligatures etc). I was interested to hear that they will be moving JavaScript more towards a Python-like flavor (as opposed to Java). He also mentioned the tantalizing possibility of adding type inference to JS2. In giving a talk at MIT, he closed with a number of research directions; his suggestions were largely in the area of tool development: better profilers, better static analysis, better IDEs.