Platform/2009-Q4-Goals

From MozillaWiki
Jump to: navigation, search

General Goals

  • Improve cold startup performance by 30% on windows and mac.
  • Deliver out of process plugins for windows.
  • Deliver SVG Animations.
  • Kill security bugs to under 30 again.
  • Reduce crashes to at least parity with pre-3.5.
  • ARM Support
    • Add testing infrastructure.
    • Implement crash reporting
  • Release Firefox 3.6.

GFX

  • Performance: specifically, responsiveness.
    • Create an automated responsiveness/interactivity benchmark.
    • Improve Gecko/Firefox's score on that benchmark substantially (at least 25%).
    • Support and/or participate in the startup time work being done by the Firefox group.
    • Participate in the Electrolysis project by adding support for windowless plugins on Windows.

Win Integration

  • Address any Win7 compatibility issues that show up

Layout

  • Improve the Web platform by contributing to tests and specifications
    • Publish CSS3 Selectors as CR [fantasai] (done) (backgrounds and borders CR done)
    • Ongoing development of reftest infrastructure for the W3C [fantasai, jwatt] (missed)
  • Improve the Web platform by implementing key features
    • Land Harfbuzz prototype integration in tree (allows for richer typographic control, also lays groundwork for performance improvements) [jfkthame] (mostly done, will miss landing)
    • Implement calc() (Web platform) [dbaron] Probably insufficient dbaron resources due to crashkill etc (missed)
    • Support CSS transitions/SVG animation on nearly all CSS values (browser parity) [dbaron, dholbert] (done)
    • Enable SVG Animation with shippable feature set (near-complete CSS property coverage, near-complete SVG attribute coverage, but not necessarily syncbase timing) (Acid3, browser parity) [dholbert, birtles, jwatt] (pathlist and lengthlist done this quarter, finishing off next quarter)
  • Improve perceived and measured performance
    • CSS scanner performance analysis and improvements (performance) [zwol] (delayed due to security work) (? maybe a patch end of next week)
    • Implement some kind of lazy frame construction [?] (tnikkel)
    • Compositor phase 2 --- paint and animation control (performance, also add JS animation API to the platform) [roc] Delayed in favour of layers work
    • Implement core layers infrastructure to allow for hardware and multithreaded acceleration [roc] (on track)
  • Improve core code architecture to improve stability/performance and reduce cost of future enhancements
    • Simplify frame destruction [fantasai] (waiting for review)
  • General product improvement
    • fix scroll position restoration and maintenance (bugs 43114 / 103279) [dbaron] (crashkill victim, also blocked on scroll refactoring)

Video/Audio

  • Video on ARM - Theora, 15fps on N900 full-screen [at risk due to hardware unavailability]
  • Remove dependency on libfishsound, liboggz, and liboggplay [doublec]
  • Experimental implementation of accelerated full-screen video using cairo-gl [kinetik] Obsolete due to layers plan

Mac OS X

  • Resolve Mac OS X Java situation for Firefox 3.6.
  • Fix any major regressions in 64-bit Mac OS X builds.
  • Complete initial performance analysis of 64-bit Mac OS X builds. Should include comparison with 32-bit builds on 10.6 for major benchmarks.
  • Fix all known regresssions in Cocoa NPAPI, make it ready to ship.

Content

  • Move the web forward by implementing more of HTML5
    • Get our HTML5 history API landed
    • Finish the off main thread parsing work
    • Speculative loading with the HTML5 parser
    • Evaluate what parts, if any, of HTML5 to implement next
    • Rewrite session history to be more like what's specified in HTML5
  • Electrolysis
    • Implement JPW (cross process JS wrappers)
    • Get HTTP GET working over IPC
    • Propose a cross process event handling plan
  • Improve performance
    • Non-blocking cache writes for page load landed
    • Staying on trace through same origin XOWs
    • Remove the XBL1 CSS based binding mechanism for non-displayed DOM nodes
    • Use our (almost) lock-free data structures for our main event queue
    • Optimize DOM child storage for performance
    • Minimize XPConnect wrapper morphing and the number of XPCOM tearoffs we create from JS
    • Improve DOM event handling performance
  • Move the plugin API forward

JS

  • ES5
    • Complete implementation
  • Tracing
    • trace more complex recursion
    • trace switch-statement style emulators
  • Performance
    • continue sunspider improvements (within 20% of Chrome 3 on Windows Vista)
    • improve v8 benchmark performance substantially (at least 2x vs. Oct1 trunk)
    • jsval 64-bit representation
  • jsctypes
    • Spec and implement a JS-facing API for handling pointers, structs, and arrays.

Accessibility

  • Event handling performance implementation (for DHTML)
    • Code reorganization
    • Implementation of throttling and/or delayed computation and/or smarter caching
    • Crashers
  • Fix keyboard support for HTML5 contentEditable
    • Add accessibility support for HTML controls inside of a contentEditable
  • Polish table/grid/treegrid accessibility
    • issues with some existing complex DHTML tables (e.g. dojo)
    • vendor reported issues

Multi-Process

  • Shippable multi-process Flash, windowed and windowless on Windows (and Linux)
  • Complete necko API revisions necessary to support multi-process networking
  • Usable prototype of Fennec running multi-process on Linux
  • Usable prototype of multi-process Flash on Mac OSX 10.6 (has external dependencies)
  • Completed gecko API changes necessary for multi-process session history and link targeting