Platform/2011-Q3-Goals: Difference between revisions

 
(50 intermediate revisions by 15 users not shown)
Line 1: Line 1:
=== General Goals ===
=== General Goals ===
<onlyinclude>
<onlyinclude>
* {{ok|Ship Firefox 6 on the new [[RapidRelease|Rapid Release]] schedule }}  
* {{ok|Realize Android as a top-tier supported platform alongside Windows, Mac, and Linux.}}
* {{ok|Implement priortized list of features required to support Web Apps (Joint with Product and Apps teams).}}
* {{ok|Ship a new web developer tool.}}
</onlyinclude>
</onlyinclude>


Line 9: Line 11:
=== GFX ===
=== GFX ===
<onlyinclude>
<onlyinclude>
* {{proposed|Fennec layers acceleration}}
* {{miss|Fennec layers acceleration}}
** Use OpenGL ES on at least a subset of Android hardware
** Use OpenGL ES on at least a subset of Android hardware
* {{proposed|Electrolysis Accelerated Layers }}
* {{miss|Electrolysis Accelerated Layers }}
** Land in Q3 - clean up from Q2
** Land in Q3 - clean up from Q2
** For non-sandboxed processes only
** For non-sandboxed processes only
* {{proposed|CSS 3 Font Spec Implementation}}
* {{miss|CSS 3 Font Spec Implementation}}
** Complete bug 651693
** Complete {{bug|651693}}
* {{proposed|Azure - Cairo 2D canvas implementation}}
* {{miss|Azure - Cairo 2D canvas implementation}}
** Land on mozilla-central by Sept 13 preffed on
** Land on mozilla-central by Sept 13 preffed on
* Other important Q3 work
* Other important Q3 work
Line 29: Line 31:
=== Layout ===
=== Layout ===
<onlyinclude>
<onlyinclude>
* {{ok|CSS 3D transforms on mozilla-central}}
* {{done|CSS 3D transforms on mozilla-central}}
* {{ok|CSS Ruby on mozilla-central}}
* {{miss|CSS Ruby on mozilla-central}}
* {{ok|fullscreen style-system support on mozilla-central}}
* {{done|fullscreen style-system support on mozilla-central}}
* {{ok|Move the selection state bits from layout to content}}
* {{miss|Move the selection state bits from layout to content}}
** We started this work, but needed another week to finish (ETA: 10/7/2011.)
</onlyinclude>
</onlyinclude>


=== Video ===
=== Video ===
<onlyinclude>
<onlyinclude>
* {{ok|MediaStream infrastructure landed on mozilla-central with some media element integration}}
* {{miss|MediaStream infrastructure landed on mozilla-central with some media element integration}}
* {{ok|libcubeb sound library replacing libsydneyaudio on mozilla-central}}
* {{miss|libcubeb sound library replacing libsydneyaudio on mozilla-central}}
* {{ok|no threads used for paused media elements}}
* {{done|no threads used for paused media elements}}
* {{ok|Media URI Fragment support}}
* {{done|Media URI Fragment support}}
</onlyinclude>
</onlyinclude>


=== DOM ===
=== DOM ===
<onlyinclude>
<onlyinclude>
* e10s:ify IndexedDB
* {{miss|e10s:ify IndexedDB}}
** We started this work, made a bunch of progress, but got stuck on testing infrastructure not being ready (spent a ton of time hunting a leak that blocks a testing effort, which is still not fixed). And after the WebAPI team was formed our priorities shifted and this got put behind other IndexedDB work.
* {{done|Replace xpidl with a python based version}}
* {{miss|Start collecting telemetry data for the DOM (number of JS wrappers per document, etc)}}
* {{miss|Pre-cached JS libraries (not sure what the goal would be here)}}
** This really shouldn't have been a goal, what we did want here was an exploration into what this would entail, which did start in bug {{bug|671093}}.
* {{miss|Support whole directory upload}}
** We didn't get to this due to priorities changing with the creation of the WebAPI team
* {{done|File API support in Workers}}
* {{done|Finish up the NodeList bindings}}
** This work is done, but due to timing of our releases it's not landed yet.
* {{miss|Remove nsHTMLContentSink (in preparation for removing old HTML parser later on), carryover from last quarter}}
** This missed again due to vacations, all-hands, and the fact that this depends on test fixes that are un-estimateable Lots of progress here though.
* {{miss|Implement support for <input type "number">, carryover from last quarter}}
** We didn't get to finalize this due to priorities changing with the creation of the WebAPI team
* {{miss|JS Compartment per global}}
** This needs to carry over, must get done, didn't get all the pieces in place to start working on this in Q3.
* {{miss|Remove support for policy prefs in caps (significant code removal, dependes on JS compartment per global)}}
** Missed due to the blocking goal missed.
</onlyinclude>
</onlyinclude>


=== JS  ===
=== JS  ===
<onlyinclude>
<onlyinclude>
{{proposed|IonMonkey: details forthcoming}}
* {{done|IonMonkey working prototype--a working compiler with GVN, LICM, inlining, LSRA for a small subset of the language, and ARM assembler backend. (Scope reduced a bit from original goal, which included OSR and properties in the language subset. ARM backend added--it wasn't in the original goal.}}
{{proposed|Debug API: details forthcoming}}
* {{done|Land Type inference. (Goal added, wasn't listed at start of quarter)}}
{{proposed|GC: details forthcoming}}
* {{done|Implement JIT spraying mitigations. (Goal added, wasn't listed at start of quarter.)}}
* {{done|Debug API: land new debug API through to mozilla-beta}}
* {{miss|GC: finish incremental GC, start generational GC. (We are close--the code for incremental is written, but there is still some perf work ongoing.)}}
</onlyinclude>
</onlyinclude>


=== Accessibility ===
=== Accessibility ===
<onlyinclude>
<onlyinclude>
* {{done| Telemetry [[https://bugzilla.mozilla.org/show_bug.cgi?id=648121 bug 648121]]}}
* {{done| +phase one+ E10S [[https://bugzilla.mozilla.org/show_bug.cgi?id=646596 bug 646596]]}}
* Other important Q3 work:
** {{done| +early prototype+ Fennec Android accessibility}}
** {{done| +focus refactor+ Make NVDA screen reader users happier [bug 659863]}}
** {{miss| +sig. progress+ Crush a11y oranges User:Ehsan/OrangeCrush}}
</onlyinclude>
</onlyinclude>


=== Multi-Process ===
=== Multi-Process ===
<onlyinclude>
<onlyinclude>
</onlyinclude>
=== Mobile ===
<onlyinclude>
* {{done| Improve Keyboard and IME }}
** {{done| build expertise on the team}}
** {{done| resolve high profile bugs}}
* {{done| Support Android as Tier 1 }}
** {{done| make tests greener}}
** {{done| make running tests locally easy for developers}}
** {{done| make debugging easier for developers}}
* {{miss| Flash support }}
** {{done| generate plan for Flash support on android}}
** {{done| have team in place to execute the plan}}
** {{miss| have required outside agreements in place}}
</onlyinclude>
</onlyinclude>


=== Perf ===
=== Perf ===
<onlyinclude>
<onlyinclude>
* {{proposed| Valgrind on android}}
* {{done| Valgrind on android}}
* {{proposed| Instrument at least 90% of Firefox IO with Telemetry }}
* {{done| Instrument at least 90% of Firefox IO with Telemetry }}
* {{proposed| [https://perf.wiki.kernel.org/index.php/Main_Page Perf] support on android to ease profiling}}
* Other important Q3 work:
* Other important Q3 work:
** Shutdown telemetry
** Shutdown telemetry
Line 76: Line 119:
=== Networking ===
=== Networking ===
<onlyinclude>
<onlyinclude>
* {{ok|SSL performance and responsiveness improvements. Also important for other projects like SPDY.}}
* {{miss|SSL performance and responsiveness improvements. Also important for other projects like SPDY.}}
** 90% done, patch is written but delayed due to security issues popping up.
** Fix {{bug|511393}}, Allow multiple SSL worker threads.
** Fix {{bug|511393}}, Allow multiple SSL worker threads.
** Fix {{bug|508633}}, Unresponsive OCSP server should not kill page load.
* {{done|Start making use of telementry to collect network performance data.}}
* {{ok|Start making use of telementry to collect network performance data.}}
** Fix {{bug|658894}}, Collect basic telemetry for HTTP requests and page load.
** Fix {{bug|658894}}, Collect basic telemetry for HTTP requests and page load.
** Fix {{bug|662555}}, Race condition when measuring requestEnd.
** Fix {{bug|662555}}, Race condition when measuring requestEnd.
** Fix {{bug|539093}}, Implement high-resolution platform timers for Tier I platforms.
* {{miss|Implement high-resolution platform timers}}
* {{ok|}} Improve dual-stack IPv6 experience for users.
** 90% done, patch is in review.
** Fix {{bug|621558}}, Implement "happy eyeballs" IPv6 autodetection at TCP open, or similar system.
** Fix {{bug|676349}}, Implement high-resolution platform timers for Windows.
* {{ok|Keep WebSockets implementation up to date with latest spec drafts.}}
* {{miss|}} Improve dual-stack IPv6 experience for users.
** 10% done, thought we fixed it but patch was backed out. Probably need a new strategy.
** Fix {{bug|684893}}, Re-implement "happy eyeballs" IPv6 autodetection at TCP open, or similar system.
**** Investigate a fix for biesi's patch
**** If too complicated, start coding the algorithm by the spec
* {{done|Keep WebSockets implementation up to date with latest spec drafts.}}
** We can't control when the spec is complete enough to ship but we can follow it closely and be ready to ship as soon as possible.
** We can't control when the spec is complete enough to ship but we can follow it closely and be ready to ship as soon as possible.
** Ship an implementation (possible prefixed if spec is not ready) in Firefox 7.
** Ship an implementation (possible prefixed if spec is not ready) in Firefox 7.
* {{ok|Improvements to [[NeckoNet|NeckoNet]], our standalone networking performance testing tool.}}
* {{done|Improvements to [[NeckoNet|NeckoNet]], our standalone networking performance testing tool.}}
** Should allow us to compare networking performance between two builds under various conditions, including:
** Should allow us to compare networking performance between two builds under various conditions, including:
*** the ability to adjust latency
*** the ability to adjust latency
Line 95: Line 143:
** Ensure that the test server supports pipelining
** Ensure that the test server supports pipelining
** Allow testing against NeckoNet from Windows and Mac OS X
** Allow testing against NeckoNet from Windows and Mac OS X
* {{ok|Make progress with pipelining improvements.}}
* {{miss|Make progress with pipelining improvements.}}
** 70% done, made a lot of progress but not enough. Patches need updating and we haven't completed a system for testing.
** Review outstanding HTTP pipelining improvements. This means being able to mark the review-tracking {{bug|659760}} as fixed.
** Review outstanding HTTP pipelining improvements. This means being able to mark the review-tracking {{bug|659760}} as fixed.
** Complete performance framework for evaluating them.
** Complete performance framework for evaluating them.
* {{ok|Make progress on an SPDY implementation, {{bug|528288}}.}}
* {{done|Make progress on an SPDY implementation, {{bug|528288}}.}}
** Hard to say what we might be able to accomplish over the course of three months, but we want to have an implementation in progress.
** Hard to say what we might be able to accomplish over the course of three months, but we want to have an implementation in progress.
* {{ok|Work towards an effective mobile disk cache implementation.}}
* {{miss|Work towards an effective mobile disk cache implementation.}}
** 10% done, didn't make much progress, made adjustments and work will continue into Q4.
** Create system with which to measure cache performance locally.
** Create system with which to measure cache performance locally.
*** Some microbenchmarks have been set up; WIP to analyze and understand results. See [[Necko/MobileCache/MicroBenchmarks]] for status
*** WIP for a test-driver to fetch whole pagesets (much like Talos, but necko-only)
** Use telemetry to collect cache performance data.
** Use telemetry to collect cache performance data.
*** Some telemetry is in place; investigating how to use data from telemetry in microbenchmarks
** Create a plan for a mobile disk cache based on that data
** Create a plan for a mobile disk cache based on that data
* {{ok|Fix {{bug|666059}}. Only use memory cache for private browsing so that leaving private browsing mode doesn't necessitate blowing away the cache.}}
* {{done|Fix {{bug|670911}}. Make deleting the disk cache not kill responsiveness and hog i/o. Do it on a thread, perhaps throttled so as to not hog i/o bandwidth.}}
* {{ok|Fix {{bug|660195}}. Make deleting the disk cache not kill responsiveness and hog i/o. Do it on a thread, perhaps throttled so as to not hog i/o bandwidth.}}
=== QA ===
 
Full QA team and individual goals are located here:[https://intranet.mozilla.org/QA/Q32011_QAgoals https://intranet.mozilla.org/QA/Q32011_QAgoals]
 
* {{miss|}} Complete development and deploy the crowd-sourcing Firefox Mobile test harness that allows users, developers and  mobile community members to run Firefox Mobile unit tests and report those results to online repository for analysis of potential platform compatibility issues.
 
* {{done|}} Create a test framework that supports the development and execution of Web Apps unit and functional tests and collaborate with the Web Apps team and Mozilla test community to write and develop automated test cases for Web Apps infrastructure and applications.
 
* {{done|}} QA support for the shipment of FF 6, FF 7 with special focus on the developer tools features to employ detailed functional testing and crowd and community based testing approaches.
 
* {{done|}} Develop a set of base-line automated endurance tests that measure Firefox resource (memory, cpu load)  utilization over repeated real world use-case scenarios to measure the effect of changes and new features across releases of the Firefox browser.
</onlyinclude>
</onlyinclude>

Latest revision as of 21:13, 4 October 2011

General Goals

  • [ON TRACK] Realize Android as a top-tier supported platform alongside Windows, Mac, and Linux.
  • [ON TRACK] Implement priortized list of features required to support Web Apps (Joint with Product and Apps teams).
  • [ON TRACK] Ship a new web developer tool.


Firefox

Firefox

  • [DONE] Ship Firefox 6 & 7 on desktop and android
  • [MISSED] Complete 10 features from product team's list, including 6 P1s
    • Hit 7, with 5 P1s according to this list
    • [DONE] If you include Firefox 6, which shipped in Q3, but much of that work was Q2. (That would be 15 total, 13 P1s)

Developer Tools

  • [MISSED] Land Highlighter
  • [MISSED] Land HTML panel
  • [MISSED] Land Style panel

These are all close, demo well, and a couple pieces have already landed, but we're not counting "close" here, and they aren't done. Ergo->MISS.

GFX

  • [MISSED] Fennec layers acceleration
    • Use OpenGL ES on at least a subset of Android hardware
  • [MISSED] Electrolysis Accelerated Layers
    • Land in Q3 - clean up from Q2
    • For non-sandboxed processes only
  • [MISSED] CSS 3 Font Spec Implementation
  • [MISSED] Azure - Cairo 2D canvas implementation
    • Land on mozilla-central by Sept 13 preffed on
  • Other important Q3 work
    • Start using telemetry
    • Windows 7 font rendering
    • WebGL improvements
      • CORS support, finalize 1.0
      • Anti-aliasing
      • Ongoing security improvements


Layout

  • [DONE] CSS 3D transforms on mozilla-central
  • [MISSED] CSS Ruby on mozilla-central
  • [DONE] fullscreen style-system support on mozilla-central
  • [MISSED] Move the selection state bits from layout to content
    • We started this work, but needed another week to finish (ETA: 10/7/2011.)


Video

  • [MISSED] MediaStream infrastructure landed on mozilla-central with some media element integration
  • [MISSED] libcubeb sound library replacing libsydneyaudio on mozilla-central
  • [DONE] no threads used for paused media elements
  • [DONE] Media URI Fragment support


DOM

  • [MISSED] e10s:ify IndexedDB
    • We started this work, made a bunch of progress, but got stuck on testing infrastructure not being ready (spent a ton of time hunting a leak that blocks a testing effort, which is still not fixed). And after the WebAPI team was formed our priorities shifted and this got put behind other IndexedDB work.
  • [DONE] Replace xpidl with a python based version
  • [MISSED] Start collecting telemetry data for the DOM (number of JS wrappers per document, etc)
  • [MISSED] Pre-cached JS libraries (not sure what the goal would be here)
    • This really shouldn't have been a goal, what we did want here was an exploration into what this would entail, which did start in bug bug 671093.
  • [MISSED] Support whole directory upload
    • We didn't get to this due to priorities changing with the creation of the WebAPI team
  • [DONE] File API support in Workers
  • [DONE] Finish up the NodeList bindings
    • This work is done, but due to timing of our releases it's not landed yet.
  • [MISSED] Remove nsHTMLContentSink (in preparation for removing old HTML parser later on), carryover from last quarter
    • This missed again due to vacations, all-hands, and the fact that this depends on test fixes that are un-estimateable Lots of progress here though.
  • [MISSED] Implement support for <input type "number">, carryover from last quarter
    • We didn't get to finalize this due to priorities changing with the creation of the WebAPI team
  • [MISSED] JS Compartment per global
    • This needs to carry over, must get done, didn't get all the pieces in place to start working on this in Q3.
  • [MISSED] Remove support for policy prefs in caps (significant code removal, dependes on JS compartment per global)
    • Missed due to the blocking goal missed.


JS

  • [DONE] IonMonkey working prototype--a working compiler with GVN, LICM, inlining, LSRA for a small subset of the language, and ARM assembler backend. (Scope reduced a bit from original goal, which included OSR and properties in the language subset. ARM backend added--it wasn't in the original goal.
  • [DONE] Land Type inference. (Goal added, wasn't listed at start of quarter)
  • [DONE] Implement JIT spraying mitigations. (Goal added, wasn't listed at start of quarter.)
  • [DONE] Debug API: land new debug API through to mozilla-beta
  • [MISSED] GC: finish incremental GC, start generational GC. (We are close--the code for incremental is written, but there is still some perf work ongoing.)


Accessibility

  • [DONE] Telemetry [bug 648121]
  • [DONE] +phase one+ E10S [bug 646596]
  • Other important Q3 work:
    • [DONE] +early prototype+ Fennec Android accessibility
    • [DONE] +focus refactor+ Make NVDA screen reader users happier [bug 659863]
    • [MISSED] +sig. progress+ Crush a11y oranges User:Ehsan/OrangeCrush


Multi-Process

Mobile

  • [DONE] Improve Keyboard and IME
    • [DONE] build expertise on the team
    • [DONE] resolve high profile bugs
  • [DONE] Support Android as Tier 1
    • [DONE] make tests greener
    • [DONE] make running tests locally easy for developers
    • [DONE] make debugging easier for developers
  • [MISSED] Flash support
    • [DONE] generate plan for Flash support on android
    • [DONE] have team in place to execute the plan
    • [MISSED] have required outside agreements in place


Perf

  • [DONE] Valgrind on android
  • [DONE] Instrument at least 90% of Firefox IO with Telemetry
  • Other important Q3 work:
    • Shutdown telemetry
    • Evangelizing telemetry
    • Implementing telemetry probes for the metrics team


Networking

  • [MISSED] SSL performance and responsiveness improvements. Also important for other projects like SPDY.
    • 90% done, patch is written but delayed due to security issues popping up.
    • Fix bug 511393, Allow multiple SSL worker threads.
  • [DONE] Start making use of telementry to collect network performance data.
    • Fix bug 658894, Collect basic telemetry for HTTP requests and page load.
    • Fix bug 662555, Race condition when measuring requestEnd.
  • [MISSED] Implement high-resolution platform timers
    • 90% done, patch is in review.
    • Fix bug 676349, Implement high-resolution platform timers for Windows.
  • [MISSED] Improve dual-stack IPv6 experience for users.
    • 10% done, thought we fixed it but patch was backed out. Probably need a new strategy.
    • Fix bug 684893, Re-implement "happy eyeballs" IPv6 autodetection at TCP open, or similar system.
        • Investigate a fix for biesi's patch
        • If too complicated, start coding the algorithm by the spec
  • [DONE] Keep WebSockets implementation up to date with latest spec drafts.
    • We can't control when the spec is complete enough to ship but we can follow it closely and be ready to ship as soon as possible.
    • Ship an implementation (possible prefixed if spec is not ready) in Firefox 7.
  • [DONE] Improvements to NeckoNet, our standalone networking performance testing tool.
    • Should allow us to compare networking performance between two builds under various conditions, including:
      • the ability to adjust latency
      • the ability to adjust random packet loss
      • the ability to turn on loss of the first SYN of a flow
    • Ensure that the test server supports pipelining
    • Allow testing against NeckoNet from Windows and Mac OS X
  • [MISSED] Make progress with pipelining improvements.
    • 70% done, made a lot of progress but not enough. Patches need updating and we haven't completed a system for testing.
    • Review outstanding HTTP pipelining improvements. This means being able to mark the review-tracking bug 659760 as fixed.
    • Complete performance framework for evaluating them.
  • [DONE] Make progress on an SPDY implementation, bug 528288.
    • Hard to say what we might be able to accomplish over the course of three months, but we want to have an implementation in progress.
  • [MISSED] Work towards an effective mobile disk cache implementation.
    • 10% done, didn't make much progress, made adjustments and work will continue into Q4.
    • Create system with which to measure cache performance locally.
      • Some microbenchmarks have been set up; WIP to analyze and understand results. See Necko/MobileCache/MicroBenchmarks for status
      • WIP for a test-driver to fetch whole pagesets (much like Talos, but necko-only)
    • Use telemetry to collect cache performance data.
      • Some telemetry is in place; investigating how to use data from telemetry in microbenchmarks
    • Create a plan for a mobile disk cache based on that data
  • [DONE] Fix bug 670911. Make deleting the disk cache not kill responsiveness and hog i/o. Do it on a thread, perhaps throttled so as to not hog i/o bandwidth.

QA

Full QA team and individual goals are located here:https://intranet.mozilla.org/QA/Q32011_QAgoals

  • [MISSED] Complete development and deploy the crowd-sourcing Firefox Mobile test harness that allows users, developers and mobile community members to run Firefox Mobile unit tests and report those results to online repository for analysis of potential platform compatibility issues.
  • [DONE] Create a test framework that supports the development and execution of Web Apps unit and functional tests and collaborate with the Web Apps team and Mozilla test community to write and develop automated test cases for Web Apps infrastructure and applications.
  • [DONE] QA support for the shipment of FF 6, FF 7 with special focus on the developer tools features to employ detailed functional testing and crowd and community based testing approaches.
  • [DONE] Develop a set of base-line automated endurance tests that measure Firefox resource (memory, cpu load) utilization over repeated real world use-case scenarios to measure the effect of changes and new features across releases of the Firefox browser.