Platform/2011-Q4-Goals: Difference between revisions
< Platform
Jump to navigation
Jump to search
(→WebAPI) |
(→Video) |
||
(31 intermediate revisions by 11 users not shown) | |||
Line 12: | Line 12: | ||
** Finish Direct3D 10/Direct2D, Direct3D 9, Mac OS X OpenGL layers implementation | ** Finish Direct3D 10/Direct2D, Direct3D 9, Mac OS X OpenGL layers implementation | ||
** For non-sandboxed processes only | ** For non-sandboxed processes only | ||
* {{ | * {{done|Thebes wrapper for Azure}} | ||
** Land on mozilla-central | ** Land on mozilla-central | ||
* {{ | * {{done|Skia backend for Azure}} | ||
** Landed and able to be turned on for canvas | ** Landed and able to be turned on for canvas | ||
** Demoable for general content (not just canvas) - not necessarily demoable from mozilla-central | ** Demoable for general content (not just canvas) - not necessarily demoable from mozilla-central | ||
Line 20: | Line 20: | ||
** On OSes where it's supported, enable cross-process WebGL by sharing textures between content and chrome processes | ** On OSes where it's supported, enable cross-process WebGL by sharing textures between content and chrome processes | ||
* Other important Q4 work | * Other important Q4 work | ||
** Finish cross-process Linux OpenGL layers implementation (on desktop) | ** {{drop|Finish cross-process Linux OpenGL layers implementation (on desktop)}} | ||
** Azure - Cairo backend | ** Azure - Cairo backend | ||
*** Possibly only on graphics branch | *** Possibly only on graphics branch | ||
Line 26: | Line 26: | ||
** Imagelib work on memory usage and efficiency | ** Imagelib work on memory usage and efficiency | ||
** Windows 7 font rendering survey via Test Pilot | ** Windows 7 font rendering survey via Test Pilot | ||
** | ** {{done|Multiple GPU support on Mac OS X}} | ||
** WebGL improvements | ** WebGL improvements | ||
*** | *** {{done|Anti-aliasing}} | ||
*** ARB_robustness / EGL_LOST_CONTEXT | *** {{done|ARB_robustness / EGL_LOST_CONTEXT}} | ||
*** Auditing remaining failing conformance tests | *** Auditing remaining failing conformance tests | ||
</onlyinclude> | </onlyinclude> | ||
Line 35: | Line 35: | ||
=== Layout === | === Layout === | ||
<onlyinclude> | <onlyinclude> | ||
* {{ | * {{done|Complete Mobile Readability project (Phase 1 [http://dbaron.org/log/20111126-font-inflation landed].)}} | ||
* {{miss|Diagnostic tools for text and font memory usage in about:memory}} | |||
* {{ | * {{done|Graphite Font Layout system implemented and landed pref'd off }} | ||
* {{ | |||
* {{ok|Multi-column Compliance (de-prefixing)}} | * {{ok|Multi-column Compliance (de-prefixing)}} | ||
** Implementation of [https://bugzilla.mozilla.org/show_bug.cgi?id=695222 column-fill] property needs to be finished and landed. | ** Implementation of [https://bugzilla.mozilla.org/show_bug.cgi?id=695222 column-fill] property needs to be finished and landed. | ||
** [https://bugzilla.mozilla.org/show_bug.cgi?id=698783 De-prefixing] of all current column implementation, except column-span, needs to be finished and landed. | ** [https://bugzilla.mozilla.org/show_bug.cgi?id=698783 De-prefixing] of all current column implementation, except column-span, needs to be finished and landed. | ||
** Implementation of [https://bugzilla.mozilla.org/show_bug.cgi?id=616436 column-span] property has been moved to Q1 2012. | ** Implementation of [https://bugzilla.mozilla.org/show_bug.cgi?id=616436 column-span] property has been moved to Q1 2012. | ||
* {{ | * {{miss|Complete SVG migration to DisplayList (Performance)}} | ||
** We de-prioritized SVG work in Q4 to fix other bugs | ** We de-prioritized SVG work in Q4 to fix other bugs | ||
* {{ | * {{miss|Implement CSS spec for flexbox}} | ||
** CSS flexbox spec is still in working draft. New ETA for this feature: Q1 2012 | ** CSS flexbox spec is still in working draft & undergoing significant changes. New ETA for this feature: Q1 2012 | ||
* {{ | * {{done|Selection bit - Move from Layout to Content - Mutation events update DOM (619273)}} | ||
* {{ | * {{done| View class removal from Decks/XUL done. (bug 655263)}} | ||
* {{drop|Page Break Support}} | |||
* {{ | |||
** We de-prioritized Page Break in Q4 to work on other specs | ** We de-prioritized Page Break in Q4 to work on other specs | ||
* {{ | * {{drop|CSS Ruby on mozilla-central}} | ||
** not currently assigned | ** not currently assigned | ||
</onlyinclude> | </onlyinclude> | ||
Line 61: | Line 57: | ||
<onlyinclude> | <onlyinclude> | ||
* {{ | * {{miss|MediaStream infrastructure landed on mozilla-central with Worker-based processing enabled and some media element integration}} | ||
* {{ | * {{miss|libcubeb sound library replacing libsydneyaudio on mozilla-central}} | ||
* {{ | * {{done|fullscreen API enabled on mozilla-central}} | ||
* {{ | * {{miss|direct pushing of video frames to compositor thread for e10s}} | ||
* {{ | * {{miss|eliminate unnecessary copy with video decoder API changes}} | ||
</onlyinclude> | </onlyinclude> | ||
=== DOM === | === DOM === | ||
<onlyinclude> | <onlyinclude> | ||
* {{ | * {{miss|Close the gap between what can be expressed in WebIDL and what our IDL tooling supports}} | ||
* {{ | ** Good progress made here, but we missed this goal for two reasons: | ||
* {{ | *** The spec changed last minute | ||
* {{ | *** This turned into a bigger task than originally believed | ||
* {{done|Make cycles involving weak maps and the DOM not leak}} | |||
* {{miss|JS Compartment per global (carryover from last quarter, this may not be hittable due to timing of blocking bugs)}} | |||
** Missed due to timing of blocking bugs | |||
* {{miss|Have a real plan for what the new DOM bindings will look like}} | |||
** Missed due to resource availability. | |||
* {{done|Review and land View Source rewrite}} | * {{done|Review and land View Source rewrite}} | ||
* {{ | * {{miss|Add support for the new mutation observer proposal (to replace DOM Mutation Event support eventually)}} | ||
* {{ | ** Missed due to cycle collection time fixing was deemed more important (snappy) | ||
* {{done|Add support for (callable) event constructors}} | |||
</onlyinclude> | </onlyinclude> | ||
Line 83: | Line 85: | ||
<onlyinclude> | <onlyinclude> | ||
* {{miss|Camera support landed (and maybe turned on)}} | * {{miss|Camera support landed (and maybe turned on)}} | ||
** Missed due to WebAPPs work being prioritized over this, and also due to lack of windows build system at the time this work was being done | |||
* {{miss|Basic camera in-page UI implemented. Not CSS configurable yet}} | * {{miss|Basic camera in-page UI implemented. Not CSS configurable yet}} | ||
* {{ | ** Missed due to WebAPPs work being prioritized over this, and also due to lack of windows build system at the time this work was being done | ||
* {{miss|SMS landed. Might not have security model in place. Turned on for B2G}} | |||
** Patch ready and reviewed, but the native mobile frontend threw a wrench in the wheel for landing this in time | |||
* {{done|DOM-side of telephony done. Nothing turned on as we'll be missing radio part}} | * {{done|DOM-side of telephony done. Nothing turned on as we'll be missing radio part}} | ||
* {{ | * {{done|IndexedDB fully up to spec (including version API change, delete database, and arrays as keys, the last of which might be a stretch)}} | ||
* {{ | * {{done|File support in IndexedDB}} | ||
* {{ | * {{miss|Have spec for how capability management in apps will work}} | ||
* {{ | ** Missed in favor of finishing up the IndexedDB stretch goal | ||
* {{done|Battery API on android and one other platform}} | |||
* {{done|Network API on android and one other platform -- Not landed yet, but all the work is done (1 review pending for linux)}} | |||
* {{done|Implement App-cache to current spec}} | * {{done|Implement App-cache to current spec}} | ||
* {{ | * {{miss|Contacts API spec (spec proposal only, no implementation) -- about 50% there, but not done yet.}} | ||
** Missed in favor of finishing up the IndexedDB stretch goal | |||
</onlyinclude> | </onlyinclude> | ||
=== JS === | === JS === | ||
*{{ | *{{miss|Land incremental GC.}} | ||
*{{ | *{{miss|Land Harmony modules.}} | ||
*{{ | *{{miss|Land support for JS profiler.}} | ||
*{{ | *{{done|Shrink JSObject to ~5 words.}} | ||
=== Accessibility === | === Accessibility === | ||
* {{done| Mobile: Accessibility enabled on FF android builds}} | * {{done| Mobile: Accessibility enabled on FF android builds}} | ||
* {{drop| E10S: phase 2. All gecko-side a11y engine work done for parity with single process.}} | * {{drop| E10S: phase 2. All gecko-side a11y engine work done for parity with single process.}} | ||
* {{ | * {{miss| Canvas accessibility: build accessible subtree.}} | ||
* {{ | * {{miss| Improve accessible tree updating [{{bug|690417}}]}} | ||
* Other activities: | * Other activities: Additional Telemetry, B2G test framework collab. | ||
=== Multi-Process === | === Multi-Process === | ||
* Continue regular tracking and resolution of [[Electrolysis/Short-Term Goals|short-term goals]] | * {{drop|Continue regular tracking and resolution of [[Electrolysis/Short-Term Goals|short-term goals]]}} | ||
* Remove the need for the --enable-e10s-compat build flag, so users can simply set a pref in Firefox to get multi-process tabs. Note that some or many features still may not work this quarter. | * {{drop|Remove the need for the --enable-e10s-compat build flag, so users can simply set a pref in Firefox to get multi-process tabs. Note that some or many features still may not work this quarter.}} | ||
* Get windowless and windowed plugins working on all platforms. | * {{drop|Get windowless and windowed plugins working on all platforms.}} | ||
* Identify which addons must continue to work to get 80% of users multi-process tabs | * {{done|Identify which addons must continue to work to get 80% of users multi-process tabs}} | ||
* Develop a plan for addon compatibility with content processes. (This may involve a combination of Firefox compatibility shims, porting addons to the Jetpack SDK, manual rewriting, or automatic rewriting). | * {{drop|Develop a plan for addon compatibility with content processes. (This may involve a combination of Firefox compatibility shims, porting addons to the Jetpack SDK, manual rewriting, or automatic rewriting).}} | ||
* Measure the memory usage of multiple content processes and identify wasted space and a plan to correct any issues. | * {{drop|Measure the memory usage of multiple content processes and identify wasted space and a plan to correct any issues.}} | ||
* Identify remaining issues which need input from the UX team for mobile and desktop, including panning responsiveness/checkerboarding tradeoffs (primarily mobile) and misbehaving/crashing content UI (desktop) | * {{drop|Identify remaining issues which need input from the UX team for mobile and desktop, including panning responsiveness/checkerboarding tradeoffs (primarily mobile) and misbehaving/crashing content UI (desktop)}} | ||
=== Perf === | === Perf === | ||
* {{ | * {{drop|Valgrind developer ROM for pandaboard or Nexus S}} | ||
* {{ | * {{drop|linux "perf"-counters in zippity(depends on above ROM to have perf support in kernel)}} | ||
* {{ | * {{miss|Bug 662444: exit(0) "immediate" shutdown prototype and a plan to land it}} | ||
* {{ | * {{miss|Bug 686805: Incremental decompression for libxul on Android}} | ||
* {{ | * {{drop|Startup-ordered binary on Windows}} | ||
* deprioritized: 0 fennec sqlite fsyncs on first startup | * deprioritized: 0 fennec sqlite fsyncs on first startup | ||
Line 130: | Line 138: | ||
* {{done|Add support for high-resolution timers on Windows, {{bug|676349}}.}} - PGO builds broken with the current patch | * {{done|Add support for high-resolution timers on Windows, {{bug|676349}}.}} - PGO builds broken with the current patch | ||
* {{done|Improve dual-stack IPv6 experience by implementing an effective form of "happy eyeballs" IPv6 auto-detection at TCP open. This means resolving {{bug|684893}}.}} | * {{done|Improve dual-stack IPv6 experience by implementing an effective form of "happy eyeballs" IPv6 auto-detection at TCP open. This means resolving {{bug|684893}}.}} | ||
* {{ | * {{done|Have full implementation of final WebSockets spec implemented and in the tree in a shippable state.}} | ||
* {{miss|Land pipelining improvements from Patrick McManus.}} | * {{miss|Land pipelining improvements from Patrick McManus.}} | ||
** 75% completed. | |||
* {{done|Land SPDY implementation, {{bug|528288}}. OK if it remains pref'd off.}} | * {{done|Land SPDY implementation, {{bug|528288}}. OK if it remains pref'd off.}} | ||
* {{done|Work towards an effective mobile disk cache implementation.}} | * {{done|Work towards an effective mobile disk cache implementation.}} | ||
Line 139: | Line 148: | ||
*** WIP for a test-driver to fetch whole pagesets (much like Talos, but necko-only) | *** WIP for a test-driver to fetch whole pagesets (much like Talos, but necko-only) | ||
** Create a plan for a mobile disk cache based gathered data. | ** Create a plan for a mobile disk cache based gathered data. | ||
* {{ | * {{done|Improve App Cache support by resolving {{bug|538595}} and {{bug|538588}}.}} | ||
* {{ | * {{miss|Resolve all networking security bugs that received a designation of sg:moderate or higher more than six weeks ago. This will become a permanent goal for the group.}} | ||
** 50% completed. This was our first quarter with this goal so we dealt with a large backlog. | |||
</onlyinclude> | </onlyinclude> | ||
Latest revision as of 01:27, 11 January 2012
General Goals
GFX
- [DONE] Fennec layers acceleration
- Use OpenGL ES on at least a subset of Android hardware
- [AT RISK] CSS 3 Font Spec Implementation
- Complete bug 651693
- [DROPPED] Electrolysis Accelerated Layers
- Evaluate current status
- Finish Direct3D 10/Direct2D, Direct3D 9, Mac OS X OpenGL layers implementation
- For non-sandboxed processes only
- [DONE] Thebes wrapper for Azure
- Land on mozilla-central
- [DONE] Skia backend for Azure
- Landed and able to be turned on for canvas
- Demoable for general content (not just canvas) - not necessarily demoable from mozilla-central
- [DROPPED] Texture sharing for WebGL
- On OSes where it's supported, enable cross-process WebGL by sharing textures between content and chrome processes
- Other important Q4 work
- [DROPPED] Finish cross-process Linux OpenGL layers implementation (on desktop)
- Azure - Cairo backend
- Possibly only on graphics branch
- Continue using telemetry
- Imagelib work on memory usage and efficiency
- Windows 7 font rendering survey via Test Pilot
- [DONE] Multiple GPU support on Mac OS X
- WebGL improvements
- [DONE] Anti-aliasing
- [DONE] ARB_robustness / EGL_LOST_CONTEXT
- Auditing remaining failing conformance tests
Layout
- [DONE] Complete Mobile Readability project (Phase 1 landed.)
- [MISSED] Diagnostic tools for text and font memory usage in about:memory
- [DONE] Graphite Font Layout system implemented and landed pref'd off
- [ON TRACK] Multi-column Compliance (de-prefixing)
- Implementation of column-fill property needs to be finished and landed.
- De-prefixing of all current column implementation, except column-span, needs to be finished and landed.
- Implementation of column-span property has been moved to Q1 2012.
- [MISSED] Complete SVG migration to DisplayList (Performance)
- We de-prioritized SVG work in Q4 to fix other bugs
- [MISSED] Implement CSS spec for flexbox
- CSS flexbox spec is still in working draft & undergoing significant changes. New ETA for this feature: Q1 2012
- [DONE] Selection bit - Move from Layout to Content - Mutation events update DOM (619273)
- [DONE] View class removal from Decks/XUL done. (bug 655263)
- [DROPPED] Page Break Support
- We de-prioritized Page Break in Q4 to work on other specs
- [DROPPED] CSS Ruby on mozilla-central
- not currently assigned
Video
- [MISSED] MediaStream infrastructure landed on mozilla-central with Worker-based processing enabled and some media element integration
- [MISSED] libcubeb sound library replacing libsydneyaudio on mozilla-central
- [DONE] fullscreen API enabled on mozilla-central
- [MISSED] direct pushing of video frames to compositor thread for e10s
- [MISSED] eliminate unnecessary copy with video decoder API changes
DOM
- [MISSED] Close the gap between what can be expressed in WebIDL and what our IDL tooling supports
- Good progress made here, but we missed this goal for two reasons:
- The spec changed last minute
- This turned into a bigger task than originally believed
- Good progress made here, but we missed this goal for two reasons:
- [DONE] Make cycles involving weak maps and the DOM not leak
- [MISSED] JS Compartment per global (carryover from last quarter, this may not be hittable due to timing of blocking bugs)
- Missed due to timing of blocking bugs
- [MISSED] Have a real plan for what the new DOM bindings will look like
- Missed due to resource availability.
- [DONE] Review and land View Source rewrite
- [MISSED] Add support for the new mutation observer proposal (to replace DOM Mutation Event support eventually)
- Missed due to cycle collection time fixing was deemed more important (snappy)
- [DONE] Add support for (callable) event constructors
WebAPI
- [MISSED] Camera support landed (and maybe turned on)
- Missed due to WebAPPs work being prioritized over this, and also due to lack of windows build system at the time this work was being done
- [MISSED] Basic camera in-page UI implemented. Not CSS configurable yet
- Missed due to WebAPPs work being prioritized over this, and also due to lack of windows build system at the time this work was being done
- [MISSED] SMS landed. Might not have security model in place. Turned on for B2G
- Patch ready and reviewed, but the native mobile frontend threw a wrench in the wheel for landing this in time
- [DONE] DOM-side of telephony done. Nothing turned on as we'll be missing radio part
- [DONE] IndexedDB fully up to spec (including version API change, delete database, and arrays as keys, the last of which might be a stretch)
- [DONE] File support in IndexedDB
- [MISSED] Have spec for how capability management in apps will work
- Missed in favor of finishing up the IndexedDB stretch goal
- [DONE] Battery API on android and one other platform
- [DONE] Network API on android and one other platform -- Not landed yet, but all the work is done (1 review pending for linux)
- [DONE] Implement App-cache to current spec
- [MISSED] Contacts API spec (spec proposal only, no implementation) -- about 50% there, but not done yet.
- Missed in favor of finishing up the IndexedDB stretch goal
JS
- [MISSED] Land incremental GC.
- [MISSED] Land Harmony modules.
- [MISSED] Land support for JS profiler.
- [DONE] Shrink JSObject to ~5 words.
Accessibility
- [DONE] Mobile: Accessibility enabled on FF android builds
- [DROPPED] E10S: phase 2. All gecko-side a11y engine work done for parity with single process.
- [MISSED] Canvas accessibility: build accessible subtree.
- [MISSED] Improve accessible tree updating [bug 690417]
- Other activities: Additional Telemetry, B2G test framework collab.
Multi-Process
- [DROPPED] Continue regular tracking and resolution of short-term goals
- [DROPPED] Remove the need for the --enable-e10s-compat build flag, so users can simply set a pref in Firefox to get multi-process tabs. Note that some or many features still may not work this quarter.
- [DROPPED] Get windowless and windowed plugins working on all platforms.
- [DONE] Identify which addons must continue to work to get 80% of users multi-process tabs
- [DROPPED] Develop a plan for addon compatibility with content processes. (This may involve a combination of Firefox compatibility shims, porting addons to the Jetpack SDK, manual rewriting, or automatic rewriting).
- [DROPPED] Measure the memory usage of multiple content processes and identify wasted space and a plan to correct any issues.
- [DROPPED] Identify remaining issues which need input from the UX team for mobile and desktop, including panning responsiveness/checkerboarding tradeoffs (primarily mobile) and misbehaving/crashing content UI (desktop)
Perf
- [DROPPED] Valgrind developer ROM for pandaboard or Nexus S
- [DROPPED] linux "perf"-counters in zippity(depends on above ROM to have perf support in kernel)
- [MISSED] Bug 662444: exit(0) "immediate" shutdown prototype and a plan to land it
- [MISSED] Bug 686805: Incremental decompression for libxul on Android
- [DROPPED] Startup-ordered binary on Windows
- deprioritized: 0 fennec sqlite fsyncs on first startup
Networking
- [DONE] Improve SSL performance and responsiveness by fixing bug 511393. This is also important for SPDY.
- [DONE] Add support for high-resolution timers on Windows, bug 676349. - PGO builds broken with the current patch
- [DONE] Improve dual-stack IPv6 experience by implementing an effective form of "happy eyeballs" IPv6 auto-detection at TCP open. This means resolving bug 684893.
- [DONE] Have full implementation of final WebSockets spec implemented and in the tree in a shippable state.
- [MISSED] Land pipelining improvements from Patrick McManus.
- 75% completed.
- [DONE] Land SPDY implementation, bug 528288. OK if it remains pref'd off.
- [DONE] Work towards an effective mobile disk cache implementation.
- Create a specific set of questions that need answering in order to make a plan.
- 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)
- Create a plan for a mobile disk cache based gathered data.
- [DONE] Improve App Cache support by resolving bug 538595 and bug 538588.
- [MISSED] Resolve all networking security bugs that received a designation of sg:moderate or higher more than six weeks ago. This will become a permanent goal for the group.
- 50% completed. This was our first quarter with this goal so we dealt with a large backlog.
Mobile
- NPAPI/Flash on Honeycomb integration and support
- Native front end prototype
- Automated Unit & Talos tests should be less than 5% unreliable (Matching desktop reliability)
- Achieve consensus on and create a reliable process for mobile responsiveness testing and evaluation (matrix, methods, analysis).
- Land on baseline numbers based on the above and create measurable perf targets through March 2012.
- Re-energize efforts to resolve mobile startup shrink issues
- Make more progress on Keyboard and IME bugs
B2G
- Gingerbread ROM with symbols for Galaxy S2 for Android Firefox debugging
- B2G ROM that can be used to build a basic phone (phone, contacts, vibrator, wifi, lock screen, etc).
- Basic Phone UI (Gaia) for B2G that can be used as primary phone for Mozilla developers
Research
- Rust: Release version 0.1
- Servo: Make DOM.js complete enough to run jQuery
- TC39: Implement modules in SpiderMonkey
- GPU Research: Investigate WebGL Video decoding