Platform/2010-Q1-Goals

General Goals

  • [DONE] Ship 3.6.
  • [ON TRACK] Implement security model for JetPack and eliminate platform blockers to the implementation of Jetpack panels.
  • [MISSED] Complete out of process plugins for windows and deliver a beta version of OOPP for mac.
  • 25% Ts improvement on Windows.
  • [MISSED] Kill sg:crits less than equal to 20.
  • [MISSED] Implement Layers to enable more hardware acceleration.
  • Identify and fix key performance and capability issues for developer tools.
  • [DONE] Implement crash reporting for ARM.
  • Implement crash reporting for x86_64 Linux and Mac.
  • [ON TRACK] Enable -fomit-frame-pointer optimization on x86 Linux and Mac.

GFX

  • Performance
    • [AT RISK] Implement the Gecko Layers API in software (Thebes) and at least one hardware implementation.
    • [AT RISK] Implement full-screen, accelerated (YUV->RGB) video on top of the Gecko Layers API.
    • [ON TRACK] Implement shared memory tile browsing, using Electrolysis, for Fennec.
    • [ON TRACK] Improve out-of-process plugin performance.
    • [ON TRACK] Continue to support the Electrolysis and startup time projects.
  • Font Feature Improvement
    • Add CSS parser support for additional OpenType-related font-variant properties

Layout

  • [ON TRACK] Improve the Web platform by contributing to tests and specifications by publishing the CSS2.1 test suite RC and/or identifying advanced layout specs for the future of the web.
  • [AT RISK] Improve the Web platform by implementing key features and correctness fixes to enable the use of SVG animation and more CSS3 features (Backgrounds, borders, or calc(), text-overflow, etc.) in the next release.
  • [ON TRACK] Improve perceived and measured performance in SVG, bidi, reflow, and CSS.
  • [ON TRACK] Complete general product improvements like Layers to enable more hardware acceleration. See Gfx for concrete layers work items and status.

Video/Audio

  • [ON TRACK] Complete removing dependencies on unnecessary third-party libraries.
  • [MISSED] Hardware-accelerated video rendering in Gecko on all platforms with suitable graphics hardware (20+fps full-screen on N900). We won't get accelerated full-screen video on N900 mainly because an OpenGL layers backend won't be ready in time to support this. However, we do have 25fps full-screen video working in our test player, with ~50% CPU utilization.

Content

  • [AT RISK] Move the web forward by landing WebSockets, enabling the HTML 5 parser by default, and/or finishing more File spec API improvements (i.e., File.url).
    • [AT RISK] WebSockets has r+, but needs another review. Reviews may happen, but testing infrastructure for it is unlikely to be ready
    • [AT RISK] HTML 5 parser code is likely to be done, and reviewed, but testing infrastructure is lagging behind and is unlikely to be ready by the end of the quarter.
    • [DONE] File API stuff is done.
  • [ON TRACK] Ship out of process plugins betas for windows and continue forward progress on full Electrolysis plans by getting basic HTTP working across processes and implementing multi-proc event handling.
    • [ON TRACK] OOPP
    • [ON TRACK] HTTP across processes
    • [DONE] e10s event handling
  • [ON TRACK] Improve performance by eliminating more cycles between JIT generated code and our DOM code, and by speeding up our DOM implementation as well.
  • [AT RISK] Investigate (and fix as needed) the impact of Firebug on Firefox performance and memory usage
    • Implement back-end functionality for allowing Firebug to hook into document load and unload to eliminate perceived performance problems with the use of Firebug.

JS

  • [ON TRACK] Continue to improve responsiveness: GC
  • Performance
    • [AT RISK] reduce performance uniformity issues (slow on some kinds of code)
    • [AT RISK] SunSpider / v8 perf improvements, another 30%.
    • [ON TRACK] jsval 64-bit representation - this allows better perf on win64 and snow leopard.
  • Improve Web Platform with new features:
    • [DONE] byte vectors for gfx and other uses - specialized ways to ship graphics data around.
    • Begin building out tool Support
      • [MISSED] Design JSD replacement
      • [MISSED] profiling support w/ JIT active
      • [MISSED] profiling hooks from JSExecute
      • [MISSED] heap profiling API
  • [ON TRACK] Basic inline threading system. This should be able to run almost all programs with inline threading, be at least a little faster with the tracing jit on, and be no slower with the tracing jit off.

Accessibility

  • [ON TRACK] Drive web accessibility with HTML5 (+ARIA)
    • [ON TRACK] address changes to WAI-ARIA specification
    • [ON TRACK] resolve known WAI-ARIA and HTML5 conflicts
    • [ON TRACK] participate in canvas accessibility
    • [DONE] participate in MathML and SVG accessibility
  • [DONE] Gather information from web content more safely
    • [DONE] Assist with creation of additional DOM API (reduce frame tree walking)
    • [DONE] Reorganize event code
  • [AT RISK] Drive accessible editing on the web
    • [AT RISK] Get agreement on editor keyboard behavior.

Multi-Process

  • [ON TRACK] Release multiple betas of multi-process plugins (Windows/Linux)
    • [MISSED] stretch goal: release multi-process plugins
  • [MISSED] Release a beta of multi-process Flash (mac)
  • [AT RISK] Make Fennec + Multi-Process fully functional (ready to measure and tune performance)
  • [ON TRACK] Integrate Multi-Process/Thread architecture into JetPack