<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tglek</id>
	<title>MozillaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tglek"/>
	<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/Special:Contributions/Tglek"/>
	<updated>2026-09-16T02:59:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2014-Q3-Goals&amp;diff=995200</id>
		<title>Platform/2014-Q3-Goals</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2014-Q3-Goals&amp;diff=995200"/>
		<updated>2014-07-07T21:49:25Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Release Engineering - Taras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Platform ===&lt;br /&gt;
==== [[Platform/2014-Goals|2014 General Goals]] ====&lt;br /&gt;
&lt;br /&gt;
=== GFX ===&lt;br /&gt;
Items marked [https://docs.google.com/a/mozilla.com/spreadsheet/ccc?key=0AnKFEBp1-VyqdFNfRlZmV0ExM0VvZGMxNThWX0d6LWc&amp;amp;usp=drive_web#gid=0 here] with release 33 and 34 are part of the Q3 landings.&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DOM ===&lt;br /&gt;
* {{ok|Mirror prototype of DOM objects through xray wrappers (peterv)}}&lt;br /&gt;
* {{ok|Remove nsDOMClassInfo.cpp}}&lt;br /&gt;
* {{ok|Make less-privileged non-Xrayable unwaived opaque from privileged code ({{bug|856067}})}}&lt;br /&gt;
* {{ok|Route all JSContext pushing through AutoJSAPI and Implement GetEntryGlobal ({{bug|951991}})}}&lt;br /&gt;
&lt;br /&gt;
=== WebAPI ===&lt;br /&gt;
&lt;br /&gt;
=== JS  ===&lt;br /&gt;
* {{jok|837314}} ES6 classes&lt;br /&gt;
* {{jok|941796}} Generational GC on Firefox OS&lt;br /&gt;
* {{jok|650161}} Compacting GC to reduce memory usage&lt;br /&gt;
* {{jok|856533}} Escape analysis JIT optimizations&lt;br /&gt;
* {{jok|998392}} Use Latin1 strings to reduce memory usage&lt;br /&gt;
* {{jok|903519}} Allocate strings in GC nursery (for performance)&lt;br /&gt;
* {{jok|972710}} ARM64 JIT &#039;&#039;[stretch goal]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
* {{ok|}}e10s: proxy the common a11y API stuff like name, role, and states.&lt;br /&gt;
* {{ok|}}GAIA: Fix [https://bugzilla.mozilla.org/buglist.cgi?priority=--&amp;amp;f1=blocked&amp;amp;list_id=10674217&amp;amp;o1=anyexact&amp;amp;resolution=---&amp;amp;query_based_on=b2ga11y%20p%3D1&amp;amp;o2=substring&amp;amp;query_format=advanced&amp;amp;f2=status_whiteboard&amp;amp;v1=893789&amp;amp;component=Disability%20Access%20APIs&amp;amp;component=Gaia&amp;amp;component=Gaia%3A%3ABluetooth%20File%20Transfer&amp;amp;component=Gaia%3A%3ABrowser&amp;amp;component=Gaia%3A%3ABuild&amp;amp;component=Gaia%3A%3ACalendar&amp;amp;component=Gaia%3A%3ACamera&amp;amp;component=Gaia%3A%3AClock&amp;amp;component=Gaia%3A%3AContacts&amp;amp;component=Gaia%3A%3ACost%20Control&amp;amp;component=Gaia%3A%3ADialer&amp;amp;component=Gaia%3A%3AE-Mail&amp;amp;component=Gaia%3A%3AEverything.me&amp;amp;component=Gaia%3A%3AFirst%20Time%20Experience&amp;amp;component=Gaia%3A%3AFMRadio&amp;amp;component=Gaia%3A%3AGallery&amp;amp;component=Gaia%3A%3AGithubBot&amp;amp;component=Gaia%3A%3AHomescreen&amp;amp;component=Gaia%3A%3AKeyboard&amp;amp;component=Gaia%3A%3AL10n&amp;amp;component=Gaia%3A%3ALoop&amp;amp;component=Gaia%3A%3AMusic&amp;amp;component=Gaia%3A%3ANotes&amp;amp;component=Gaia%3A%3APDF%20Viewer&amp;amp;component=Gaia%3A%3APerformanceTest&amp;amp;component=Gaia%3A%3ARingtones&amp;amp;component=Gaia%3A%3ASearch&amp;amp;component=Gaia%3A%3ASettings&amp;amp;component=Gaia%3A%3ASMS&amp;amp;component=Gaia%3A%3ASystem&amp;amp;component=Gaia%3A%3ASystem%3A%3ABrowser%20Chrome&amp;amp;component=Gaia%3A%3ASystem%3A%3AInput%20Mgmt&amp;amp;component=Gaia%3A%3ASystem%3A%3ALockscreen&amp;amp;component=Gaia%3A%3ASystem%3A%3AWindow%20Mgmt&amp;amp;component=Gaia%3A%3ATestAgent&amp;amp;component=Gaia%3A%3AUI%20Tests&amp;amp;component=Gaia%3A%3AVideo&amp;amp;component=Gaia%3A%3AWallpaper&amp;amp;component=Gaia%3A%3AWappush&amp;amp;v2=b2ga11y%20p%3D1&amp;amp;product=Core&amp;amp;product=Firefox%20OS all Gaia P1 a11y bugs] (~30 at this time).&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030465}} - Volume change should update the screen reader volume.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030466}} - Headphones screen reader volume is too low.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030468}} - VC rectangle needs to work with scaled content.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030470}} - Localization needs to work when switching locales in FxOS.&lt;br /&gt;
&lt;br /&gt;
=== Perf ===&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* {{ok|Ship Network Predictor (&amp;quot;Seer&amp;quot;) on nightly, using HTTP cache instead of SQLite ({{bug|1009122}}) (hurley)}}&lt;br /&gt;
* {{ok|Ship current (hopefully final) IETF version of HTTP/2 preffed on in nightly (hurley)}}&lt;br /&gt;
* {{ok|HTTP/2 &amp;quot;alt-svc&amp;quot; support ({{bug|1003448}}) (mcmanus)}}&lt;br /&gt;
* {{ok|HTTP cache: determine if revalidation is needed w/o doing I/O ({{bug|983122}}) (sworkman) }}&lt;br /&gt;
* {{ok|Network up/down link detection on all platforms ({{bug|939318}}) (bagder) }}&lt;br /&gt;
* {{ok|Implement WebSocket compression extension ({{bug|792831}}) (michal) }}&lt;br /&gt;
&lt;br /&gt;
=== Mobile  ===&lt;br /&gt;
&lt;br /&gt;
=== A*Team ===&lt;br /&gt;
&lt;br /&gt;
For full list, see [[Auto-tools/Goals/2014Q3|A-Team Goals 2014Q3]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B2G&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Run a set of performance and correctness tests per-commit to b2g-inbound on Flame devices&lt;br /&gt;
* {{ok|}} Get gaia-integration tests running on device&lt;br /&gt;
* {{ok|}} Expand the FxOS Certification Suite with 1.4 support, test automation to prevent regressions, and investigation of support for non-phone devices&lt;br /&gt;
* {{ok|}} Green up B2G tests on TaskCluster (joint with RelEng)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developer Productivity&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deploy ReviewBoard for developers to start using (joint with RelEng)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Performance&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deploy new Talos tests for tp5o_scroll, webgl, webrtc, and mainthread I/O&lt;br /&gt;
* {{ok|}} Get Datazilla alerts to beta mode (full parity with graph server alerts) with reduced noise&lt;br /&gt;
* {{ok|}} Get Eideticker running against Android again with increased frequency&lt;br /&gt;
* {{ok|}} Run B2G Eideticker against same branch/build combinations as our other on-device perf tests&lt;br /&gt;
* {{ok|}} Stand up a Games Benchmarking system for webaudio tests running against Firefox and Chrome&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeherder&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deliver performance web service for ingesting and returning performance data &lt;br /&gt;
* {{ok|}} Deliver a UI for viewing Talos data&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sheriffing&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Fully transition sheriffing from TBPL to Treeherder&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General Automation&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Create weekly reports that describe how many tests have been added/disabled/enabled per suite and platform&lt;br /&gt;
* {{ok|}} Move reftest to mozbase&lt;br /&gt;
* {{ok|}} Add command executors for Marionette for Java and Python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bugzilla&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Improve load time of related bugs; can decrease show_bug load times by up to 12%&lt;br /&gt;
* {{ok|}} Minify and concatenate JS files&lt;br /&gt;
* {{ok|}} Authoritative view for review history&lt;br /&gt;
* {{ok|}} Rewrite docs for REST API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Community&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Create good_next_bugs (name can be adjusted) so once contributors are comfortable they can do more serious coding/problem solving on a project they are familiar with&lt;br /&gt;
* {{ok|}} Monthly review of mentored bugs and projects&lt;br /&gt;
&lt;br /&gt;
=== Web Engineering ===&lt;br /&gt;
[https://etherpad.mozilla.org/webeng-q32014 full list - high level summary to come]&lt;br /&gt;
&lt;br /&gt;
=== SUMO and Input ===&lt;br /&gt;
* SUMO: Launch new offline SUMO app [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* SUMO: Develop new Community Hub to a level where it can replace legacy Karma app [Enable Communities with Impact]&lt;br /&gt;
* SUMO: Research and prototype new experimental features (e.g. geotargeting, Instant Search, Search Suggestions) [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* Input: Improve documentation and install to lower the bar for contribution [Enable Communities with Impact]&lt;br /&gt;
* Input: Ship Firefox Desktop product dashboard [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* Input: (STRETCH) Ship Firefox OS product dashboard [Scaling FirefoxOS]&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering - Laura ===&lt;br /&gt;
* Enable capacity expansion for bare-metal releng OS X build and test slaves via hardware provided by third-party datacenters (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Simplify release engineering mobile hardware infrastructure (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Automate developer access to continuous integration resources to expedite debugging and standing up new job variants. (Enable Communities With Impact)&lt;br /&gt;
* Help enable video operability on the web by providing continuous integration for Cisco Open H.264 builds. (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering - Taras ===&lt;br /&gt;
* Replace aging Firefox update service with a scalable, modern solution. (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Simplify developer workflow by automating patch landing and uplift. (Enable Communities With Impact)&lt;br /&gt;
* Local HTTP caches in each region/datacenter: sccache, ftp.mozilla.org, pvtbuilds&lt;br /&gt;
* EBS &amp;lt; 3% of AWS bill(vs 30% in Q2)&lt;br /&gt;
* 80% of b2g jobs turned off in buildbut, running on taskcluster&lt;br /&gt;
* Turn telemetry is into a general purpose s3 ingester and analysis tool&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering Operations ===&lt;br /&gt;
* Build/Test System Performance Enhancements&lt;br /&gt;
** {{ok| Unify releng platform architecture, using common tools and best practices, to decrease complexity and enable smoother developer engagement {{bug|1026109}} and {{bug|1026110}} [Get Firefox on a Trajectory of Growth, Enable Communities With Impact] }}&lt;br /&gt;
** {{ok| Improve communication and response time for releng network flow requests {{bug|1026112}} [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Improve security for all releng windows infrastructure {{bug|893716}} [Get Firefox on a Trajectory of Growth] }}&lt;br /&gt;
* Build/Test System Self-Serve Re-architecture&lt;br /&gt;
** {{prev| Design a private cloud deployment architecture for bare metal and produce a POC that supports Ubuntu 12.04 test machines. {{bug|963165}} [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Create self-service capability for releng hardware Firefox linux test slaves (build slaves as a stretch goal) {{bug|1026687}} (depends on completion of previous goal) [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Create self-service capability for releng hardware Firefox windows test slaves. {{bug|967064}} [Get Firefox on a Growth Trajectory] }}&lt;br /&gt;
&lt;br /&gt;
=== Developer Services ===&lt;br /&gt;
* {{new|(with B-team) roll out phase 2 of new review tooling}} [Get Firefox on a Growth Trajectory / Enable communities with impact]&lt;br /&gt;
* {{new|Upgrade existing Mercurial infrastructure to support more rapid, safe, and coordinated deployment of updates.}} [Get Firefox on a Growth Trajectory / Enable communities with impact]&lt;br /&gt;
&lt;br /&gt;
[https://etherpad.mozilla.org/devservices-Q32014 Full List]&lt;br /&gt;
&lt;br /&gt;
=== Security &amp;amp; Privacy Engineering ===&lt;br /&gt;
More details here: [[SecurityEngineering/2014/Q3Goals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content Security&#039;&#039;&#039;&lt;br /&gt;
* {{new|Gecko Security Hooks: Finish code and debugging for New Channel API, start getting reviews}} (dri=tanvi)&lt;br /&gt;
* {{new|Gecko Security Hooks: Create plan for addon compatibility}} (dri=tanvi)&lt;br /&gt;
* {{new|CSP: Remove old JS implementation from mozilla-central}} (dri=sstamm)&lt;br /&gt;
* {{new|Evangelism: Security Open Mic presentation + blog post about new CSP implementation, maybe again as brown bag.}} (dri=sstamm)&lt;br /&gt;
* {{new|&#039;&#039;[stretch goal]&#039;&#039; CSP: Fix majority of CSP 1.1 compatibility bugs}} (dri=ckerschb)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracking Protection&#039;&#039;&#039;&lt;br /&gt;
* {{new|Referer: Finish implementation of &amp;lt;meta&amp;gt; referrer control with volunteer help}} (dri=sstamm)&lt;br /&gt;
* {{new|Land first implementation of protection in Fx 33/34 off by default.}} (dri=mmc)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Communications Security&#039;&#039;&#039;&lt;br /&gt;
* {{prev|SSL Error Reporting finish first implementation of ssl error reporting feature.}} (dri=grobinson)&lt;br /&gt;
* {{new| HPKP - implement pinning http header}} (dri=cviecco)&lt;br /&gt;
* {{new| Update roadmap for Cert Revocation improvements}} (dri=rbarnes)&lt;br /&gt;
* {{new| Create a mechanism to provision phones with an alternate cert}} (dri=mgoodwin)&lt;br /&gt;
* {{new| Add measurement/enforcement of compliance with CABF Baseline Requirements}} (dri=keeler)&lt;br /&gt;
* {{new| Create a tool for testing CA certificate compliance and EV-readiness}} (dri=keeler)&lt;br /&gt;
* {{new| Add support for key wrap/unwrap and ECC in WebCrypto}} (dri=rbarnes)&lt;br /&gt;
* {{new| &#039;&#039;[stretch goal]&#039;&#039; Get CA Program data into one database}} (dri=kathleen)&lt;br /&gt;
&lt;br /&gt;
=== Firefox and Platform Security ===&lt;br /&gt;
&lt;br /&gt;
* [https://mana.mozilla.org/wiki/display/~gkwong@mozilla.com/Marifuzz Marifuzz ] fuzzer ported to and running on Flame devices.&lt;br /&gt;
* Update ASan and LSan work for DOMFuzzer&lt;br /&gt;
* Update &amp;quot;Bounty Stars&amp;quot; document with issues found by external reporters and updating DOMFuzzer to reflect these results.&lt;br /&gt;
* Get Clang on RelEng ready for official OS X ASan builds.&lt;br /&gt;
* Initial work to move CoreFuzz towards running in cloud environments.&lt;br /&gt;
* WebCrypto API fuzzing using Dharma fuzzer. &lt;br /&gt;
* Port a portion of WebRTC fuzzing from Frambois fuzzer to Dharma fuzzer.&lt;br /&gt;
* Peach: Improving and porting Peach 2 to Python 3.&lt;br /&gt;
* Public Mozilla Security Github work: Moving of fuzzing tools from Fuzzing Hg to GitHub, including work to separate harnesses from testcase generation tools.&lt;br /&gt;
&lt;br /&gt;
=== Games Program ===&lt;br /&gt;
&lt;br /&gt;
=== Release Management ===&lt;br /&gt;
For full list, see [[Release_Management/Goals/2014Q3#Release_Management_General|Release Management 2014Q3 Goals]].&lt;br /&gt;
* Create and document process for Desktop/Mobile feature fast tracking&lt;br /&gt;
* Determine future of ESR and how to manage this channel&lt;br /&gt;
* Continue desktop throttling experiment with intention of reducing throttled time while maintaining existing level of feedback&lt;br /&gt;
* Improve release notes with revamped template for all products&lt;br /&gt;
* Create B2G release model proposals and gather feedback for potential changes&lt;br /&gt;
* Figure out what to do with B2G Security Releases&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2014-Q3-Goals&amp;diff=995198</id>
		<title>Platform/2014-Q3-Goals</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2014-Q3-Goals&amp;diff=995198"/>
		<updated>2014-07-07T21:41:12Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Platform ===&lt;br /&gt;
==== [[Platform/2014-Goals|2014 General Goals]] ====&lt;br /&gt;
&lt;br /&gt;
=== GFX ===&lt;br /&gt;
Items marked [https://docs.google.com/a/mozilla.com/spreadsheet/ccc?key=0AnKFEBp1-VyqdFNfRlZmV0ExM0VvZGMxNThWX0d6LWc&amp;amp;usp=drive_web#gid=0 here] with release 33 and 34 are part of the Q3 landings.&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DOM ===&lt;br /&gt;
* {{ok|Mirror prototype of DOM objects through xray wrappers (peterv)}}&lt;br /&gt;
* {{ok|Remove nsDOMClassInfo.cpp}}&lt;br /&gt;
* {{ok|Make less-privileged non-Xrayable unwaived opaque from privileged code ({{bug|856067}})}}&lt;br /&gt;
* {{ok|Route all JSContext pushing through AutoJSAPI and Implement GetEntryGlobal ({{bug|951991}})}}&lt;br /&gt;
&lt;br /&gt;
=== WebAPI ===&lt;br /&gt;
&lt;br /&gt;
=== JS  ===&lt;br /&gt;
* {{jok|837314}} ES6 classes&lt;br /&gt;
* {{jok|941796}} Generational GC on Firefox OS&lt;br /&gt;
* {{jok|650161}} Compacting GC to reduce memory usage&lt;br /&gt;
* {{jok|856533}} Escape analysis JIT optimizations&lt;br /&gt;
* {{jok|998392}} Use Latin1 strings to reduce memory usage&lt;br /&gt;
* {{jok|903519}} Allocate strings in GC nursery (for performance)&lt;br /&gt;
* {{jok|972710}} ARM64 JIT &#039;&#039;[stretch goal]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
* {{ok|}}e10s: proxy the common a11y API stuff like name, role, and states.&lt;br /&gt;
* {{ok|}}GAIA: Fix [https://bugzilla.mozilla.org/buglist.cgi?priority=--&amp;amp;f1=blocked&amp;amp;list_id=10674217&amp;amp;o1=anyexact&amp;amp;resolution=---&amp;amp;query_based_on=b2ga11y%20p%3D1&amp;amp;o2=substring&amp;amp;query_format=advanced&amp;amp;f2=status_whiteboard&amp;amp;v1=893789&amp;amp;component=Disability%20Access%20APIs&amp;amp;component=Gaia&amp;amp;component=Gaia%3A%3ABluetooth%20File%20Transfer&amp;amp;component=Gaia%3A%3ABrowser&amp;amp;component=Gaia%3A%3ABuild&amp;amp;component=Gaia%3A%3ACalendar&amp;amp;component=Gaia%3A%3ACamera&amp;amp;component=Gaia%3A%3AClock&amp;amp;component=Gaia%3A%3AContacts&amp;amp;component=Gaia%3A%3ACost%20Control&amp;amp;component=Gaia%3A%3ADialer&amp;amp;component=Gaia%3A%3AE-Mail&amp;amp;component=Gaia%3A%3AEverything.me&amp;amp;component=Gaia%3A%3AFirst%20Time%20Experience&amp;amp;component=Gaia%3A%3AFMRadio&amp;amp;component=Gaia%3A%3AGallery&amp;amp;component=Gaia%3A%3AGithubBot&amp;amp;component=Gaia%3A%3AHomescreen&amp;amp;component=Gaia%3A%3AKeyboard&amp;amp;component=Gaia%3A%3AL10n&amp;amp;component=Gaia%3A%3ALoop&amp;amp;component=Gaia%3A%3AMusic&amp;amp;component=Gaia%3A%3ANotes&amp;amp;component=Gaia%3A%3APDF%20Viewer&amp;amp;component=Gaia%3A%3APerformanceTest&amp;amp;component=Gaia%3A%3ARingtones&amp;amp;component=Gaia%3A%3ASearch&amp;amp;component=Gaia%3A%3ASettings&amp;amp;component=Gaia%3A%3ASMS&amp;amp;component=Gaia%3A%3ASystem&amp;amp;component=Gaia%3A%3ASystem%3A%3ABrowser%20Chrome&amp;amp;component=Gaia%3A%3ASystem%3A%3AInput%20Mgmt&amp;amp;component=Gaia%3A%3ASystem%3A%3ALockscreen&amp;amp;component=Gaia%3A%3ASystem%3A%3AWindow%20Mgmt&amp;amp;component=Gaia%3A%3ATestAgent&amp;amp;component=Gaia%3A%3AUI%20Tests&amp;amp;component=Gaia%3A%3AVideo&amp;amp;component=Gaia%3A%3AWallpaper&amp;amp;component=Gaia%3A%3AWappush&amp;amp;v2=b2ga11y%20p%3D1&amp;amp;product=Core&amp;amp;product=Firefox%20OS all Gaia P1 a11y bugs] (~30 at this time).&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030465}} - Volume change should update the screen reader volume.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030466}} - Headphones screen reader volume is too low.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030468}} - VC rectangle needs to work with scaled content.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030470}} - Localization needs to work when switching locales in FxOS.&lt;br /&gt;
&lt;br /&gt;
=== Perf ===&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* {{ok|Ship Network Predictor (&amp;quot;Seer&amp;quot;) on nightly, using HTTP cache instead of SQLite ({{bug|1009122}}) (hurley)}}&lt;br /&gt;
* {{ok|Ship current (hopefully final) IETF version of HTTP/2 preffed on in nightly (hurley)}}&lt;br /&gt;
* {{ok|HTTP/2 &amp;quot;alt-svc&amp;quot; support ({{bug|1003448}}) (mcmanus)}}&lt;br /&gt;
* {{ok|HTTP cache: determine if revalidation is needed w/o doing I/O ({{bug|983122}}) (sworkman) }}&lt;br /&gt;
* {{ok|Network up/down link detection on all platforms ({{bug|939318}}) (bagder) }}&lt;br /&gt;
* {{ok|Implement WebSocket compression extension ({{bug|792831}}) (michal) }}&lt;br /&gt;
&lt;br /&gt;
=== Mobile  ===&lt;br /&gt;
&lt;br /&gt;
=== A*Team ===&lt;br /&gt;
&lt;br /&gt;
For full list, see [[Auto-tools/Goals/2014Q3|A-Team Goals 2014Q3]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B2G&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Run a set of performance and correctness tests per-commit to b2g-inbound on Flame devices&lt;br /&gt;
* {{ok|}} Get gaia-integration tests running on device&lt;br /&gt;
* {{ok|}} Expand the FxOS Certification Suite with 1.4 support, test automation to prevent regressions, and investigation of support for non-phone devices&lt;br /&gt;
* {{ok|}} Green up B2G tests on TaskCluster (joint with RelEng)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developer Productivity&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deploy ReviewBoard for developers to start using (joint with RelEng)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Performance&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deploy new Talos tests for tp5o_scroll, webgl, webrtc, and mainthread I/O&lt;br /&gt;
* {{ok|}} Get Datazilla alerts to beta mode (full parity with graph server alerts) with reduced noise&lt;br /&gt;
* {{ok|}} Get Eideticker running against Android again with increased frequency&lt;br /&gt;
* {{ok|}} Run B2G Eideticker against same branch/build combinations as our other on-device perf tests&lt;br /&gt;
* {{ok|}} Stand up a Games Benchmarking system for webaudio tests running against Firefox and Chrome&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeherder&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deliver performance web service for ingesting and returning performance data &lt;br /&gt;
* {{ok|}} Deliver a UI for viewing Talos data&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sheriffing&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Fully transition sheriffing from TBPL to Treeherder&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General Automation&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Create weekly reports that describe how many tests have been added/disabled/enabled per suite and platform&lt;br /&gt;
* {{ok|}} Move reftest to mozbase&lt;br /&gt;
* {{ok|}} Add command executors for Marionette for Java and Python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bugzilla&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Improve load time of related bugs; can decrease show_bug load times by up to 12%&lt;br /&gt;
* {{ok|}} Minify and concatenate JS files&lt;br /&gt;
* {{ok|}} Authoritative view for review history&lt;br /&gt;
* {{ok|}} Rewrite docs for REST API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Community&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Create good_next_bugs (name can be adjusted) so once contributors are comfortable they can do more serious coding/problem solving on a project they are familiar with&lt;br /&gt;
* {{ok|}} Monthly review of mentored bugs and projects&lt;br /&gt;
&lt;br /&gt;
=== Web Engineering ===&lt;br /&gt;
[https://etherpad.mozilla.org/webeng-q32014 full list - high level summary to come]&lt;br /&gt;
&lt;br /&gt;
=== SUMO and Input ===&lt;br /&gt;
* SUMO: Launch new offline SUMO app [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* SUMO: Develop new Community Hub to a level where it can replace legacy Karma app [Enable Communities with Impact]&lt;br /&gt;
* SUMO: Research and prototype new experimental features (e.g. geotargeting, Instant Search, Search Suggestions) [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* Input: Improve documentation and install to lower the bar for contribution [Enable Communities with Impact]&lt;br /&gt;
* Input: Ship Firefox Desktop product dashboard [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* Input: (STRETCH) Ship Firefox OS product dashboard [Scaling FirefoxOS]&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering - Laura ===&lt;br /&gt;
* Enable capacity expansion for bare-metal releng OS X build and test slaves via hardware provided by third-party datacenters (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Simplify release engineering mobile hardware infrastructure (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Automate developer access to continuous integration resources to expedite debugging and standing up new job variants. (Enable Communities With Impact)&lt;br /&gt;
* Help enable video operability on the web by providing continuous integration for Cisco Open H.264 builds. (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering - Taras ===&lt;br /&gt;
* Replace aging Firefox update service with a scalable, modern solution. (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Simplify developer workflow by automating patch landing and uplift. (Enable Communities With Impact)&lt;br /&gt;
* Local HTTP caches in each region/datacenter: sccache, ftp.mozilla.org, pvtbuilds&lt;br /&gt;
* EBS &amp;lt; 3% of AWS bill(vs 30% in Q2)&lt;br /&gt;
* 80% of b2g jobs turned off in buildbut, running on taskcluster&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering Operations ===&lt;br /&gt;
* Build/Test System Performance Enhancements&lt;br /&gt;
** {{ok| Unify releng platform architecture, using common tools and best practices, to decrease complexity and enable smoother developer engagement {{bug|1026109}} and {{bug|1026110}} [Get Firefox on a Trajectory of Growth, Enable Communities With Impact] }}&lt;br /&gt;
** {{ok| Improve communication and response time for releng network flow requests {{bug|1026112}} [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Improve security for all releng windows infrastructure {{bug|893716}} [Get Firefox on a Trajectory of Growth] }}&lt;br /&gt;
* Build/Test System Self-Serve Re-architecture&lt;br /&gt;
** {{prev| Design a private cloud deployment architecture for bare metal and produce a POC that supports Ubuntu 12.04 test machines. {{bug|963165}} [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Create self-service capability for releng hardware Firefox linux test slaves (build slaves as a stretch goal) {{bug|1026687}} (depends on completion of previous goal) [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Create self-service capability for releng hardware Firefox windows test slaves. {{bug|967064}} [Get Firefox on a Growth Trajectory] }}&lt;br /&gt;
&lt;br /&gt;
=== Developer Services ===&lt;br /&gt;
* {{new|(with B-team) roll out phase 2 of new review tooling}} [Get Firefox on a Growth Trajectory / Enable communities with impact]&lt;br /&gt;
* {{new|Upgrade existing Mercurial infrastructure to support more rapid, safe, and coordinated deployment of updates.}} [Get Firefox on a Growth Trajectory / Enable communities with impact]&lt;br /&gt;
&lt;br /&gt;
[https://etherpad.mozilla.org/devservices-Q32014 Full List]&lt;br /&gt;
&lt;br /&gt;
=== Security &amp;amp; Privacy Engineering ===&lt;br /&gt;
More details here: [[SecurityEngineering/2014/Q3Goals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content Security&#039;&#039;&#039;&lt;br /&gt;
* {{new|Gecko Security Hooks: Finish code and debugging for New Channel API, start getting reviews}} (dri=tanvi)&lt;br /&gt;
* {{new|Gecko Security Hooks: Create plan for addon compatibility}} (dri=tanvi)&lt;br /&gt;
* {{new|CSP: Remove old JS implementation from mozilla-central}} (dri=sstamm)&lt;br /&gt;
* {{new|Evangelism: Security Open Mic presentation + blog post about new CSP implementation, maybe again as brown bag.}} (dri=sstamm)&lt;br /&gt;
* {{new|&#039;&#039;[stretch goal]&#039;&#039; CSP: Fix majority of CSP 1.1 compatibility bugs}} (dri=ckerschb)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracking Protection&#039;&#039;&#039;&lt;br /&gt;
* {{new|Referer: Finish implementation of &amp;lt;meta&amp;gt; referrer control with volunteer help}} (dri=sstamm)&lt;br /&gt;
* {{new|Land first implementation of protection in Fx 33/34 off by default.}} (dri=mmc)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Communications Security&#039;&#039;&#039;&lt;br /&gt;
* {{prev|SSL Error Reporting finish first implementation of ssl error reporting feature.}} (dri=grobinson)&lt;br /&gt;
* {{new| HPKP - implement pinning http header}} (dri=cviecco)&lt;br /&gt;
* {{new| Update roadmap for Cert Revocation improvements}} (dri=rbarnes)&lt;br /&gt;
* {{new| Create a mechanism to provision phones with an alternate cert}} (dri=mgoodwin)&lt;br /&gt;
* {{new| Add measurement/enforcement of compliance with CABF Baseline Requirements}} (dri=keeler)&lt;br /&gt;
* {{new| Create a tool for testing CA certificate compliance and EV-readiness}} (dri=keeler)&lt;br /&gt;
* {{new| Add support for key wrap/unwrap and ECC in WebCrypto}} (dri=rbarnes)&lt;br /&gt;
* {{new| &#039;&#039;[stretch goal]&#039;&#039; Get CA Program data into one database}} (dri=kathleen)&lt;br /&gt;
&lt;br /&gt;
=== Firefox and Platform Security ===&lt;br /&gt;
&lt;br /&gt;
* [https://mana.mozilla.org/wiki/display/~gkwong@mozilla.com/Marifuzz Marifuzz ] fuzzer ported to and running on Flame devices.&lt;br /&gt;
* Update ASan and LSan work for DOMFuzzer&lt;br /&gt;
* Update &amp;quot;Bounty Stars&amp;quot; document with issues found by external reporters and updating DOMFuzzer to reflect these results.&lt;br /&gt;
* Get Clang on RelEng ready for official OS X ASan builds.&lt;br /&gt;
* Initial work to move CoreFuzz towards running in cloud environments.&lt;br /&gt;
* WebCrypto API fuzzing using Dharma fuzzer. &lt;br /&gt;
* Port a portion of WebRTC fuzzing from Frambois fuzzer to Dharma fuzzer.&lt;br /&gt;
* Peach: Improving and porting Peach 2 to Python 3.&lt;br /&gt;
* Public Mozilla Security Github work: Moving of fuzzing tools from Fuzzing Hg to GitHub, including work to separate harnesses from testcase generation tools.&lt;br /&gt;
&lt;br /&gt;
=== Games Program ===&lt;br /&gt;
&lt;br /&gt;
=== Release Management ===&lt;br /&gt;
For full list, see [[Release_Management/Goals/2014Q3#Release_Management_General|Release Management 2014Q3 Goals]].&lt;br /&gt;
* Create and document process for Desktop/Mobile feature fast tracking&lt;br /&gt;
* Determine future of ESR and how to manage this channel&lt;br /&gt;
* Continue desktop throttling experiment with intention of reducing throttled time while maintaining existing level of feedback&lt;br /&gt;
* Improve release notes with revamped template for all products&lt;br /&gt;
* Create B2G release model proposals and gather feedback for potential changes&lt;br /&gt;
* Figure out what to do with B2G Security Releases&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2014-Q3-Goals&amp;diff=995195</id>
		<title>Platform/2014-Q3-Goals</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2014-Q3-Goals&amp;diff=995195"/>
		<updated>2014-07-07T21:32:02Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Release Engineering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Platform ===&lt;br /&gt;
==== [[Platform/2014-Goals|2014 General Goals]] ====&lt;br /&gt;
&lt;br /&gt;
=== GFX ===&lt;br /&gt;
Items marked [https://docs.google.com/a/mozilla.com/spreadsheet/ccc?key=0AnKFEBp1-VyqdFNfRlZmV0ExM0VvZGMxNThWX0d6LWc&amp;amp;usp=drive_web#gid=0 here] with release 33 and 34 are part of the Q3 landings.&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DOM ===&lt;br /&gt;
* {{ok|Mirror prototype of DOM objects through xray wrappers (peterv)}}&lt;br /&gt;
* {{ok|Remove nsDOMClassInfo.cpp}}&lt;br /&gt;
* {{ok|Make less-privileged non-Xrayable unwaived opaque from privileged code ({{bug|856067}})}}&lt;br /&gt;
* {{ok|Route all JSContext pushing through AutoJSAPI and Implement GetEntryGlobal ({{bug|951991}})}}&lt;br /&gt;
&lt;br /&gt;
=== WebAPI ===&lt;br /&gt;
&lt;br /&gt;
=== JS  ===&lt;br /&gt;
* {{jok|837314}} ES6 classes&lt;br /&gt;
* {{jok|941796}} Generational GC on Firefox OS&lt;br /&gt;
* {{jok|650161}} Compacting GC to reduce memory usage&lt;br /&gt;
* {{jok|856533}} Escape analysis JIT optimizations&lt;br /&gt;
* {{jok|998392}} Use Latin1 strings to reduce memory usage&lt;br /&gt;
* {{jok|903519}} Allocate strings in GC nursery (for performance)&lt;br /&gt;
* {{jok|972710}} ARM64 JIT &#039;&#039;[stretch goal]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
* {{ok|}}e10s: proxy the common a11y API stuff like name, role, and states.&lt;br /&gt;
* {{ok|}}GAIA: Fix [https://bugzilla.mozilla.org/buglist.cgi?priority=--&amp;amp;f1=blocked&amp;amp;list_id=10674217&amp;amp;o1=anyexact&amp;amp;resolution=---&amp;amp;query_based_on=b2ga11y%20p%3D1&amp;amp;o2=substring&amp;amp;query_format=advanced&amp;amp;f2=status_whiteboard&amp;amp;v1=893789&amp;amp;component=Disability%20Access%20APIs&amp;amp;component=Gaia&amp;amp;component=Gaia%3A%3ABluetooth%20File%20Transfer&amp;amp;component=Gaia%3A%3ABrowser&amp;amp;component=Gaia%3A%3ABuild&amp;amp;component=Gaia%3A%3ACalendar&amp;amp;component=Gaia%3A%3ACamera&amp;amp;component=Gaia%3A%3AClock&amp;amp;component=Gaia%3A%3AContacts&amp;amp;component=Gaia%3A%3ACost%20Control&amp;amp;component=Gaia%3A%3ADialer&amp;amp;component=Gaia%3A%3AE-Mail&amp;amp;component=Gaia%3A%3AEverything.me&amp;amp;component=Gaia%3A%3AFirst%20Time%20Experience&amp;amp;component=Gaia%3A%3AFMRadio&amp;amp;component=Gaia%3A%3AGallery&amp;amp;component=Gaia%3A%3AGithubBot&amp;amp;component=Gaia%3A%3AHomescreen&amp;amp;component=Gaia%3A%3AKeyboard&amp;amp;component=Gaia%3A%3AL10n&amp;amp;component=Gaia%3A%3ALoop&amp;amp;component=Gaia%3A%3AMusic&amp;amp;component=Gaia%3A%3ANotes&amp;amp;component=Gaia%3A%3APDF%20Viewer&amp;amp;component=Gaia%3A%3APerformanceTest&amp;amp;component=Gaia%3A%3ARingtones&amp;amp;component=Gaia%3A%3ASearch&amp;amp;component=Gaia%3A%3ASettings&amp;amp;component=Gaia%3A%3ASMS&amp;amp;component=Gaia%3A%3ASystem&amp;amp;component=Gaia%3A%3ASystem%3A%3ABrowser%20Chrome&amp;amp;component=Gaia%3A%3ASystem%3A%3AInput%20Mgmt&amp;amp;component=Gaia%3A%3ASystem%3A%3ALockscreen&amp;amp;component=Gaia%3A%3ASystem%3A%3AWindow%20Mgmt&amp;amp;component=Gaia%3A%3ATestAgent&amp;amp;component=Gaia%3A%3AUI%20Tests&amp;amp;component=Gaia%3A%3AVideo&amp;amp;component=Gaia%3A%3AWallpaper&amp;amp;component=Gaia%3A%3AWappush&amp;amp;v2=b2ga11y%20p%3D1&amp;amp;product=Core&amp;amp;product=Firefox%20OS all Gaia P1 a11y bugs] (~30 at this time).&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030465}} - Volume change should update the screen reader volume.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030466}} - Headphones screen reader volume is too low.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030468}} - VC rectangle needs to work with scaled content.&lt;br /&gt;
* {{ok|}}FFOS: {{Bug|1030470}} - Localization needs to work when switching locales in FxOS.&lt;br /&gt;
&lt;br /&gt;
=== Perf ===&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* {{ok|Ship Network Predictor (&amp;quot;Seer&amp;quot;) on nightly, using HTTP cache instead of SQLite ({{bug|1009122}}) (hurley)}}&lt;br /&gt;
* {{ok|Ship current (hopefully final) IETF version of HTTP/2 preffed on in nightly (hurley)}}&lt;br /&gt;
* {{ok|HTTP/2 &amp;quot;alt-svc&amp;quot; support ({{bug|1003448}}) (mcmanus)}}&lt;br /&gt;
* {{ok|HTTP cache: determine if revalidation is needed w/o doing I/O ({{bug|983122}}) (sworkman) }}&lt;br /&gt;
* {{ok|Network up/down link detection on all platforms ({{bug|939318}}) (bagder) }}&lt;br /&gt;
* {{ok|Implement WebSocket compression extension ({{bug|792831}}) (michal) }}&lt;br /&gt;
&lt;br /&gt;
=== Mobile  ===&lt;br /&gt;
&lt;br /&gt;
=== A*Team ===&lt;br /&gt;
&lt;br /&gt;
For full list, see [[Auto-tools/Goals/2014Q3|A-Team Goals 2014Q3]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B2G&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Run a set of performance and correctness tests per-commit to b2g-inbound on Flame devices&lt;br /&gt;
* {{ok|}} Get gaia-integration tests running on device&lt;br /&gt;
* {{ok|}} Expand the FxOS Certification Suite with 1.4 support, test automation to prevent regressions, and investigation of support for non-phone devices&lt;br /&gt;
* {{ok|}} Green up B2G tests on TaskCluster (joint with RelEng)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developer Productivity&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deploy ReviewBoard for developers to start using (joint with RelEng)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Performance&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deploy new Talos tests for tp5o_scroll, webgl, webrtc, and mainthread I/O&lt;br /&gt;
* {{ok|}} Get Datazilla alerts to beta mode (full parity with graph server alerts) with reduced noise&lt;br /&gt;
* {{ok|}} Get Eideticker running against Android again with increased frequency&lt;br /&gt;
* {{ok|}} Run B2G Eideticker against same branch/build combinations as our other on-device perf tests&lt;br /&gt;
* {{ok|}} Stand up a Games Benchmarking system for webaudio tests running against Firefox and Chrome&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treeherder&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Deliver performance web service for ingesting and returning performance data &lt;br /&gt;
* {{ok|}} Deliver a UI for viewing Talos data&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sheriffing&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Fully transition sheriffing from TBPL to Treeherder&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General Automation&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Create weekly reports that describe how many tests have been added/disabled/enabled per suite and platform&lt;br /&gt;
* {{ok|}} Move reftest to mozbase&lt;br /&gt;
* {{ok|}} Add command executors for Marionette for Java and Python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bugzilla&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Improve load time of related bugs; can decrease show_bug load times by up to 12%&lt;br /&gt;
* {{ok|}} Minify and concatenate JS files&lt;br /&gt;
* {{ok|}} Authoritative view for review history&lt;br /&gt;
* {{ok|}} Rewrite docs for REST API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Community&#039;&#039;&#039;&lt;br /&gt;
* {{ok|}} Create good_next_bugs (name can be adjusted) so once contributors are comfortable they can do more serious coding/problem solving on a project they are familiar with&lt;br /&gt;
* {{ok|}} Monthly review of mentored bugs and projects&lt;br /&gt;
&lt;br /&gt;
=== Web Engineering ===&lt;br /&gt;
[https://etherpad.mozilla.org/webeng-q32014 full list - high level summary to come]&lt;br /&gt;
&lt;br /&gt;
=== SUMO and Input ===&lt;br /&gt;
* SUMO: Launch new offline SUMO app [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* SUMO: Develop new Community Hub to a level where it can replace legacy Karma app [Enable Communities with Impact]&lt;br /&gt;
* SUMO: Research and prototype new experimental features (e.g. geotargeting, Instant Search, Search Suggestions) [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* Input: Improve documentation and install to lower the bar for contribution [Enable Communities with Impact]&lt;br /&gt;
* Input: Ship Firefox Desktop product dashboard [Get Firefox on a Growth Trajectory]&lt;br /&gt;
* Input: (STRETCH) Ship Firefox OS product dashboard [Scaling FirefoxOS]&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering - Laura ===&lt;br /&gt;
* Enable capacity expansion for bare-metal releng OS X build and test slaves via hardware provided by third-party datacenters (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Simplify release engineering mobile hardware infrastructure (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Automate developer access to continuous integration resources to expedite debugging and standing up new job variants. (Enable Communities With Impact)&lt;br /&gt;
* Help enable video operability on the web by providing continuous integration for Cisco Open H.264 builds. (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Replace aging Firefox update service with a scaleable, modern solution. (Get Firefox on a Trajectory of Growth)&lt;br /&gt;
* Simplify developer workflow by automating patch landing and uplift. (Enable Communities With Impact)&lt;br /&gt;
&lt;br /&gt;
=== Release Engineering Operations ===&lt;br /&gt;
* Build/Test System Performance Enhancements&lt;br /&gt;
** {{ok| Unify releng platform architecture, using common tools and best practices, to decrease complexity and enable smoother developer engagement {{bug|1026109}} and {{bug|1026110}} [Get Firefox on a Trajectory of Growth, Enable Communities With Impact] }}&lt;br /&gt;
** {{ok| Improve communication and response time for releng network flow requests {{bug|1026112}} [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Improve security for all releng windows infrastructure {{bug|893716}} [Get Firefox on a Trajectory of Growth] }}&lt;br /&gt;
* Build/Test System Self-Serve Re-architecture&lt;br /&gt;
** {{prev| Design a private cloud deployment architecture for bare metal and produce a POC that supports Ubuntu 12.04 test machines. {{bug|963165}} [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Create self-service capability for releng hardware Firefox linux test slaves (build slaves as a stretch goal) {{bug|1026687}} (depends on completion of previous goal) [Get Firefox on a Trajectory of Growth, Scale Firefox OS] }}&lt;br /&gt;
** {{ok| Create self-service capability for releng hardware Firefox windows test slaves. {{bug|967064}} [Get Firefox on a Growth Trajectory] }}&lt;br /&gt;
&lt;br /&gt;
=== Developer Services ===&lt;br /&gt;
* {{new|(with B-team) roll out phase 2 of new review tooling}} [Get Firefox on a Growth Trajectory / Enable communities with impact]&lt;br /&gt;
* {{new|Upgrade existing Mercurial infrastructure to support more rapid, safe, and coordinated deployment of updates.}} [Get Firefox on a Growth Trajectory / Enable communities with impact]&lt;br /&gt;
&lt;br /&gt;
[https://etherpad.mozilla.org/devservices-Q32014 Full List]&lt;br /&gt;
&lt;br /&gt;
=== Security &amp;amp; Privacy Engineering ===&lt;br /&gt;
More details here: [[SecurityEngineering/2014/Q3Goals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Content Security&#039;&#039;&#039;&lt;br /&gt;
* {{new|Gecko Security Hooks: Finish code and debugging for New Channel API, start getting reviews}} (dri=tanvi)&lt;br /&gt;
* {{new|Gecko Security Hooks: Create plan for addon compatibility}} (dri=tanvi)&lt;br /&gt;
* {{new|CSP: Remove old JS implementation from mozilla-central}} (dri=sstamm)&lt;br /&gt;
* {{new|Evangelism: Security Open Mic presentation + blog post about new CSP implementation, maybe again as brown bag.}} (dri=sstamm)&lt;br /&gt;
* {{new|&#039;&#039;[stretch goal]&#039;&#039; CSP: Fix majority of CSP 1.1 compatibility bugs}} (dri=ckerschb)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tracking Protection&#039;&#039;&#039;&lt;br /&gt;
* {{new|Referer: Finish implementation of &amp;lt;meta&amp;gt; referrer control with volunteer help}} (dri=sstamm)&lt;br /&gt;
* {{new|Land first implementation of protection in Fx 33/34 off by default.}} (dri=mmc)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Communications Security&#039;&#039;&#039;&lt;br /&gt;
* {{prev|SSL Error Reporting finish first implementation of ssl error reporting feature.}} (dri=grobinson)&lt;br /&gt;
* {{new| HPKP - implement pinning http header}} (dri=cviecco)&lt;br /&gt;
* {{new| Update roadmap for Cert Revocation improvements}} (dri=rbarnes)&lt;br /&gt;
* {{new| Create a mechanism to provision phones with an alternate cert}} (dri=mgoodwin)&lt;br /&gt;
* {{new| Add measurement/enforcement of compliance with CABF Baseline Requirements}} (dri=keeler)&lt;br /&gt;
* {{new| Create a tool for testing CA certificate compliance and EV-readiness}} (dri=keeler)&lt;br /&gt;
* {{new| Add support for key wrap/unwrap and ECC in WebCrypto}} (dri=rbarnes)&lt;br /&gt;
* {{new| &#039;&#039;[stretch goal]&#039;&#039; Get CA Program data into one database}} (dri=kathleen)&lt;br /&gt;
&lt;br /&gt;
=== Firefox and Platform Security ===&lt;br /&gt;
&lt;br /&gt;
* [https://mana.mozilla.org/wiki/display/~gkwong@mozilla.com/Marifuzz Marifuzz ] fuzzer ported to and running on Flame devices.&lt;br /&gt;
* Update ASan and LSan work for DOMFuzzer&lt;br /&gt;
* Update &amp;quot;Bounty Stars&amp;quot; document with issues found by external reporters and updating DOMFuzzer to reflect these results.&lt;br /&gt;
* Get Clang on RelEng ready for official OS X ASan builds.&lt;br /&gt;
* Initial work to move CoreFuzz towards running in cloud environments.&lt;br /&gt;
* WebCrypto API fuzzing using Dharma fuzzer. &lt;br /&gt;
* Port a portion of WebRTC fuzzing from Frambois fuzzer to Dharma fuzzer.&lt;br /&gt;
* Peach: Improving and porting Peach 2 to Python 3.&lt;br /&gt;
* Public Mozilla Security Github work: Moving of fuzzing tools from Fuzzing Hg to GitHub, including work to separate harnesses from testcase generation tools.&lt;br /&gt;
&lt;br /&gt;
=== Games Program ===&lt;br /&gt;
&lt;br /&gt;
=== Release Management ===&lt;br /&gt;
For full list, see [[Release_Management/Goals/2014Q3#Release_Management_General|Release Management 2014Q3 Goals]].&lt;br /&gt;
* Create and document process for Desktop/Mobile feature fast tracking&lt;br /&gt;
* Determine future of ESR and how to manage this channel&lt;br /&gt;
* Continue desktop throttling experiment with intention of reducing throttled time while maintaining existing level of feedback&lt;br /&gt;
* Improve release notes with revamped template for all products&lt;br /&gt;
* Create B2G release model proposals and gather feedback for potential changes&lt;br /&gt;
* Figure out what to do with B2G Security Releases&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Mobile/Janus&amp;diff=995076</id>
		<title>Mobile/Janus</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Mobile/Janus&amp;diff=995076"/>
		<updated>2014-07-07T17:04:22Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Janus is a project to find and evaluate ways to enable more efficient mobile browsing.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
The goal of Janus is to verify whether we can enhance the mobile browsing experience by achieving the following improvements in a practical way:&lt;br /&gt;
* Reduce radio time&lt;br /&gt;
* Reduce page load times&lt;br /&gt;
* Reduce bandwidth requirements&lt;br /&gt;
* &#039;&#039;&#039;Increase user privacy&#039;&#039;&#039;&lt;br /&gt;
* Increase responsiveness for slow sites&lt;br /&gt;
&lt;br /&gt;
Ways we hope to accomplish some of these things:&lt;br /&gt;
* Recompress images to be smaller without noticeable visual impact&lt;br /&gt;
* Compress text (js, html) streams (gzip, bzip2, lzma?)&lt;br /&gt;
* Caching&lt;br /&gt;
* Reduce HTTPS round trips&lt;br /&gt;
* Move safe browsing support to the proxy&lt;br /&gt;
* Link prefetching&lt;br /&gt;
&lt;br /&gt;
Other crazy stuff we could do:&lt;br /&gt;
* Man-in-the-middle HTTPS traffic only for images (so they get recompressed) with user consent&lt;br /&gt;
* Convert animated GIF to H264/WebM/whatever. gfycat.com does this now with apparently good results&lt;br /&gt;
* Pre-Shumwayize Flash content&lt;br /&gt;
* Automatic readability mode for some sites&lt;br /&gt;
* Ad blocking&lt;br /&gt;
** Only obnoxious ads?&lt;br /&gt;
** Replace with our own?&lt;br /&gt;
** Only block ones that track?&lt;br /&gt;
* Add support for adaptive streaming (MPEG-DASH) for servers that don&#039;t support it. Transcode to lower bitrates.&lt;br /&gt;
** Proxy HLS sites as MPEG-DASH&lt;br /&gt;
* Opera Mini-like pre-rendering of pages&lt;br /&gt;
&lt;br /&gt;
Taras crazy stuff:&lt;br /&gt;
* http://zsync.moria.org.uk/ content that changes a little bit, but frequently&lt;br /&gt;
* Can also do this for web cut/n/paste. Server could insist on serving zsync summaries of common files(eg css libs, js libs like jquery) and client would do a distance search locally to see if it has anything similar and then only do range requests needed to construct the new version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Currently we send if-modified-since:&lt;br /&gt;
We could add header supports-zsync: &lt;br /&gt;
&lt;br /&gt;
This would make server reply with a .zsync which the client would then use to submit range: requests.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* asset bundling/inlining for cold loads&lt;br /&gt;
** server can determine when client got nothing in cache(eg no if-modified-since), do spdy-push from a preset profile&lt;br /&gt;
** server could spdy-push partial files(eg only css that gets used) + zsync of rest of contents so client can request missing pieces for other pages on the website(this can hugely reduce transfer sizes)...If i remember correctly from https://bugzilla.mozilla.org/show_bug.cgi?id=834865 70%+ of css is leftover cruft...Note this might be easier to do having sites be aware of this and bundling a library that supports having css/js broken up into multiple files &amp;amp; supports waiting on missing pieces&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Transport Layer Security (TLS) ===&lt;br /&gt;
==== TLS handshake ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Time&#039;&#039;&#039; [ms]             &#039;&#039;&#039;Client&#039;&#039;&#039;       &#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
 30                       SYN  --&amp;gt;                           &lt;br /&gt;
 60                            &amp;lt;--  SYN ACK&lt;br /&gt;
 90                       ACK  --&amp;gt;&lt;br /&gt;
 120                           &amp;lt;--  Certificate&lt;br /&gt;
 150         ChangeChiperSpec  --&amp;gt; &lt;br /&gt;
 180                           &amp;lt;--  ChangeCipherSpec&lt;br /&gt;
 210                     Data  --&amp;gt;   &lt;br /&gt;
 240                           &amp;lt;--  Data&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== SPDY ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== 3G/4G ===&lt;br /&gt;
==== LTE Mobile Network ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Latency&#039;&#039;&#039; [ms]   &#039;&#039;&#039;Type&#039;&#039;&#039;            &#039;&#039;&#039;Device&#039;&#039;&#039;      &#039;&#039;&#039;RAN&#039;&#039;&#039;      &#039;&#039;&#039;Core Network&#039;&#039;&#039;             &#039;&#039;&#039;Internet&#039;&#039;&#039;&lt;br /&gt;
                                                     &#039;&#039;&#039;SGW&#039;&#039;&#039;     &#039;&#039;&#039;MME&#039;&#039;&#039;     &#039;&#039;&#039;PGW&#039;&#039;&#039;           &lt;br /&gt;
 &amp;lt;100           control plane          &amp;lt;--&amp;gt; &lt;br /&gt;
 &amp;lt;5             user plane             &amp;lt;--&amp;gt;&lt;br /&gt;
 30-100         backbone                        &amp;lt;--&amp;gt; &lt;br /&gt;
 variable       routing                                                  &amp;lt;--&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Control Plane Latency ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
                &#039;&#039;&#039;GPRS    EDGE    HSPA   HSPA+   LTE    LTE-Advanced&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Latency&#039;&#039;&#039; [ms]   &amp;lt;1000   &amp;lt;1000   &amp;lt;500   &amp;lt;200    &amp;lt;100   &amp;lt;50&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Radio Access Network (RAN) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Radio Resource Controller (RRC) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Packet Gateway (PGW) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Serving Gateway (SGW) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Mobility Management Entity (MME) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Image Compression ===&lt;br /&gt;
&lt;br /&gt;
==== Image Formats ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format !! Lossy !! Transparency support !! Supported by Firefox&lt;br /&gt;
|-&lt;br /&gt;
| JPEG || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| JPEG XR || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| JPEG 2000 || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| PNG || No  || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| JNG || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| WebP || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| BMP || No || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sample ====&lt;br /&gt;
&lt;br /&gt;
The sample used for the tests below was made using images from 20 different webpages from the Alexa&#039;s top 200 most visited websites list.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format !! Number of images !! Total size (MB)&lt;br /&gt;
|-&lt;br /&gt;
| JPEG || 325 || 12&lt;br /&gt;
|-&lt;br /&gt;
| PNG || 817 || 14&lt;br /&gt;
|-&lt;br /&gt;
| GIF || 325 || 1.8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PNG Compression ====&lt;br /&gt;
&lt;br /&gt;
The PNG sample size is 12383KB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Compression Method !! New sample size (kB) !! Average compression (%) !! Total time (s)&lt;br /&gt;
|-&lt;br /&gt;
| optipng -o 1 || 11560 || 7 || 70&lt;br /&gt;
|-&lt;br /&gt;
| optipng -o 5 || 10940 || 12 || 481&lt;br /&gt;
|-&lt;br /&gt;
| [http://pngquant.org/ pngquant] || 5169 || 59 || 69&lt;br /&gt;
|-&lt;br /&gt;
| pngcrush || 10997 || 12 || 90&lt;br /&gt;
|-&lt;br /&gt;
| pngcrush + optipng -o 5 || 10280 || 17 || 541&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 90) || 4741 || 62 || 47&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 100) || 8321 || 33 || 48&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JPEG Compression ====&lt;br /&gt;
&lt;br /&gt;
The sample size is 10846kB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Compression Method !! New sample size (kB) !! Average compression (%) !! Total time (s)&lt;br /&gt;
|-&lt;br /&gt;
| mozjpeg || 9663 || 11 || 53&lt;br /&gt;
|-&lt;br /&gt;
| mozjpeg (quality = 90) || 8571 || 21 || -&lt;br /&gt;
|-&lt;br /&gt;
| jpegoptim || 10497 || 4 || 39&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 100) || 17551 || -61 || 42&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 90) || 8316 || 24 || 40&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GIF Compression ====&lt;br /&gt;
&lt;br /&gt;
The sample size is 846kB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Compression Method !! New sample size (kB) !! Average compression (%) !! Total time (s)&lt;br /&gt;
|-&lt;br /&gt;
| gifsicle || 805 || 5 || 16&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Animated GIF Compression ====&lt;br /&gt;
&lt;br /&gt;
It is possible to convert animated GIFs to WebM videos (as [http://gfycat.com/ gfycat.com] does), this can be done with a straightforward ffmpeg command. The processing time can be high but the size reduction is huge!&lt;br /&gt;
&lt;br /&gt;
Some stats from a small set of 10 animated GIFs:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Original sample size (kB) !! New sample size (kB) !! Average compression (%) !! Total time (s) !! Median time (s)&lt;br /&gt;
|-&lt;br /&gt;
| 25162 || 1177 || 95 || 25 || 2.46&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Image size !! Time (s)&lt;br /&gt;
|-&lt;br /&gt;
| 531K ||  0.301&lt;br /&gt;
|-&lt;br /&gt;
| 844K ||  0.719&lt;br /&gt;
|-&lt;br /&gt;
| 992K ||  0.847&lt;br /&gt;
|-&lt;br /&gt;
| 1.1M ||  2.726&lt;br /&gt;
|-&lt;br /&gt;
| 1.3M ||  2.199&lt;br /&gt;
|-&lt;br /&gt;
| 1.5M ||  2.831&lt;br /&gt;
|-&lt;br /&gt;
| 1.7M ||  1.497&lt;br /&gt;
|-&lt;br /&gt;
| 3.5M ||  5.223&lt;br /&gt;
|-&lt;br /&gt;
| 4.5M ||  2.777&lt;br /&gt;
|-&lt;br /&gt;
| 8.0M ||  6.604&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Misconceptions ===&lt;br /&gt;
==== Losing radio link means losing TCP connection ====&lt;br /&gt;
The PGW terminates the TCP/UDP connections, application level connectivity is not tied to the physical radio link.&lt;br /&gt;
&lt;br /&gt;
==== A device session is tied to an IP ====&lt;br /&gt;
The PGW provides NAT services, a device can be mapped to multiple IP/port combinations or multiple devices can share the same IP.&lt;br /&gt;
&lt;br /&gt;
==== Bandwidth is the decisive factor for page load speed ====&lt;br /&gt;
Bandwidth gives the upper bound on transmission speed under optimal conditions. In realistic environments, considering the speed of light and the shortcomings of the transmission protocol, &#039;&#039;latency&#039;&#039; is the limiting factor for the maximum throughput.&lt;br /&gt;
&lt;br /&gt;
== Tracking Bugs ==&lt;br /&gt;
The Node.js based proxy implementation is maintained on GitHub: [https://github.com/mozilla/node-gonzales node-gonzales]. Please use it to report issues and make pull requests.&lt;br /&gt;
&lt;br /&gt;
Required &#039;&#039;&#039;features&#039;&#039;&#039; that Janus depends on are tracked here&lt;br /&gt;
* {{bug|378637}} - Add support for connecting to HTTP proxy over HTTPS&lt;br /&gt;
* {{bug|366559}} - Firefox/Gecko should support LZMA as an HTTP transfer-encoding method&lt;br /&gt;
* {{bug|1010068}} - Disable OCSP on Firefox for Android&lt;br /&gt;
&lt;br /&gt;
Known &#039;&#039;&#039;issues&#039;&#039;&#039; affecting Janus are tracked here&lt;br /&gt;
* {{bug|1014589}} - Fennec crashes on page load when connected with SPDY proxy&lt;br /&gt;
&lt;br /&gt;
== System Overview ==&lt;br /&gt;
Janus is a secure proxy server that accepts requests via the SPDY protocol and serves compressed content directly from its cache, if available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Browser &amp;lt;-SPDY-&amp;gt; Janus                                &amp;lt;-HTTP/HTTPS/SPDY-&amp;gt; Web&lt;br /&gt;
                |                                         |&lt;br /&gt;
                Proxy &amp;lt;-&amp;gt; Cache &amp;lt;-?-&amp;gt; Compressor &amp;lt;-&amp;gt; Loader&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Routing requests through a SPDY proxy does require less open TCP connections (multiplexing), decreases packet sizes (header compression) and reduces the number of packets (header caching) compared to HTTP/1. Low bandwidth and high latency connections should benefit from this.&lt;br /&gt;
&lt;br /&gt;
The current trend on the Web shows an increase in average page size, especially due to high-resolution images. Additional image compression and downsizing should decrease the bandwidth requirements and enable faster page loads. To counteract the introduced processing overhead and boost load times for slow pages, we add intermediate caching for the compressed results.&lt;br /&gt;
&lt;br /&gt;
== Experimental Setups ==&lt;br /&gt;
To evaluate the system, we test each component in isolation first.&lt;br /&gt;
We identify third-party systems suitable for integration into the prototype and evaluate them. All qualified systems will be considered for integration or as the base of our final implementation.&lt;br /&gt;
&lt;br /&gt;
=== SPDY Proxy ===&lt;br /&gt;
Currently, only Google Chrome supports secure SPDY proxies, but it requires valid certificates, which makes it unsuitable for testing. We bypass the missing support by using &#039;&#039;&#039;shrpx&#039;&#039;&#039; in client mode as a &#039;&#039;forward proxy&#039;&#039;, and that way simulate SPDY support on any client.&lt;br /&gt;
&lt;br /&gt;
Dependencies:&lt;br /&gt;
* Firefox/Fennec&lt;br /&gt;
* Spdylay (http://tatsuhiro-t.github.io/spdylay)&lt;br /&gt;
* Squid (http://www.squid-cache.org)&lt;br /&gt;
* [alternative] Node SPDY proxy (https://github.com/igrigorik/node-spdyproxy)&lt;br /&gt;
&lt;br /&gt;
Here are some experimental setups.&lt;br /&gt;
&lt;br /&gt;
==== P1 ====&lt;br /&gt;
In this setup, we connect a desktop browser via HTTP with a local forwarding proxy, which establishes a SPDY connection with the remote secure SPDY proxy. The secure SDPY proxy connects to a local web proxy to fetch the documents. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Desktop Client               &amp;lt;-SPDY-&amp;gt; SPDY Proxy &amp;lt;-HTTP-&amp;gt; Web Proxy &amp;lt;-HTTP-&amp;gt; Web&lt;br /&gt;
                              |      |            |      |           |&lt;br /&gt;
 Firefox &amp;lt;-HTTP-&amp;gt; [shrpx -k -p]      --[shrpx -s]--      ----Squid----&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== P2 ====&lt;br /&gt;
This setup is similar to P1, but running on a mobile client. This requires either direct secure SPDY proxy support on the mobile browser, or the usage of a local forwarding proxy running on the mobile device.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 Mobile Client               &amp;lt;-SPDY-&amp;gt; SPDY Proxy &amp;lt;-HTTP-&amp;gt; Web Proxy &amp;lt;-HTTP-&amp;gt; Web&lt;br /&gt;
                             |      |            |      |           |&lt;br /&gt;
 Fennec &amp;lt;-HTTP-&amp;gt; [shrpx -k -p]      --[shrpx -s]--      ----Squid----&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compression ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Performance Analysis ==&lt;br /&gt;
Let&#039;s collect some ideas here how to profile our prototypes.&lt;br /&gt;
&lt;br /&gt;
Could be useful:&lt;br /&gt;
* [https://wiki.mozilla.org/Buildbot/Talos/Tests#Page_Load_Tests Talos page load tests]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2186.txt Internet Cache Protocol (ICP)]&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2187.txt Application of Internet Cache Protocol (ICP)]&lt;br /&gt;
* [http://tools.ietf.org/html/rfc2616 HTTP/1.1]&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-httpbis-http2-13 HTTP/2]&lt;br /&gt;
* [http://tools.ietf.org/id/draft-agl-tls-nextprotoneg-00.txt Transport Layer Security (TLS) Next Protocol Negotiation Extension (NPN)]&lt;br /&gt;
* [http://www.chromium.org/spdy/spdy-proxy Chromium SPDY Proxy]&lt;br /&gt;
* [http://tatsuhiro-t.github.io/spdylay/ Spdylay - SPDY C Library]&lt;br /&gt;
* [https://github.com/igrigorik/node-spdyproxy Node.js SPDY Forwarding Proxy]&lt;br /&gt;
* [http://nginx.org/ NGINX - Reverse Proxy]&lt;br /&gt;
* [http://developer.att.com/application-resource-optimizer AT&amp;amp;T ARO]&lt;br /&gt;
* [http://www.igvita.com/posa/high-performance-networking-in-google-chrome/ High Performance Networking in Google Chrome]&lt;br /&gt;
* [http://commondatastorage.googleapis.com/io-2013/presentations/263%20-%20io-radio-performance.pdf Mobile Performance from Radio Up] ([https://developers.google.com/events/io/sessions/327864330 video])&lt;br /&gt;
* [http://www.igvita.com/2012/06/25/spdy-and-secure-proxy-support-in-google-chrome/ Secure SPDY Proxy Support in Google Chrome]&lt;br /&gt;
* [http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/ Amazon Silk Browser]&lt;br /&gt;
* [http://chimera.labs.oreilly.com/books/1230000000545 High Performance Browser Networking]&lt;br /&gt;
* [https://thethemefoundry.com/blog/why-we-dont-use-a-cdn-spdy-ssl/ Experience report on CDNs and SPDY]&lt;br /&gt;
* [https://developers.google.com/speed/docs/best-practices/caching Caching best practices]&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Mobile/Janus&amp;diff=995067</id>
		<title>Mobile/Janus</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Mobile/Janus&amp;diff=995067"/>
		<updated>2014-07-07T16:57:14Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Janus is a project to find and evaluate ways to enable more efficient mobile browsing.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
The goal of Janus is to verify whether we can enhance the mobile browsing experience by achieving the following improvements in a practical way:&lt;br /&gt;
* Reduce radio time&lt;br /&gt;
* Reduce page load times&lt;br /&gt;
* Reduce bandwidth requirements&lt;br /&gt;
* &#039;&#039;&#039;Increase user privacy&#039;&#039;&#039;&lt;br /&gt;
* Increase responsiveness for slow sites&lt;br /&gt;
&lt;br /&gt;
Ways we hope to accomplish some of these things:&lt;br /&gt;
* Recompress images to be smaller without noticeable visual impact&lt;br /&gt;
* Compress text (js, html) streams (gzip, bzip2, lzma?)&lt;br /&gt;
* Caching&lt;br /&gt;
* Reduce HTTPS round trips&lt;br /&gt;
* Move safe browsing support to the proxy&lt;br /&gt;
* Link prefetching&lt;br /&gt;
&lt;br /&gt;
Other crazy stuff we could do:&lt;br /&gt;
* Man-in-the-middle HTTPS traffic only for images (so they get recompressed) with user consent&lt;br /&gt;
* Convert animated GIF to H264/WebM/whatever. gfycat.com does this now with apparently good results&lt;br /&gt;
* Pre-Shumwayize Flash content&lt;br /&gt;
* Automatic readability mode for some sites&lt;br /&gt;
* Ad blocking&lt;br /&gt;
** Only obnoxious ads?&lt;br /&gt;
** Replace with our own?&lt;br /&gt;
** Only block ones that track?&lt;br /&gt;
* Add support for adaptive streaming (MPEG-DASH) for servers that don&#039;t support it. Transcode to lower bitrates.&lt;br /&gt;
** Proxy HLS sites as MPEG-DASH&lt;br /&gt;
* Opera Mini-like pre-rendering of pages&lt;br /&gt;
&lt;br /&gt;
Taras crazy stuff:&lt;br /&gt;
* http://zsync.moria.org.uk/ content that changes a little bit, but frequently&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Currently we send if-modified-since:&lt;br /&gt;
We could add header supports-zsync: &lt;br /&gt;
&lt;br /&gt;
This would make server reply with a .zsync which the client would then use to submit range: requests.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* asset bundling/inlining for cold loads&lt;br /&gt;
** server can determine when client got nothing in cache(eg no if-modified-since), do spdy-push from a preset profile&lt;br /&gt;
** server could spdy-push partial files(eg only css that gets used) + zsync of rest of contents so client can request missing pieces for other pages on the website(this can hugely reduce transfer sizes)...If i remember correctly from https://bugzilla.mozilla.org/show_bug.cgi?id=834865 70%+ of css is leftover cruft...Note this might be easier to do having sites be aware of this and bundling a library that supports having css/js broken up into multiple files &amp;amp; supports waiting on missing pieces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Transport Layer Security (TLS) ===&lt;br /&gt;
==== TLS handshake ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Time&#039;&#039;&#039; [ms]             &#039;&#039;&#039;Client&#039;&#039;&#039;       &#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
 30                       SYN  --&amp;gt;                           &lt;br /&gt;
 60                            &amp;lt;--  SYN ACK&lt;br /&gt;
 90                       ACK  --&amp;gt;&lt;br /&gt;
 120                           &amp;lt;--  Certificate&lt;br /&gt;
 150         ChangeChiperSpec  --&amp;gt; &lt;br /&gt;
 180                           &amp;lt;--  ChangeCipherSpec&lt;br /&gt;
 210                     Data  --&amp;gt;   &lt;br /&gt;
 240                           &amp;lt;--  Data&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== SPDY ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== 3G/4G ===&lt;br /&gt;
==== LTE Mobile Network ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Latency&#039;&#039;&#039; [ms]   &#039;&#039;&#039;Type&#039;&#039;&#039;            &#039;&#039;&#039;Device&#039;&#039;&#039;      &#039;&#039;&#039;RAN&#039;&#039;&#039;      &#039;&#039;&#039;Core Network&#039;&#039;&#039;             &#039;&#039;&#039;Internet&#039;&#039;&#039;&lt;br /&gt;
                                                     &#039;&#039;&#039;SGW&#039;&#039;&#039;     &#039;&#039;&#039;MME&#039;&#039;&#039;     &#039;&#039;&#039;PGW&#039;&#039;&#039;           &lt;br /&gt;
 &amp;lt;100           control plane          &amp;lt;--&amp;gt; &lt;br /&gt;
 &amp;lt;5             user plane             &amp;lt;--&amp;gt;&lt;br /&gt;
 30-100         backbone                        &amp;lt;--&amp;gt; &lt;br /&gt;
 variable       routing                                                  &amp;lt;--&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Control Plane Latency ====&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
                &#039;&#039;&#039;GPRS    EDGE    HSPA   HSPA+   LTE    LTE-Advanced&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Latency&#039;&#039;&#039; [ms]   &amp;lt;1000   &amp;lt;1000   &amp;lt;500   &amp;lt;200    &amp;lt;100   &amp;lt;50&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Radio Access Network (RAN) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Radio Resource Controller (RRC) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Packet Gateway (PGW) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Serving Gateway (SGW) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Mobility Management Entity (MME) ====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Image Compression ===&lt;br /&gt;
&lt;br /&gt;
==== Image Formats ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format !! Lossy !! Transparency support !! Supported by Firefox&lt;br /&gt;
|-&lt;br /&gt;
| JPEG || Yes || No || Yes&lt;br /&gt;
|-&lt;br /&gt;
| JPEG XR || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| JPEG 2000 || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| PNG || No  || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| JNG || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| WebP || Yes || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| BMP || No || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sample ====&lt;br /&gt;
&lt;br /&gt;
The sample used for the tests below was made using images from 20 different webpages from the Alexa&#039;s top 200 most visited websites list.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format !! Number of images !! Total size (MB)&lt;br /&gt;
|-&lt;br /&gt;
| JPEG || 325 || 12&lt;br /&gt;
|-&lt;br /&gt;
| PNG || 817 || 14&lt;br /&gt;
|-&lt;br /&gt;
| GIF || 325 || 1.8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PNG Compression ====&lt;br /&gt;
&lt;br /&gt;
The PNG sample size is 12383KB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Compression Method !! New sample size (kB) !! Average compression (%) !! Total time (s)&lt;br /&gt;
|-&lt;br /&gt;
| optipng -o 1 || 11560 || 7 || 70&lt;br /&gt;
|-&lt;br /&gt;
| optipng -o 5 || 10940 || 12 || 481&lt;br /&gt;
|-&lt;br /&gt;
| [http://pngquant.org/ pngquant] || 5169 || 59 || 69&lt;br /&gt;
|-&lt;br /&gt;
| pngcrush || 10997 || 12 || 90&lt;br /&gt;
|-&lt;br /&gt;
| pngcrush + optipng -o 5 || 10280 || 17 || 541&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 90) || 4741 || 62 || 47&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 100) || 8321 || 33 || 48&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== JPEG Compression ====&lt;br /&gt;
&lt;br /&gt;
The sample size is 10846kB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Compression Method !! New sample size (kB) !! Average compression (%) !! Total time (s)&lt;br /&gt;
|-&lt;br /&gt;
| mozjpeg || 9663 || 11 || 53&lt;br /&gt;
|-&lt;br /&gt;
| mozjpeg (quality = 90) || 8571 || 21 || -&lt;br /&gt;
|-&lt;br /&gt;
| jpegoptim || 10497 || 4 || 39&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 100) || 17551 || -61 || 42&lt;br /&gt;
|-&lt;br /&gt;
| WebP (quality = 90) || 8316 || 24 || 40&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GIF Compression ====&lt;br /&gt;
&lt;br /&gt;
The sample size is 846kB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Compression Method !! New sample size (kB) !! Average compression (%) !! Total time (s)&lt;br /&gt;
|-&lt;br /&gt;
| gifsicle || 805 || 5 || 16&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Animated GIF Compression ====&lt;br /&gt;
&lt;br /&gt;
It is possible to convert animated GIFs to WebM videos (as [http://gfycat.com/ gfycat.com] does), this can be done with a straightforward ffmpeg command. The processing time can be high but the size reduction is huge!&lt;br /&gt;
&lt;br /&gt;
Some stats from a small set of 10 animated GIFs:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Original sample size (kB) !! New sample size (kB) !! Average compression (%) !! Total time (s) !! Median time (s)&lt;br /&gt;
|-&lt;br /&gt;
| 25162 || 1177 || 95 || 25 || 2.46&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Image size !! Time (s)&lt;br /&gt;
|-&lt;br /&gt;
| 531K ||  0.301&lt;br /&gt;
|-&lt;br /&gt;
| 844K ||  0.719&lt;br /&gt;
|-&lt;br /&gt;
| 992K ||  0.847&lt;br /&gt;
|-&lt;br /&gt;
| 1.1M ||  2.726&lt;br /&gt;
|-&lt;br /&gt;
| 1.3M ||  2.199&lt;br /&gt;
|-&lt;br /&gt;
| 1.5M ||  2.831&lt;br /&gt;
|-&lt;br /&gt;
| 1.7M ||  1.497&lt;br /&gt;
|-&lt;br /&gt;
| 3.5M ||  5.223&lt;br /&gt;
|-&lt;br /&gt;
| 4.5M ||  2.777&lt;br /&gt;
|-&lt;br /&gt;
| 8.0M ||  6.604&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Common Misconceptions ===&lt;br /&gt;
==== Losing radio link means losing TCP connection ====&lt;br /&gt;
The PGW terminates the TCP/UDP connections, application level connectivity is not tied to the physical radio link.&lt;br /&gt;
&lt;br /&gt;
==== A device session is tied to an IP ====&lt;br /&gt;
The PGW provides NAT services, a device can be mapped to multiple IP/port combinations or multiple devices can share the same IP.&lt;br /&gt;
&lt;br /&gt;
==== Bandwidth is the decisive factor for page load speed ====&lt;br /&gt;
Bandwidth gives the upper bound on transmission speed under optimal conditions. In realistic environments, considering the speed of light and the shortcomings of the transmission protocol, &#039;&#039;latency&#039;&#039; is the limiting factor for the maximum throughput.&lt;br /&gt;
&lt;br /&gt;
== Tracking Bugs ==&lt;br /&gt;
The Node.js based proxy implementation is maintained on GitHub: [https://github.com/mozilla/node-gonzales node-gonzales]. Please use it to report issues and make pull requests.&lt;br /&gt;
&lt;br /&gt;
Required &#039;&#039;&#039;features&#039;&#039;&#039; that Janus depends on are tracked here&lt;br /&gt;
* {{bug|378637}} - Add support for connecting to HTTP proxy over HTTPS&lt;br /&gt;
* {{bug|366559}} - Firefox/Gecko should support LZMA as an HTTP transfer-encoding method&lt;br /&gt;
* {{bug|1010068}} - Disable OCSP on Firefox for Android&lt;br /&gt;
&lt;br /&gt;
Known &#039;&#039;&#039;issues&#039;&#039;&#039; affecting Janus are tracked here&lt;br /&gt;
* {{bug|1014589}} - Fennec crashes on page load when connected with SPDY proxy&lt;br /&gt;
&lt;br /&gt;
== System Overview ==&lt;br /&gt;
Janus is a secure proxy server that accepts requests via the SPDY protocol and serves compressed content directly from its cache, if available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Browser &amp;lt;-SPDY-&amp;gt; Janus                                &amp;lt;-HTTP/HTTPS/SPDY-&amp;gt; Web&lt;br /&gt;
                |                                         |&lt;br /&gt;
                Proxy &amp;lt;-&amp;gt; Cache &amp;lt;-?-&amp;gt; Compressor &amp;lt;-&amp;gt; Loader&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Routing requests through a SPDY proxy does require less open TCP connections (multiplexing), decreases packet sizes (header compression) and reduces the number of packets (header caching) compared to HTTP/1. Low bandwidth and high latency connections should benefit from this.&lt;br /&gt;
&lt;br /&gt;
The current trend on the Web shows an increase in average page size, especially due to high-resolution images. Additional image compression and downsizing should decrease the bandwidth requirements and enable faster page loads. To counteract the introduced processing overhead and boost load times for slow pages, we add intermediate caching for the compressed results.&lt;br /&gt;
&lt;br /&gt;
== Experimental Setups ==&lt;br /&gt;
To evaluate the system, we test each component in isolation first.&lt;br /&gt;
We identify third-party systems suitable for integration into the prototype and evaluate them. All qualified systems will be considered for integration or as the base of our final implementation.&lt;br /&gt;
&lt;br /&gt;
=== SPDY Proxy ===&lt;br /&gt;
Currently, only Google Chrome supports secure SPDY proxies, but it requires valid certificates, which makes it unsuitable for testing. We bypass the missing support by using &#039;&#039;&#039;shrpx&#039;&#039;&#039; in client mode as a &#039;&#039;forward proxy&#039;&#039;, and that way simulate SPDY support on any client.&lt;br /&gt;
&lt;br /&gt;
Dependencies:&lt;br /&gt;
* Firefox/Fennec&lt;br /&gt;
* Spdylay (http://tatsuhiro-t.github.io/spdylay)&lt;br /&gt;
* Squid (http://www.squid-cache.org)&lt;br /&gt;
* [alternative] Node SPDY proxy (https://github.com/igrigorik/node-spdyproxy)&lt;br /&gt;
&lt;br /&gt;
Here are some experimental setups.&lt;br /&gt;
&lt;br /&gt;
==== P1 ====&lt;br /&gt;
In this setup, we connect a desktop browser via HTTP with a local forwarding proxy, which establishes a SPDY connection with the remote secure SPDY proxy. The secure SDPY proxy connects to a local web proxy to fetch the documents. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Desktop Client               &amp;lt;-SPDY-&amp;gt; SPDY Proxy &amp;lt;-HTTP-&amp;gt; Web Proxy &amp;lt;-HTTP-&amp;gt; Web&lt;br /&gt;
                              |      |            |      |           |&lt;br /&gt;
 Firefox &amp;lt;-HTTP-&amp;gt; [shrpx -k -p]      --[shrpx -s]--      ----Squid----&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== P2 ====&lt;br /&gt;
This setup is similar to P1, but running on a mobile client. This requires either direct secure SPDY proxy support on the mobile browser, or the usage of a local forwarding proxy running on the mobile device.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
 Mobile Client               &amp;lt;-SPDY-&amp;gt; SPDY Proxy &amp;lt;-HTTP-&amp;gt; Web Proxy &amp;lt;-HTTP-&amp;gt; Web&lt;br /&gt;
                             |      |            |      |           |&lt;br /&gt;
 Fennec &amp;lt;-HTTP-&amp;gt; [shrpx -k -p]      --[shrpx -s]--      ----Squid----&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compression ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Performance Analysis ==&lt;br /&gt;
Let&#039;s collect some ideas here how to profile our prototypes.&lt;br /&gt;
&lt;br /&gt;
Could be useful:&lt;br /&gt;
* [https://wiki.mozilla.org/Buildbot/Talos/Tests#Page_Load_Tests Talos page load tests]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2186.txt Internet Cache Protocol (ICP)]&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2187.txt Application of Internet Cache Protocol (ICP)]&lt;br /&gt;
* [http://tools.ietf.org/html/rfc2616 HTTP/1.1]&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-httpbis-http2-13 HTTP/2]&lt;br /&gt;
* [http://tools.ietf.org/id/draft-agl-tls-nextprotoneg-00.txt Transport Layer Security (TLS) Next Protocol Negotiation Extension (NPN)]&lt;br /&gt;
* [http://www.chromium.org/spdy/spdy-proxy Chromium SPDY Proxy]&lt;br /&gt;
* [http://tatsuhiro-t.github.io/spdylay/ Spdylay - SPDY C Library]&lt;br /&gt;
* [https://github.com/igrigorik/node-spdyproxy Node.js SPDY Forwarding Proxy]&lt;br /&gt;
* [http://nginx.org/ NGINX - Reverse Proxy]&lt;br /&gt;
* [http://developer.att.com/application-resource-optimizer AT&amp;amp;T ARO]&lt;br /&gt;
* [http://www.igvita.com/posa/high-performance-networking-in-google-chrome/ High Performance Networking in Google Chrome]&lt;br /&gt;
* [http://commondatastorage.googleapis.com/io-2013/presentations/263%20-%20io-radio-performance.pdf Mobile Performance from Radio Up] ([https://developers.google.com/events/io/sessions/327864330 video])&lt;br /&gt;
* [http://www.igvita.com/2012/06/25/spdy-and-secure-proxy-support-in-google-chrome/ Secure SPDY Proxy Support in Google Chrome]&lt;br /&gt;
* [http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/ Amazon Silk Browser]&lt;br /&gt;
* [http://chimera.labs.oreilly.com/books/1230000000545 High Performance Browser Networking]&lt;br /&gt;
* [https://thethemefoundry.com/blog/why-we-dont-use-a-cdn-spdy-ssl/ Experience report on CDNs and SPDY]&lt;br /&gt;
* [https://developers.google.com/speed/docs/best-practices/caching Caching best practices]&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature&amp;diff=954260</id>
		<title>Performance/Avoid SQLite In Your Next Firefox Feature</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature&amp;diff=954260"/>
		<updated>2014-03-20T22:18:43Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* I/O Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Many Firefox developers see SQLite as a default choice for storing any non-trivial amount of data, this wiki explains why that view is incorrect.&lt;br /&gt;
&lt;br /&gt;
SQLite may seem like a very appealing option when first designing a feature. It offers the familiar and powerful SQL language, our codebase has nice C++ and JavaScript APIs for it, and it&#039;s already used in many places in the codebase. However, when choosing storage formats, we have to keep in mind that SQLite is a powerful and reliable database and that it comes with a lot of &#039;&#039;&#039;hidden complexity&#039;&#039;&#039;. It&#039;s very tempting to take the abstractions it offers at face value and to ignore the complexity happening under the hood. As a result, we have repeatedly seen SQLite become a source of performance problems. This isn&#039;t an indictment of SQLite itself -- any other relational embedded DB would pose the same challenges.&lt;br /&gt;
&lt;br /&gt;
SQLite DBs are simply too complex to be used for relatively simple data storage needs. The list below outlines some of the ways SQLite can backfire on developers.&lt;br /&gt;
&lt;br /&gt;
== SQLite Pitfalls ==&lt;br /&gt;
&lt;br /&gt;
=== Storage Footprint ===&lt;br /&gt;
&lt;br /&gt;
* Features that regularly add data to the DB (e.g. visited URIs), but have no expiration policy for the data, can easily cause the DB to balloon into tens or hundreds of MBs. This is particularly undesirable on mobile devices&lt;br /&gt;
* WAL journals have been known to grow very large, e.g. {{bug|609122}}, {{bug|608422}}&lt;br /&gt;
* Every index contains a complete copy of the indexed data. Creating indexes on lengthy text fields will cause very large indexes to be stored on disk &lt;br /&gt;
* Using the default microsecond precision for timestamps causes unnecessary bloat&lt;br /&gt;
&lt;br /&gt;
=== I/O Patterns ===&lt;br /&gt;
&lt;br /&gt;
* Your database file can suffer from logical/internal fragmentation due to common SQL patterns &lt;br /&gt;
** Eg appending data to columns with indexes causes interleaved index and table data. This means both table and index scans are non-sequential until a VACUUM is performed. &lt;br /&gt;
** Appending data to multiple tables interleaves tables too.&lt;br /&gt;
** Deleting data does not shrink the database, just marks pages as unused.&lt;br /&gt;
* Physical/external fragmentation can also happen due to SQLite using inappropriate defaults&lt;br /&gt;
** SQLite does not preallocate files by default. Appending data to an SQLite in multiple sessions often means the OS has to start a new data block that&#039;s not adjacent to the previous one. &lt;br /&gt;
** By default sqlite will grow/shrink the database file by |page_size|. This behavior causes new data blocks to be allocated too. This is especially problematic on OSX, Linux XFS.&lt;br /&gt;
** SQLite [https://www.sqlite.org/c3ref/c_fcntl_chunk_size.html#sqlitefcntlchunksize CHUNK_SIZE] feature is a way to minimize this problem&lt;br /&gt;
Factory-default SQLite [http://www.sqlite.org/pragma.html#pragma_page_size page size] is 1024 bytes. When the Mozilla default page size was changed to 32KB in {{bug|416330}}, there was a [http://taras.glek.net/blog/2013/06/28/new-performance-people/ 4x reduction in SQLite IO waits] according to Telemetry. This is likely due to a reduction in syscalls and OS readahead.&lt;br /&gt;
* Performance can [http://sqlite.1065341.n5.nabble.com/Coping-with-database-growth-fragmentation-td44781.html#a44782 significantly degenerate over time]; scheduling periodic [https://sqlite.org/lang_vacuum.html rebuilds of the DB] is necessary. &lt;br /&gt;
** Note that this &amp;quot;vacuuming&amp;quot; only deals with internal fragmentation, not the external [filesystem] fragmentation&lt;br /&gt;
* SQLite uses fsync&#039;s to guarantee transaction durability and enable recovery from crashes. fsyncs can be very expensive, and happen relatively frequently in the default rollback-journal mode. This performance/reliability trade-off might not be necessary for simple storage needs.&lt;br /&gt;
* JSON files or log files will show better I/O patterns almost every time, especially if they&#039;re compressed and read/written in entirety each time&lt;br /&gt;
&lt;br /&gt;
=== Memory Usage ===&lt;br /&gt;
&lt;br /&gt;
* By default, our SQLite wrapper uses a [http://hg.mozilla.org/mozilla-central/file/444714c3820a/storage/src/mozStorageConnection.cpp#l48 max of 2MB memory cache per connection].&lt;br /&gt;
** This cache size may be too large for Fennec and B2G, especially if there are multiple connections. The cache size should be adjusted with [[#Important Pragmas|PRAGMAs]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Usage ===&lt;br /&gt;
&lt;br /&gt;
* Users have found certain Firefox features using 15% of their CPU time because SQL statements were constantly being executed in the background&lt;br /&gt;
* Lock contention can occur when using the DB from multiple threads&lt;br /&gt;
** e.g. VACCUM-ing the DB on one thread while executing SQL queries on another&lt;br /&gt;
&lt;br /&gt;
=== Battery Life ===&lt;br /&gt;
&lt;br /&gt;
* Same as CPU, important on mobile&lt;br /&gt;
&lt;br /&gt;
=== Unintended Main-Thread I/O ===&lt;br /&gt;
&lt;br /&gt;
Main-thread SQL is a known evil, and luckily there are only a few major sources of it left in the codebase, but the [http://telemetry.mozilla.org/slowsql/ Slow SQL dashboard] shows that developers are still getting bitten by main thread I/O from unexpected sources:&lt;br /&gt;
&lt;br /&gt;
* PRAGMA statements to set the cache size are done on the main thread, but if this is the first transaction of the session, it can trigger SQLite crash recovery operations. This is particularly bad if using the default WAL journal size. Also note that &amp;quot;crashes&amp;quot; are particularly common on mobile where we never have clean exits.&lt;br /&gt;
* Some addons access Firefox DBs directly using main thread SQL&lt;br /&gt;
&lt;br /&gt;
=== Contending for Access to Storage with the Main Thread ===&lt;br /&gt;
&lt;br /&gt;
Bad SQLite performance off the main thread also degrades Firefox responsiveness because it can contend with the main thread for access to storage. Sadly our code still does main-thread I/O, and additionally, there will always be main-thread IO from add-ons and swapping.&lt;br /&gt;
&lt;br /&gt;
* Even seemingly simple SQL queries can take multiple seconds to execute&lt;br /&gt;
** e.g. in {{bug|966469}} a user reports the following statement taking 22 seconds to execute: &amp;lt;code&amp;gt;DELETE FROM moz_pages WHERE id NOT IN (SELECT DISTINCT(pid) FROM moz_subresources);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UX Impact of Slow Queries ===&lt;br /&gt;
&lt;br /&gt;
Slow DB operations hurt UX. For example, you might have noticed that the AwesomeBar sometimes takes a very long time to fetch any auto-complete suggestions. &lt;br /&gt;
&lt;br /&gt;
* The schemas have to be designed carefully and the DB has to be maintained periodically&lt;br /&gt;
* Fragmentation causes extra seeks, and the problem is made worse by magnetic hard disks and cheap or old SSDs. Vacuuming DBs helps, but vacuums are resource-intensive and scheduling them can be tricky. See the [[#More Tips|Tips]] section&lt;br /&gt;
&lt;br /&gt;
== How to Store Your Data ==&lt;br /&gt;
&lt;br /&gt;
* If you need to store a small amount of data (less than 1MB), you should use JSON files, and do all your I/O off the main thread. Simple solutions with linear worst-case performance are ideal.&lt;br /&gt;
** If you&#039;re working with larger amounts of data (roughly on the order of 1MB), you should compress the JSON data with Snappy before writing it to disk&lt;br /&gt;
** You can use OS.File&#039;s [https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread#OS.File.writeAtomic%28%29 writeAtomic()] method. More information on writeAtomic [http://dutherenverseauborddelatable.wordpress.com/2014/02/05/is-my-data-on-the-disk-safety-properties-of-os-file-writeatomic/ in this blog post]&lt;br /&gt;
** If your workload involves a lot of strings, don&#039;t use SQLite. Store your data in external files.&lt;br /&gt;
* For larger datasets or when SQL is absolutely necessary, use SQLite.&lt;br /&gt;
** Make sure you understand [https://sqlite.org/docs.html how SQLite works], carefully design your schemas and then profile your implementation.&lt;br /&gt;
** IndexedDB is implemented on top of SQLite and has additional issues&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;We&#039;re currently working on an intermediate solution based on log-storage which will reduce the amount of data written for small modifications to data already on disk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== How to Best Use SQLite If You Really Need To ==&lt;br /&gt;
&lt;br /&gt;
=== Important Pragmas ===&lt;br /&gt;
See [http://www.sqlite.org/pragma.html the list of SQLite pragmas], the defaults are probably not OK. We already over-ride some defaults in the [http://mxr.mozilla.org/mozilla-central/source/db/sqlite3/src/moz.build moz.build file] and [http://mxr.mozilla.org/mozilla-central/source/storage/src/mozStorageConnection.cpp#622 mozStorageConnection.cpp].&lt;br /&gt;
&lt;br /&gt;
* Use a [https://www.sqlite.org/wal.html write-ahead log] for fewer fsyncs&lt;br /&gt;
** &amp;lt;code&amp;gt;PRAGMA journal_mode = WAL;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Set the DB cache size based on the device specs, and consider adjusting it dynamically based on memory pressure on mobile devices&lt;br /&gt;
** &amp;lt;code&amp;gt;PRAGMA cache_size = X;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For large DBs prone to fragmentation, pre-allocate a large empty DB initially by increasing the DB&#039;s growth increment&lt;br /&gt;
** This can be done by calling Connection::SetGrowthIncrement() which changes the value of SQLite&#039;s &amp;lt;code&amp;gt;SQLITE_FCNTL_CHUNK_SIZE&amp;lt;/code&amp;gt;. See {{bug|581606}} for reference.&lt;br /&gt;
&lt;br /&gt;
=== More Tips ===&lt;br /&gt;
&lt;br /&gt;
* It should go without saying that you should &#039;&#039;&#039;never execute SQL on the main thread&#039;&#039;&#039;&lt;br /&gt;
** Use the [https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm SQLite.jsm wrapper] for DB operations from JavaScript, it&#039;s fully asynchronous and off-main-thread&lt;br /&gt;
** For native code, use the [https://mxr.mozilla.org/mozilla-central/source/storage/public/mozIStorageAsyncConnection.idl async methods]&lt;br /&gt;
* Model how large your DB will grow on desktop/mobile. Report the DB size &amp;amp; memory use to [https://developer.mozilla.org/en-US/docs/Performance/Adding_a_new_Telemetry_probe Telemetry] to confirm your estimates were accurate. &#039;&#039;&#039;Implement an expiration policy!&#039;&#039;&#039;&lt;br /&gt;
* Profile your implementation and measure the number of SQL operations performed over the course of a typical session if it’s an “always-on” feature and you suspect it might cause performance issues&lt;br /&gt;
* Don’t index on text fields, index on hashes of text fields. Indexes can become very large.&lt;br /&gt;
* Don&#039;t use the default precision for timestamps (microseconds). Desktop apps are unlikely to ever require this level of precision&lt;br /&gt;
* Maintain your DB with [https://sqlite.org/lang_vacuum.html VACUUMs] during Firefox version upgrades or during idle times. Run [http://www.sqlite.org/lang_analyze.html ANALYZE] periodically if necessary&lt;br /&gt;
** You should have a vacuum plan from the get-go. &#039;&#039;&#039;This is a requirement for all new code&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature&amp;diff=954256</id>
		<title>Performance/Avoid SQLite In Your Next Firefox Feature</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature&amp;diff=954256"/>
		<updated>2014-03-20T22:12:20Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* I/O Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Many Firefox developers see SQLite as a default choice for storing any non-trivial amount of data, this wiki explains why that view is incorrect.&lt;br /&gt;
&lt;br /&gt;
SQLite may seem like a very appealing option when first designing a feature. It offers the familiar and powerful SQL language, our codebase has nice C++ and JavaScript APIs for it, and it&#039;s already used in many places in the codebase. However, when choosing storage formats, we have to keep in mind that SQLite is a powerful and reliable database and that it comes with a lot of &#039;&#039;&#039;hidden complexity&#039;&#039;&#039;. It&#039;s very tempting to take the abstractions it offers at face value and to ignore the complexity happening under the hood. As a result, we have repeatedly seen SQLite become a source of performance problems. This isn&#039;t an indictment of SQLite itself -- any other relational embedded DB would pose the same challenges.&lt;br /&gt;
&lt;br /&gt;
SQLite DBs are simply too complex to be used for relatively simple data storage needs. The list below outlines some of the ways SQLite can backfire on developers.&lt;br /&gt;
&lt;br /&gt;
== SQLite Pitfalls ==&lt;br /&gt;
&lt;br /&gt;
=== Storage Footprint ===&lt;br /&gt;
&lt;br /&gt;
* Features that regularly add data to the DB (e.g. visited URIs), but have no expiration policy for the data, can easily cause the DB to balloon into tens or hundreds of MBs. This is particularly undesirable on mobile devices&lt;br /&gt;
* WAL journals have been known to grow very large, e.g. {{bug|609122}}, {{bug|608422}}&lt;br /&gt;
* Every index contains a complete copy of the indexed data. Creating indexes on lengthy text fields will cause very large indexes to be stored on disk &lt;br /&gt;
* Using the default microsecond precision for timestamps causes unnecessary bloat&lt;br /&gt;
&lt;br /&gt;
=== I/O Patterns ===&lt;br /&gt;
&lt;br /&gt;
* Your database file can suffer from logical/internal fragmentation due to common SQL patterns &lt;br /&gt;
** Eg appending data to columns with indexes causes interleaved index and table data. This means both table and index scans are non-sequential until a VACUUM is performed. &lt;br /&gt;
** Appending data to multiple tables interleaves tables too.&lt;br /&gt;
** Deleting data does not shrink the database, just marks pages as unused.&lt;br /&gt;
* Physical/external fragmentation can also happen due to SQLite using inappropriate defaults&lt;br /&gt;
** e.g. the factory-default SQLite [http://www.sqlite.org/pragma.html#pragma_page_size page size] is 1024 bytes. When the default page size was changed to 32KB in {{bug|416330}}, there was a [http://taras.glek.net/blog/2013/06/28/new-performance-people/ 4x reduction in SQLite IO waits] according to Telemetry&lt;br /&gt;
* Performance can [http://sqlite.1065341.n5.nabble.com/Coping-with-database-growth-fragmentation-td44781.html#a44782 significantly degenerate over time]; scheduling periodic [https://sqlite.org/lang_vacuum.html rebuilds of the DB] is necessary. &lt;br /&gt;
** Note that this &amp;quot;vacuuming&amp;quot; only deals with internal fragmentation, the filesystem has its own fragmentation&lt;br /&gt;
* SQLite uses fsync&#039;s to guarantee transaction durability and enable recovery from crashes. fsyncs can be very expensive, and happen relatively frequently in the default rollback-journal mode. This performance/reliability trade-off might not be necessary for simple storage needs.&lt;br /&gt;
* JSON files or log files will show better I/O patterns almost every time, especially if they&#039;re compressed and read/written in entirety each time&lt;br /&gt;
&lt;br /&gt;
=== Memory Usage ===&lt;br /&gt;
&lt;br /&gt;
* By default, our SQLite wrapper uses a [http://hg.mozilla.org/mozilla-central/file/444714c3820a/storage/src/mozStorageConnection.cpp#l48 max of 2MB memory cache per connection].&lt;br /&gt;
** This cache size may be too large for Fennec and B2G, especially if there are multiple connections. The cache size should be adjusted with [[#Important Pragmas|PRAGMAs]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Usage ===&lt;br /&gt;
&lt;br /&gt;
* Users have found certain Firefox features using 15% of their CPU time because SQL statements were constantly being executed in the background&lt;br /&gt;
* Lock contention can occur when using the DB from multiple threads&lt;br /&gt;
** e.g. VACCUM-ing the DB on one thread while executing SQL queries on another&lt;br /&gt;
&lt;br /&gt;
=== Battery Life ===&lt;br /&gt;
&lt;br /&gt;
* Same as CPU, important on mobile&lt;br /&gt;
&lt;br /&gt;
=== Unintended Main-Thread I/O ===&lt;br /&gt;
&lt;br /&gt;
Main-thread SQL is a known evil, and luckily there are only a few major sources of it left in the codebase, but the [http://telemetry.mozilla.org/slowsql/ Slow SQL dashboard] shows that developers are still getting bitten by main thread I/O from unexpected sources:&lt;br /&gt;
&lt;br /&gt;
* PRAGMA statements to set the cache size are done on the main thread, but if this is the first transaction of the session, it can trigger SQLite crash recovery operations. This is particularly bad if using the default WAL journal size. Also note that &amp;quot;crashes&amp;quot; are particularly common on mobile where we never have clean exits.&lt;br /&gt;
* Some addons access Firefox DBs directly using main thread SQL&lt;br /&gt;
&lt;br /&gt;
=== Contending for Access to Storage with the Main Thread ===&lt;br /&gt;
&lt;br /&gt;
Bad SQLite performance off the main thread also degrades Firefox responsiveness because it can contend with the main thread for access to storage. Sadly our code still does main-thread I/O, and additionally, there will always be main-thread IO from add-ons and swapping.&lt;br /&gt;
&lt;br /&gt;
* Even seemingly simple SQL queries can take multiple seconds to execute&lt;br /&gt;
** e.g. in {{bug|966469}} a user reports the following statement taking 22 seconds to execute: &amp;lt;code&amp;gt;DELETE FROM moz_pages WHERE id NOT IN (SELECT DISTINCT(pid) FROM moz_subresources);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UX Impact of Slow Queries ===&lt;br /&gt;
&lt;br /&gt;
Slow DB operations hurt UX. For example, you might have noticed that the AwesomeBar sometimes takes a very long time to fetch any auto-complete suggestions. &lt;br /&gt;
&lt;br /&gt;
* The schemas have to be designed carefully and the DB has to be maintained periodically&lt;br /&gt;
* Fragmentation causes extra seeks, and the problem is made worse by magnetic hard disks and cheap or old SSDs. Vacuuming DBs helps, but vacuums are resource-intensive and scheduling them can be tricky. See the [[#More Tips|Tips]] section&lt;br /&gt;
&lt;br /&gt;
== How to Store Your Data ==&lt;br /&gt;
&lt;br /&gt;
* If you need to store a small amount of data (less than 1MB), you should use JSON files, and do all your I/O off the main thread. Simple solutions with linear worst-case performance are ideal.&lt;br /&gt;
** If you&#039;re working with larger amounts of data (roughly on the order of 1MB), you should compress the JSON data with Snappy before writing it to disk&lt;br /&gt;
** You can use OS.File&#039;s [https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread#OS.File.writeAtomic%28%29 writeAtomic()] method. More information on writeAtomic [http://dutherenverseauborddelatable.wordpress.com/2014/02/05/is-my-data-on-the-disk-safety-properties-of-os-file-writeatomic/ in this blog post]&lt;br /&gt;
** If your workload involves a lot of strings, don&#039;t use SQLite. Store your data in external files.&lt;br /&gt;
* For larger datasets or when SQL is absolutely necessary, use SQLite.&lt;br /&gt;
** Make sure you understand [https://sqlite.org/docs.html how SQLite works], carefully design your schemas and then profile your implementation.&lt;br /&gt;
** IndexedDB is implemented on top of SQLite and has additional issues&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;We&#039;re currently working on an intermediate solution based on log-storage which will reduce the amount of data written for small modifications to data already on disk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== How to Best Use SQLite If You Really Need To ==&lt;br /&gt;
&lt;br /&gt;
=== Important Pragmas ===&lt;br /&gt;
See [http://www.sqlite.org/pragma.html the list of SQLite pragmas], the defaults are probably not OK. We already over-ride some defaults in the [http://mxr.mozilla.org/mozilla-central/source/db/sqlite3/src/moz.build moz.build file] and [http://mxr.mozilla.org/mozilla-central/source/storage/src/mozStorageConnection.cpp#622 mozStorageConnection.cpp].&lt;br /&gt;
&lt;br /&gt;
* Use a [https://www.sqlite.org/wal.html write-ahead log] for fewer fsyncs&lt;br /&gt;
** &amp;lt;code&amp;gt;PRAGMA journal_mode = WAL;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Set the DB cache size based on the device specs, and consider adjusting it dynamically based on memory pressure on mobile devices&lt;br /&gt;
** &amp;lt;code&amp;gt;PRAGMA cache_size = X;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For large DBs prone to fragmentation, pre-allocate a large empty DB initially by increasing the DB&#039;s growth increment&lt;br /&gt;
** This can be done by calling Connection::SetGrowthIncrement() which changes the value of SQLite&#039;s &amp;lt;code&amp;gt;SQLITE_FCNTL_CHUNK_SIZE&amp;lt;/code&amp;gt;. See {{bug|581606}} for reference.&lt;br /&gt;
&lt;br /&gt;
=== More Tips ===&lt;br /&gt;
&lt;br /&gt;
* It should go without saying that you should &#039;&#039;&#039;never execute SQL on the main thread&#039;&#039;&#039;&lt;br /&gt;
** Use the [https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm SQLite.jsm wrapper] for DB operations from JavaScript, it&#039;s fully asynchronous and off-main-thread&lt;br /&gt;
** For native code, use the [https://mxr.mozilla.org/mozilla-central/source/storage/public/mozIStorageAsyncConnection.idl async methods]&lt;br /&gt;
* Model how large your DB will grow on desktop/mobile. Report the DB size &amp;amp; memory use to [https://developer.mozilla.org/en-US/docs/Performance/Adding_a_new_Telemetry_probe Telemetry] to confirm your estimates were accurate. &#039;&#039;&#039;Implement an expiration policy!&#039;&#039;&#039;&lt;br /&gt;
* Profile your implementation and measure the number of SQL operations performed over the course of a typical session if it’s an “always-on” feature and you suspect it might cause performance issues&lt;br /&gt;
* Don’t index on text fields, index on hashes of text fields. Indexes can become very large.&lt;br /&gt;
* Don&#039;t use the default precision for timestamps (microseconds). Desktop apps are unlikely to ever require this level of precision&lt;br /&gt;
* Maintain your DB with [https://sqlite.org/lang_vacuum.html VACUUMs] during Firefox version upgrades or during idle times. Run [http://www.sqlite.org/lang_analyze.html ANALYZE] periodically if necessary&lt;br /&gt;
** You should have a vacuum plan from the get-go. &#039;&#039;&#039;This is a requirement for all new code&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=735709</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=735709"/>
		<updated>2013-10-23T23:19:15Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Telemetry Backend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 30th&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Backend==&lt;br /&gt;
Migration&lt;br /&gt;
* Nov 1: Start porting dashboard generation script to hadoop&lt;br /&gt;
* Nov 7: Start running ^ script&lt;br /&gt;
* Nov 30: Turn off hadoop&lt;br /&gt;
&lt;br /&gt;
==Telemetry Dashboard==&lt;br /&gt;
Dashboard(https://github.com/mozilla/telemetry-dashboard/) Milestones:&lt;br /&gt;
*Sep 1: Add median, percentiles, 90% ready&lt;br /&gt;
*Sep 15: ^ finished&lt;br /&gt;
*Sep 15: Produce a second set of dashboards(same codebase, probably different http server) that are being fed data from AWS&lt;br /&gt;
&lt;br /&gt;
Open bugs:  https://bugzilla.mozilla.org/buglist.cgi?product=Webtools&amp;amp;component=Telemetry%20Dashboard&amp;amp;list_id=7702794&lt;br /&gt;
&lt;br /&gt;
==Misc==&lt;br /&gt;
Notes:&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=705250</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=705250"/>
		<updated>2013-09-09T21:31:02Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage [Q3]&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs [some in Q3]&lt;br /&gt;
* {{bug|899401}} - Reduce thumbnailing overhead [Q3?]&lt;br /&gt;
Dolske:&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697472</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697472"/>
		<updated>2013-08-20T21:48:29Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Telemetry Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 31st&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Backend==&lt;br /&gt;
Server(https://github.com/mreid-moz/telemetry-server/) requirements: &lt;br /&gt;
* Ability to process 10x incoming packet rates of metrics telemetry infrastructure on a single AWS instance: 2400req/s with 30K HTTP POST packets. Fall&lt;br /&gt;
* Server should be bandwidth-limited, not CPU.&lt;br /&gt;
* Server should make data available for map/reduce immediately. Fallback goal: 5min latency. In Q4 we&#039;d like to use something like heka to make dashboards use live data(0min lag).&lt;br /&gt;
* Graphite reporting: valid packet rates for each channel, stats on packet sizes, etc&lt;br /&gt;
&lt;br /&gt;
Server Milestones:&lt;br /&gt;
* &#039;&#039;&#039;Sep 2&#039;&#039;&#039;: Ability temporarily(1 hour?) point telemetry dns at AWS, forwarding telemetry to metrics cluster. Ideally we&#039;d be able to do this at bouncer level so no changes are needed to accomplish forwarding&lt;br /&gt;
* &#039;&#039;&#039;Sep 16&#039;&#039;&#039;: ^ should be feeding both servers (metrics and AWS) until cutover date.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Dashboard==&lt;br /&gt;
Dashboard(https://github.com/mozilla/telemetry-dashboard/) Milestones:&lt;br /&gt;
*Sep 1: Add median, percentiles, 90% ready&lt;br /&gt;
*Sep 15: ^ finished&lt;br /&gt;
*Sep 15: Produce a second set of dashboards(same codebase, probably different http server) that are being fed data from AWS&lt;br /&gt;
&lt;br /&gt;
Open bugs:  https://bugzilla.mozilla.org/buglist.cgi?product=Webtools&amp;amp;component=Telemetry%20Dashboard&amp;amp;list_id=7702794&lt;br /&gt;
&lt;br /&gt;
==Misc==&lt;br /&gt;
Notes:&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697466</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697466"/>
		<updated>2013-08-20T21:43:21Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 31st&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Backend==&lt;br /&gt;
Server(https://github.com/mreid-moz/telemetry-server/) requirements: &lt;br /&gt;
* Ability to process 10x incoming packet rates of metrics telemetry infrastructure on a single AWS instance: 2400req/s with 30K HTTP POST packets. Fall&lt;br /&gt;
* Server should be bandwidth-limited, not CPU.&lt;br /&gt;
* Server should make data available for map/reduce immediately. Fallback goal: 5min latency. In Q4 we&#039;d like to use something like heka to make dashboards use live data(0min lag).&lt;br /&gt;
* Graphite reporting: valid packet rates for each channel, stats on packet sizes, etc&lt;br /&gt;
&lt;br /&gt;
Server Milestones:&lt;br /&gt;
* &#039;&#039;&#039;Sep 2&#039;&#039;&#039;: Ability temporarily(1 hour?) point telemetry dns at AWS, forwarding telemetry to metrics cluster. Ideally we&#039;d be able to do this at bouncer level so no changes are needed to accomplish forwarding&lt;br /&gt;
* &#039;&#039;&#039;Sep 16&#039;&#039;&#039;: ^ should be feeding both servers (metrics and AWS) until cutover date.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Dashboard==&lt;br /&gt;
Dashboard(https://github.com/mozilla/telemetry-dashboard/) Milestones:&lt;br /&gt;
*Sep 1: Add median, percentiles, 90% ready&lt;br /&gt;
*Sep 15: ^ finished&lt;br /&gt;
&lt;br /&gt;
Open bugs:  https://bugzilla.mozilla.org/buglist.cgi?product=Webtools&amp;amp;component=Telemetry%20Dashboard&amp;amp;list_id=7702794&lt;br /&gt;
&lt;br /&gt;
==Misc==&lt;br /&gt;
Notes:&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697454</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697454"/>
		<updated>2013-08-20T21:39:10Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 31st&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Backend==&lt;br /&gt;
Server(https://github.com/mreid-moz/telemetry-server/) requirements: &lt;br /&gt;
* Ability to process 10x incoming packet rates of metrics telemetry infrastructure on a single AWS instance: 2400req/s with 30K HTTP POST packets. Fall&lt;br /&gt;
* Server should be bandwidth-limited, not CPU.&lt;br /&gt;
* Server should make data available for map/reduce immediately. Fallback goal: 5min latency. In Q4 we&#039;d like to use something like heka to make dashboards use live data(0min lag).&lt;br /&gt;
&lt;br /&gt;
Server Milestones:&lt;br /&gt;
* &#039;&#039;&#039;Sep 2&#039;&#039;&#039;: Ability temporarily(1 hour?) point telemetry dns at AWS, forwarding telemetry to metrics cluster. Ideally we&#039;d be able to do this at bouncer level so no changes are needed to accomplish forwarding&lt;br /&gt;
* &#039;&#039;&#039;Sep 16&#039;&#039;&#039;: ^ should be feeding both servers (metrics and AWS) until cutover date.&lt;br /&gt;
&lt;br /&gt;
==Telemetry Dashboard==&lt;br /&gt;
Dashboard(https://github.com/mozilla/telemetry-dashboard/) Milestones&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697451</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697451"/>
		<updated>2013-08-20T21:34:17Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 31st&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
Server requirements: &lt;br /&gt;
* Ability to process 10x incoming packet rates of metrics telemetry infrastructure on a single AWS instance: 2400req/s with 30K HTTP POST packets. Fall&lt;br /&gt;
* Server should be bandwidth-limited, not CPU.&lt;br /&gt;
* Server should make data available for map/reduce immediately. Fallback goal: 5min latency. In Q4 we&#039;d like to use something like heka to make dashboards use live data(0min lag).&lt;br /&gt;
&lt;br /&gt;
Server Milestones:&lt;br /&gt;
* &#039;&#039;&#039;Sep 2&#039;&#039;&#039;: Ability temporarily(1 hour?) point telemetry dns at AWS, forwarding telemetry to metrics cluster. Ideally we&#039;d be able to do this at bouncer level so no changes are needed to accomplish forwarding&lt;br /&gt;
* &#039;&#039;&#039;Sep 16&#039;&#039;&#039;: ^ should be feeding both servers (metrics and AWS) until cutover date.&lt;br /&gt;
&lt;br /&gt;
Dashboard Milestones&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697426</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697426"/>
		<updated>2013-08-20T20:43:26Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 31st&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
Server requirements: &lt;br /&gt;
* Ability to process 10x incoming packet rates of metrics telemetry infrastructure on a single AWS instance: 2400req/s with 30K HTTP POST packets. Fall&lt;br /&gt;
* Server should be bandwidth-limited, not CPU.&lt;br /&gt;
* Server should make data available for map/reduce immediately. Fallback goal: 5min latency&lt;br /&gt;
&lt;br /&gt;
Server Milestones:&lt;br /&gt;
* &#039;&#039;&#039;Sep 2&#039;&#039;&#039;: Ability temporarily(1 hour?) point telemetry dns at AWS, forwarding telemetry to metrics cluster. Ideally we&#039;d be able to do this at bouncer level so no changes are needed to accomplish forwarding&lt;br /&gt;
* &#039;&#039;&#039;Sep 16&#039;&#039;&#039;: ^ should be feeding both servers (metrics and AWS) until cutover date.&lt;br /&gt;
&lt;br /&gt;
Dashboard Milestones&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697421</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697421"/>
		<updated>2013-08-20T20:40:35Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by &#039;&#039;&#039;Sep 31st&#039;&#039;&#039; able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating. Metrics should be able to retire telemetry portion of mango cluster in October.&lt;br /&gt;
&lt;br /&gt;
Server requirements: &lt;br /&gt;
* Ability to process 10x incoming packet rates of metrics telemetry infrastructure on a single AWS instance: 2400req/s with 30K HTTP POST packets. Fall&lt;br /&gt;
* Server should be bandwidth-limited, not CPU.&lt;br /&gt;
* Server should make data available for map/reduce immediately. Fallback goal: 5min latency&lt;br /&gt;
&lt;br /&gt;
Server Milestones:&lt;br /&gt;
* &#039;&#039;&#039;Sep 2&#039;&#039;&#039;: Ability temporarily(1 hour?) point telemetry dns at AWS, forwarding telemetry to metrics cluster. Ideally we&#039;d be able to do this at bouncer level so no changes are needed to accomplish forwarding&lt;br /&gt;
&lt;br /&gt;
Dashboard Milestones&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697415</id>
		<title>Telemetry/Reboot</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Telemetry/Reboot&amp;diff=697415"/>
		<updated>2013-08-20T20:30:43Z</updated>

		<summary type="html">&lt;p&gt;Tglek: Created page with &amp;quot;Goal: Fast, Robust server &amp;amp; frontend operational by Sep 31st able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updatin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Goal: Fast, Robust server &amp;amp; frontend operational by Sep 31st able to accept and graph telemetry data. This means that as of Oct 1 http://metrics.mozilla.com/ will stop updating.&lt;br /&gt;
* Server&lt;br /&gt;
**&lt;br /&gt;
* Original etherpad https://etherpad.mozilla.org/telemetry-reboot&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=690445</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=690445"/>
		<updated>2013-08-06T12:49:12Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage [Q3]&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs [some in Q3]&lt;br /&gt;
* {{bug|899401}} - Reduce thumbnailing overhead [Q3?]&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms - Q3&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager - Early Q3&lt;br /&gt;
* {{bug|838577}} - Async session-store - Q3(looks like Q4 due to new &#039;e10s&#039; design)&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=687603</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=687603"/>
		<updated>2013-07-31T00:44:27Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage [Q3]&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs [some in Q3]&lt;br /&gt;
* {{bug|899401}} - Reduce thumbnailing overhead [Q3?]&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms - Q3&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager - Early Q3&lt;br /&gt;
* {{bug|838577}} - Async session-store - Q3&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2013-Q3-Goals&amp;diff=684497</id>
		<title>Platform/2013-Q3-Goals</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2013-Q3-Goals&amp;diff=684497"/>
		<updated>2013-07-24T20:08:42Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Perf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Platform ===&lt;br /&gt;
==== [[Platform/2013-Goals|2013 General Goals]] ====&lt;br /&gt;
# Games/Media/Social/Location&lt;br /&gt;
# Performance&lt;br /&gt;
# Development velocity/productivity&lt;br /&gt;
# Firefox OS&lt;br /&gt;
# Firefox Desktop&lt;br /&gt;
# Firefox Android&lt;br /&gt;
# Overall Software Quality&lt;br /&gt;
&lt;br /&gt;
=== GFX ===&lt;br /&gt;
&lt;br /&gt;
==== Goals ====&lt;br /&gt;
&lt;br /&gt;
* GPU/shader pipeline&lt;br /&gt;
** {{ok|{{nbug|687187}}, {{nbug|827229}} - SkiaGL canvas support on Android. [2,6]}} (Trains 24, 25)&lt;br /&gt;
** {{ok|{{nbug|883445}} - B2G canvas rendering using SkiaGL}}&lt;br /&gt;
** {{ok|Implement CSS Filters}}&lt;br /&gt;
* OMT* Goals&lt;br /&gt;
** {{ok|Complete Off-Main Thread Animation feature &amp;amp; tests (Train 25)}}&lt;br /&gt;
** {{ok|{{nbug|883441}}, {{nbug|883433}} - Async pan-zoom, including sub-frames. [2,3,5]}} (Trains 25, 26)}}&lt;br /&gt;
* Moz2D (Azure)&lt;br /&gt;
** {{ok|Land Direct2D 1.1 backend (Train 25)}}&lt;br /&gt;
** {{ok|{{nbug|891660}} Land OS X CoreGraphics backend (Train 25)}}&lt;br /&gt;
** {{ok|Land Cairo backend (Train 26)}}&lt;br /&gt;
* {{ok|The GFX team will resolve all actionable security bugs within six weeks of their entering our components and receiving sec-high or sec-critical designation. [7]}} (All trains)&lt;br /&gt;
&lt;br /&gt;
==== Wishlist ====&lt;br /&gt;
* {{wishlist|WebGL performance improvements as driven by the games team. [2,6]}} (Trains 24,25)&lt;br /&gt;
* {{wishlist|More robust downloadable blocklisting solution}}&lt;br /&gt;
* {{wishlist|Fix WebGL security bugs.}} (Train 25)&lt;br /&gt;
&lt;br /&gt;
==== Investigations ====&lt;br /&gt;
* {{wishlist|{{nbug|882383}} - Improve layer heuristics}}&lt;br /&gt;
* {{wishlist|{{nbug|883448}} - Scrolled content uploading (e.g., tiling vs. buffer rotation) on mobile}}&lt;br /&gt;
* {{wishlist|{{nbug|886315}} - Make GL shader pipeline more flexible}}&lt;br /&gt;
* {{wishlist|Realistic scrolling performance tests}}&lt;br /&gt;
* {{wishlist|Tiling everywhere?}}&lt;br /&gt;
&lt;br /&gt;
==== Moz2D &amp;amp; OMTC Path Reference ====&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
! align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;width: 50%;&amp;quot; | OMT*&lt;br /&gt;
! align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;width: 50%;&amp;quot; | Moz2D (Azure)&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* OMT Image Animation&lt;br /&gt;
* OMTC Mac&lt;br /&gt;
* OMTC Metro&lt;br /&gt;
----&lt;br /&gt;
* OMTC Windows&lt;br /&gt;
* OMTC SW&lt;br /&gt;
* OMT Texture Uploads&lt;br /&gt;
* OMT Painting&lt;br /&gt;
* Remove non-OMT code&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  |&lt;br /&gt;
* Moz2D Skia&lt;br /&gt;
* Moz2D SkiaGL&lt;br /&gt;
* Moz2D CG&lt;br /&gt;
* Moz2D Cairo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
* {{ok|vertical text goal TO WRITE}}&lt;br /&gt;
* {{ok|text performance goal TO WRITE}}&lt;br /&gt;
* {{ok|CSS variables ({{bug|773296}}) landed on mozilla-central}}&lt;br /&gt;
* {{ok|CSS flexbox pagination ({{bug|811024}}) and multiline flexbox ({{bug|702508}}) landed on mozilla-central}}&lt;br /&gt;
* {{ok|working incremental layout updates in Servo, for the features Servo implements}}&lt;br /&gt;
* {{ok|have our own CSS parsing and selector matching code in Servo}}&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* {{ok|Get YouTube Media Source Extensions demo player working.}}&lt;br /&gt;
* {{ok|Use an integrated MP4 demuxer instead of depending on the platform. It is needed to reduce crashing on Windows 7, improve security on Vista and for adding H.264 support on Mac.}}&lt;br /&gt;
* {{ok|Ship Web Audio in Firefox 24.}}&lt;br /&gt;
&lt;br /&gt;
=== DOM ===&lt;br /&gt;
* {{ok|Incremental cycle collection landed and on by default (mccr8)}}&lt;br /&gt;
* {{done|Convert Navigator to new bindings (bzbarsky)}}&lt;br /&gt;
* {{ok|Convert Location to new bindings (peterv)}}&lt;br /&gt;
* {{ok|Make Window use WebIDL quickstubs (peterv)}}&lt;br /&gt;
* {{ok|Codegen cleanup for workers (khuey)}}&lt;br /&gt;
* {{ok|Make exposing QI in chrome on WebIDL things op-in (peterv)}}&lt;br /&gt;
* {{ok|Update document.register to latest spec revision ({{bug|856140}}) (blake / wchen)}}&lt;br /&gt;
* {{ok|Implement ShadowRoot event retargeting algorithm ({{bug|887541}}) (blake / wchen)}}&lt;br /&gt;
* {{ok|ShadowRoot &amp;lt;shadow&amp;gt; element ({{bug|887538}}) (blake / wchen)}}&lt;br /&gt;
* {{ok|Implement HTML imports ({{bug|877072}}) (blake / wchen)}}&lt;br /&gt;
* {{ok|Identify approach to port exsiting APIs to port to workers. Port 1-3 APIs (khuey)}}&lt;br /&gt;
* {{ok|Improve editor performance by eliminating use of tons of Range objects (smaug)}}&lt;br /&gt;
* {{ok|Codegenerator for WebIDL-only DOM events(smaug)}}&lt;br /&gt;
* {{ok|Allow child processes to share a plugin-container per plugin (johns)}}&lt;br /&gt;
* {{ok|Implement and land the One Logger to Rule Them All ({{bug|onelogger}}) (jlebar)}}&lt;br /&gt;
* {{ok|Clean up DMD reports for B2G under normal use(jlebar)}}&lt;br /&gt;
* {{ok| Convert SimplePush to webidl (nikhil)}}&lt;br /&gt;
* {{ok| Drive SimplePush web standard (nikhil)}}&lt;br /&gt;
* {{ok| Help with porting APIs to workers (nikhil)}}&lt;br /&gt;
* {{ok| Try to implement background services with system messages integration, including out of process for B2G}} (nikhil)&lt;br /&gt;
* {{ok| Finalize the patch for per-document,docshell,window event queue (olli)}}&lt;br /&gt;
&lt;br /&gt;
=== WebAPI ===&lt;br /&gt;
* {{done|land Promises on m-c ({{bug|856410}}) (baku)}}&lt;br /&gt;
* {{ok|land DataStore API on m-c ({{bug|871445}}) (baku)}}&lt;br /&gt;
* {{ok|Investigate event pages (marcosc)}}&lt;br /&gt;
* {{ok|publish [http://www.w3.org/2012/sysapps/manifest/ manifest format] (marcosc)}}&lt;br /&gt;
* {{ok|publish policy on exposing APIs to the web (overholt)}}&lt;br /&gt;
* {{ok|have draft text on Streams (annevk)}} (someone from Google is handling IO streams already)&lt;br /&gt;
* {{ok|make URL parsing (in URL Standard) idempotent (annevk)}}&lt;br /&gt;
* {{ok|update URL test suite (annevk)}}&lt;br /&gt;
* {{ok|expose Notification objects associated with an origin (annevk)}}&lt;br /&gt;
* {{ok|Review and land sync IDB in workers}} (janv)&lt;br /&gt;
* {{ok|Multiprocess FileHandle and FileSystem API}} (janv &amp;amp; co.)&lt;br /&gt;
* {{ok|Ship storage.js}} (mounir)&lt;br /&gt;
* {{ok|Implement NavigationController}} (ehsan &amp;amp; annevk)&lt;br /&gt;
* {{ok|Improve IndexedDB error messages}} (bent)&lt;br /&gt;
* {{ok|Convert IndexedDB to WebIDL bindings}} (ehsan, baku, janv)&lt;br /&gt;
* {{ok|Implement several new IndexedDB features that came out of Google meetup}} (bent)&lt;br /&gt;
* {{ok|Get ScreenOrientation API to last call}} (mounir)&lt;br /&gt;
* {{wishlist|Integrate localStorage with temporary storage}} (janv)&lt;br /&gt;
* {{wishlist|Fully support OS.File worker needs}} (bent)&lt;br /&gt;
* {{wishlist|Make IPDL work for XPCOM event loops}} (bent)&lt;br /&gt;
&lt;br /&gt;
=== JS  ===&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
* FFOS: Finish all the pieces for developer-ready a11y.(eeejay)&lt;br /&gt;
** {{ok|Minimal Gaia accessibility lockscreen/homescreen/settings.}}&lt;br /&gt;
** {{ok|Screen Reader pref in developer settings.}}&lt;br /&gt;
** {{ok|Pico library in gonk / Pico engine in gecko layer.}}&lt;br /&gt;
* {{ok|FF OS: Identify and file bugs for core GAIA apps needing accessibility work (MarcoZ)}}&lt;br /&gt;
* {{ok|Stability: to include crashes and new asserts.}} Tracking {{Bug|888531}}.(tbsaunde)&lt;br /&gt;
* {{ok|Resolve all actionable sec-moderate or higher a11y bugs within six weeks of their sec-rating.}}(tbsaunde)&lt;br /&gt;
*  {{wishlist|Fix key/priority community bugs including text work. Tracking}} {{Bug|887794}}.(surkov)&lt;br /&gt;
&lt;br /&gt;
=== Perf ===&lt;br /&gt;
* 50% startup speedup(per eideticker nytimes test) for &amp;quot;GET /&amp;quot; on Galaxy Nexus (4s atm) - bug 807322&lt;br /&gt;
* Async collection + writing of session-store - bug 83857&lt;br /&gt;
* Fsync-less prefs - bug 866238&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* {{ok|Disk Cache -  new cache API and file system layer passing tests on gum branch  (includes crash recovery and being jank-free: does not include in-memory  index or appcache integration) (honza, michal)}}&lt;br /&gt;
* {{ok|HTTP/2 Node.js Test Server (Nick, Gabor (GSoC Student))}}&lt;br /&gt;
* {{ok|B2G Per Application traffic meter support (jduell)}}&lt;br /&gt;
* {{ok|off-main-thread ODA clients raster image loading ({{bug|867755}}) and Gzipped content ({{bug|882996}})(sworkman)}}&lt;br /&gt;
* {{ok|Disable Speculative Connections for RFC 1918 connections ({{bug|853423}}) (Steve)}}&lt;br /&gt;
* {{ok|Resource Timing (http://www.w3.org/TR/resource-timing/) (Steve/Intern)}}&lt;br /&gt;
* {{ok|TLS false start (mcmanus)}}&lt;br /&gt;
* {{ok|HTTP/2 draft-04 (or subsequent as apropos) to gather interop experience and work with IETF and refinements.  (mcmanus/hurley)}}&lt;br /&gt;
* {{ok|Deploy empirical test of DNS viability as HTTP/2 hint in testing channels. (mcmanus)}}&lt;br /&gt;
* {{ok|Predictive Support - Startup, Pageload, Link hover, rel prefetch (hurley)}}&lt;br /&gt;
&lt;br /&gt;
=== Mobile  ===&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675287</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675287"/>
		<updated>2013-07-11T17:07:56Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Potential Bugzilla Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Prioritize reviews highly.&#039;&#039;&#039; Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code any more due to prioritizing reviews over coding, appoint more reviewers.&lt;br /&gt;
# &#039;&#039;&#039;Communicate.&#039;&#039;&#039; If you are an active contributor, you should respond to a review request within one working day of getting it, either with a review, a deadline by which you promise to do the review, or a polite refusal. If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# &#039;&#039;&#039;Silence is not an option.&#039;&#039;&#039; If you think saying nothing is better than admitting than you won&#039;t get to the patch for a while, that&#039;s being [https://en.wikipedia.org/wiki/Passive-aggressive_behavior passive-aggressive]. This is not a good way to build a happy coding community. Holding back bad code is a feature, not a bug - so do it, quickly and politely.&lt;br /&gt;
&lt;br /&gt;
== Patch Author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Split out mass-changes or mechanical changes&#039;&#039;&#039; into a separate patch from the substantive changes.&lt;br /&gt;
* &#039;&#039;&#039;Separate patches into conceptually-separate pieces&#039;&#039;&#039; for review purposes (even if you then later collapse them into a single changeset to push), if technically possible. Any time you&#039;re requesting review from multiple people on a single huge diff, chance are splitting it might have been a good idea.&lt;br /&gt;
* &#039;&#039;&#039;Make the summary of the bug reflect the problem&#039;&#039;&#039; rather than some particular symptom of it, so there&#039;s a clear description of what the patch is trying to fix&lt;br /&gt;
* &#039;&#039;&#039;Write good commit messages&#039;&#039;&#039; that describe what&#039;s changing between old and new code (which, if it can&#039;t be summarized in less than about 100-150 characters, should have a short summary on the first line and a longer description on later lines)&lt;br /&gt;
* &#039;&#039;&#039;Write good code comments&#039;&#039;&#039; that describe the state of the new code, and if the patch is of nontrivial size, point to the important comments in the non-first lines of the commit message&lt;br /&gt;
* &#039;&#039;&#039;Address all comments from previous reviews&#039;&#039;&#039; (either by fixing as requested, or explaining why you haven&#039;t) before requesting another review.  It&#039;s very common to just ignore (miss?) some of the review comments, which means the reviewer then needs to triple-check that all the things they pointed out got fixed.&lt;br /&gt;
* &#039;&#039;&#039;Provide an interdiff&#039;&#039;&#039; for second and subsequent patches when requesting review for them. This is so that the reviewer can verify that the changes you made match what they asked for.  (Bugzilla&#039;s interdiff is totally unsuitable for this purpose, unfortunately, because it fails so often because it doesn&#039;t have access to the original code.)&lt;br /&gt;
* &#039;&#039;&#039;If your request only relates to part of the patch, say so clearly.&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t request review from people who are labelled as being away&#039;&#039;&#039; in Bugzilla.&lt;br /&gt;
&lt;br /&gt;
== Potential Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add a &#039;&#039;&#039;Review ETA&#039;&#039;&#039; field where the requested reviewer can specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;br /&gt;
** Reminders should be set to every 24-hours by default&lt;br /&gt;
** it should be possible to get reminders for multiple people (eg for managers to track review latency of whole team)&lt;br /&gt;
** reminders should specify how long has it been since reviewer last commented in the bug&lt;br /&gt;
* Provide information about reviewers when asking for r?&lt;br /&gt;
** Add a notion of being away to Bugzilla accounts, or integrate with a Time Off tracking app.&lt;br /&gt;
** Display a user&#039;s number of outstanding reviews&lt;br /&gt;
* Add a &#039;low-priority&#039; patch flag&lt;br /&gt;
* Some integration with a formatting checker&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675286</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675286"/>
		<updated>2013-07-11T17:07:03Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Potential Bugzilla Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Prioritize reviews highly.&#039;&#039;&#039; Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code any more due to prioritizing reviews over coding, appoint more reviewers.&lt;br /&gt;
# &#039;&#039;&#039;Communicate.&#039;&#039;&#039; If you are an active contributor, you should respond to a review request within one working day of getting it, either with a review, a deadline by which you promise to do the review, or a polite refusal. If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# &#039;&#039;&#039;Silence is not an option.&#039;&#039;&#039; If you think saying nothing is better than admitting than you won&#039;t get to the patch for a while, that&#039;s being [https://en.wikipedia.org/wiki/Passive-aggressive_behavior passive-aggressive]. This is not a good way to build a happy coding community. Holding back bad code is a feature, not a bug - so do it, quickly and politely.&lt;br /&gt;
&lt;br /&gt;
== Patch Author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Split out mass-changes or mechanical changes&#039;&#039;&#039; into a separate patch from the substantive changes.&lt;br /&gt;
* &#039;&#039;&#039;Separate patches into conceptually-separate pieces&#039;&#039;&#039; for review purposes (even if you then later collapse them into a single changeset to push), if technically possible. Any time you&#039;re requesting review from multiple people on a single huge diff, chance are splitting it might have been a good idea.&lt;br /&gt;
* &#039;&#039;&#039;Make the summary of the bug reflect the problem&#039;&#039;&#039; rather than some particular symptom of it, so there&#039;s a clear description of what the patch is trying to fix&lt;br /&gt;
* &#039;&#039;&#039;Write good commit messages&#039;&#039;&#039; that describe what&#039;s changing between old and new code (which, if it can&#039;t be summarized in less than about 100-150 characters, should have a short summary on the first line and a longer description on later lines)&lt;br /&gt;
* &#039;&#039;&#039;Write good code comments&#039;&#039;&#039; that describe the state of the new code, and if the patch is of nontrivial size, point to the important comments in the non-first lines of the commit message&lt;br /&gt;
* &#039;&#039;&#039;Address all comments from previous reviews&#039;&#039;&#039; (either by fixing as requested, or explaining why you haven&#039;t) before requesting another review.  It&#039;s very common to just ignore (miss?) some of the review comments, which means the reviewer then needs to triple-check that all the things they pointed out got fixed.&lt;br /&gt;
* &#039;&#039;&#039;Provide an interdiff&#039;&#039;&#039; for second and subsequent patches when requesting review for them. This is so that the reviewer can verify that the changes you made match what they asked for.  (Bugzilla&#039;s interdiff is totally unsuitable for this purpose, unfortunately, because it fails so often because it doesn&#039;t have access to the original code.)&lt;br /&gt;
* &#039;&#039;&#039;If your request only relates to part of the patch, say so clearly.&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t request review from people who are labelled as being away&#039;&#039;&#039; in Bugzilla.&lt;br /&gt;
&lt;br /&gt;
== Potential Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add a &#039;&#039;&#039;Review ETA&#039;&#039;&#039; field where the requested reviewer can specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;br /&gt;
** Reminders should be 24hours by default&lt;br /&gt;
** it should be possible to get reminders for multiple people (eg for managers to track review latency of whole team)&lt;br /&gt;
** reminders should specify how long has it been since reviewer last commented in the bug&lt;br /&gt;
* Provide information about reviewers when asking for r?&lt;br /&gt;
** Add a notion of being away to Bugzilla accounts, or integrate with a Time Off tracking app.&lt;br /&gt;
** Display a user&#039;s number of outstanding reviews&lt;br /&gt;
* Add a &#039;low-priority&#039; patch flag&lt;br /&gt;
* Some integration with a formatting checker&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675001</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675001"/>
		<updated>2013-07-10T22:12:08Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Bugzilla Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* Split mass-changes or mechanical changes into a separate patch from the substantive changes.&lt;br /&gt;
* If possible, separate patches into conceptually-separate pieces for review purposes (even if you then later collapse them into a single changeset to push).  Any time you&#039;re requesting review from multiple people on a single huge diff, chance are splitting it might have been a good idea.&lt;br /&gt;
* Actually address the review comments before requesting another review.  It&#039;s very common to just ignore (miss?) some of the review comments, which means the reviewer then needs to triple-check that all the things they pointed out got fixed.&lt;br /&gt;
* When requesting a second review on a patch, provide an interdiff so that the reviewer can just verify that the changes you made match what they asked for.  Bugzilla&#039;s interdiff is totally unsuitable for this purpose, unfortunately, because it fails so often.&lt;br /&gt;
* When requesting review or feedback on just part of the patch, make that very clear. &lt;br /&gt;
* don&#039;t request review from people who are labeled as being away in Bugzilla and expect fast turnaround&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;br /&gt;
* Provide information about reviewers when asking for r?&lt;br /&gt;
** Add a notion of being away to bz-accounts.&lt;br /&gt;
** Display number of outstanding reviews&lt;br /&gt;
* Add a &#039;low-priority&#039; patch flag&lt;br /&gt;
* Some integration with a formatting checker&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675000</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=675000"/>
		<updated>2013-07-10T22:11:26Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Bugzilla Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* Split mass-changes or mechanical changes into a separate patch from the substantive changes.&lt;br /&gt;
* If possible, separate patches into conceptually-separate pieces for review purposes (even if you then later collapse them into a single changeset to push).  Any time you&#039;re requesting review from multiple people on a single huge diff, chance are splitting it might have been a good idea.&lt;br /&gt;
* Actually address the review comments before requesting another review.  It&#039;s very common to just ignore (miss?) some of the review comments, which means the reviewer then needs to triple-check that all the things they pointed out got fixed.&lt;br /&gt;
* When requesting a second review on a patch, provide an interdiff so that the reviewer can just verify that the changes you made match what they asked for.  Bugzilla&#039;s interdiff is totally unsuitable for this purpose, unfortunately, because it fails so often.&lt;br /&gt;
* When requesting review or feedback on just part of the patch, make that very clear. &lt;br /&gt;
* don&#039;t request review from people who are labeled as being away in Bugzilla and expect fast turnaround&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;br /&gt;
* Provide information about reviewers when asking for r?&lt;br /&gt;
** Add a notion of being away to bz-accounts.&lt;br /&gt;
** Display number of outstanding reviews&lt;br /&gt;
* Add a &#039;low-priority&#039; patch flag&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674997</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674997"/>
		<updated>2013-07-10T21:57:07Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Patch-author Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* Split mass-changes or mechanical changes into a separate patch from the substantive changes.&lt;br /&gt;
* If possible, separate patches into conceptually-separate pieces for review purposes (even if you then later collapse them into a single changeset to push).  Any time you&#039;re requesting review from multiple people on a single huge diff, chance are splitting it might have been a good idea.&lt;br /&gt;
* Actually address the review comments before requesting another review.  It&#039;s very common to just ignore (miss?) some of the review comments, which means the reviewer then needs to triple-check that all the things they pointed out got fixed.&lt;br /&gt;
* When requesting a second review on a patch, provide an interdiff so that the reviewer can just verify that the changes you made match what they asked for.  Bugzilla&#039;s interdiff is totally unsuitable for this purpose, unfortunately, because it fails so often.&lt;br /&gt;
* When requesting review or feedback on just part of the patch, make that very clear. &lt;br /&gt;
* don&#039;t request review from people who are labeled as being away in Bugzilla and expect fast turnaround&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;br /&gt;
* Provide information about reviewers when asking for r?&lt;br /&gt;
** Add a notion of being away to bz-accounts.&lt;br /&gt;
** Display number of outstanding reviews&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674994</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674994"/>
		<updated>2013-07-10T21:55:05Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Bugzilla Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* small patches, functionally divided;&lt;br /&gt;
* don&#039;t request review from people who are labeled as being away in Bugzilla and expect fast turnaround&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;br /&gt;
* Provide information about reviewers when asking for r?&lt;br /&gt;
** Add a notion of being away to bz-accounts.&lt;br /&gt;
** Display number of outstanding reviews&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674993</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674993"/>
		<updated>2013-07-10T21:52:51Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Patch-author Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* small patches, functionally divided;&lt;br /&gt;
* don&#039;t request review from people who are labeled as being away in Bugzilla and expect fast turnaround&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674992</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674992"/>
		<updated>2013-07-10T21:50:49Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Patch-author Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers review your patches quickly by making patches easy to review:&lt;br /&gt;
&lt;br /&gt;
* small patches, functionally divided;&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674991</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674991"/>
		<updated>2013-07-10T21:49:41Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Reviewer Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community.&lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers help you, and don&#039;t be surprised if you get asked about one of the following:  &lt;br /&gt;
&lt;br /&gt;
* small patches, functionally divided;&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674990</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674990"/>
		<updated>2013-07-10T21:48:17Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Realize that reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community. &lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers help you, and don&#039;t be surprised if you get asked about one of the following:  &lt;br /&gt;
&lt;br /&gt;
* small patches, functionally divided;&lt;br /&gt;
&lt;br /&gt;
== Bugzilla Improvements ==&lt;br /&gt;
* In addition to r+/r- add eta flag to specify when the patch will get reviewed. Bugzilla should send reminder emails based on that flag.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674989</id>
		<title>Code Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Code_Review&amp;diff=674989"/>
		<updated>2013-07-10T21:45:23Z</updated>

		<summary type="html">&lt;p&gt;Tglek: Created page with &amp;quot;== Reviewer Guidelines ==  # Prioritize. Realize that reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&amp;#039;t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reviewer Guidelines ==&lt;br /&gt;
&lt;br /&gt;
# Prioritize. Realize that reviewing code is more valuable than writing code as it results in higher overall project activity. If you find you can&#039;t write code anymore due to prioritizing reviews over coding, grow more reviewers.&lt;br /&gt;
# Communicate. If you are an active contributor, you should not leave r? patches sitting in your queue without feedback. &amp;quot;I will review this next week because I&#039;m (busy reviewing ___ this week|away at conference). I think bugzilla could use some improvements there. If you think a patch is lower priority than your other work communicate that.&lt;br /&gt;
# Silence is not an option. If you think saying nothing is better than admitting than you wont get to the patch for a while(Holding back bad code is a feature, not a bug, do it politely), that&#039;s passive aggressiveness (https://en.wikipedia.org/wiki/Passive-aggressive_behavior). This is not a good way to build a happy coding community. &lt;br /&gt;
&lt;br /&gt;
== Patch-author Guidelines ==&lt;br /&gt;
&lt;br /&gt;
There are some things that make it easier to get a good, prompt review, and to improve the quality of the patch you submit.  Help your reviewers help you, and don&#039;t be surprised if you get asked about one of the following:  &lt;br /&gt;
&lt;br /&gt;
* small patches, functionally divided;&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=PlatformProfiler/Roadmap&amp;diff=674891</id>
		<title>PlatformProfiler/Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=PlatformProfiler/Roadmap&amp;diff=674891"/>
		<updated>2013-07-10T19:01:49Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Profilable B2G Nightlies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projects =&lt;br /&gt;
== Profilable Fennec Nightlies ==&lt;br /&gt;
The goal of this project is being able to profile nightly Fennec build without compiling a local build.&lt;br /&gt;
&lt;br /&gt;
Owner: :sewardj&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Breakpad speed improvements&lt;br /&gt;
* Breakpad unwind accuracy&lt;br /&gt;
&lt;br /&gt;
== Profilable B2G Nightlies ==&lt;br /&gt;
The goal of this project is being able to profile nightly B2G build without compiling a local build.&lt;br /&gt;
&lt;br /&gt;
Owner: :jld,:sewardj&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Custom ARM Unwinder&lt;br /&gt;
* Use Breakpad on B2G&lt;br /&gt;
* Optimize profiler memory usage&lt;br /&gt;
&lt;br /&gt;
== Profiling Plugins ==&lt;br /&gt;
The goal of this project is being able to profile plugins.&lt;br /&gt;
&lt;br /&gt;
Owner: :gfritzsche, :benwa, :vlandan&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Bug 853864 - Expose IPC message information to profiler&lt;br /&gt;
* Bug 881899 - Deploy a private SymbolicationServer for obfuscated Flash symbols&lt;br /&gt;
* Front end improvements to display IPC message information&lt;br /&gt;
== Monitoring I/O ==&lt;br /&gt;
The goal of this project is report I/O operation with a proper callstack.&lt;br /&gt;
&lt;br /&gt;
Owner: :aklotz&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Bug 867757 - Provide a way to insert arbitrary data in a profile&lt;br /&gt;
* Capture the callstacks for markers&lt;br /&gt;
* Symbolicate marker callstacks&lt;br /&gt;
* Front end improvements to markers and callstacks.&lt;br /&gt;
== Profiling Painting/Compositing (also Gaming) ==&lt;br /&gt;
The goal of this project is being able to report (1) What is triggering repaints, (2) Frame boundaries, (3) Frame budgets and frames taking above 15ms, (4) Samples related to frame for both the content and compositor thread.&lt;br /&gt;
&lt;br /&gt;
Owner: :BenWa&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Bug 867757 - Provide a way to insert arbitrary data in a profile&lt;br /&gt;
* Instrument the frame transactions&lt;br /&gt;
* Capture callstack of code requesting repaints&lt;br /&gt;
* Add a new widget to show frame budgets&lt;br /&gt;
* Complex time range selection in the front end&lt;br /&gt;
== Cleopatra ==&lt;br /&gt;
The goal of this project is to improve cleopatra.&lt;br /&gt;
&lt;br /&gt;
Owner: :BenWa, :mstange&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* (Various support feature for projects listed here)&lt;br /&gt;
* Better marker UI&lt;br /&gt;
* Fix local storage&lt;br /&gt;
* Code refactoring&lt;br /&gt;
* Tests&lt;br /&gt;
== Multi-thread Profiling ==&lt;br /&gt;
The goal of this project is to display more useful profiles for tasks that coordinate work between threads&lt;br /&gt;
&lt;br /&gt;
Owner: :BenWa&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Improvements to thread selection and filtering&lt;br /&gt;
* Bug 867757 - Provide a way to insert arbitrary data in a profile&lt;br /&gt;
* Show locking?&lt;br /&gt;
== Power Profiling ==&lt;br /&gt;
Bugs&lt;br /&gt;
* Bug 769431 - Correlate performance data with Ivy Bridge MSR_PPX_ENERGY_STATUS for power usage profiles&lt;br /&gt;
== Experimental/Low Priority ==&lt;br /&gt;
=== Video Profiling ===&lt;br /&gt;
The goal of this project is display a video capture along side of the project requested. Similar to eideticker profiles.&lt;br /&gt;
&lt;br /&gt;
Owner: :BenWa&lt;br /&gt;
&lt;br /&gt;
Bugs&lt;br /&gt;
* Either improve automation with screencasting software or build in system to copy composited frames.&lt;br /&gt;
&lt;br /&gt;
=== Resuming unwinds from PseudoFrames ===&lt;br /&gt;
The goal of this project is to experiment with from a failed unwind from a pseudo frames and/or using previous pseudo frames to copy from a successfull unwind to speed up unwinding.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=671129</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=671129"/>
		<updated>2013-06-27T18:21:57Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002}} - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
* {{bug|843853}} -  Newtab page slows down tab-open animation&lt;br /&gt;
&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager - Early Q3&lt;br /&gt;
* {{bug|838577}} - Async session-store - Q3&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=671125</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=671125"/>
		<updated>2013-06-27T18:18:14Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002}} - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
* {{bug|843853}} -  Newtab page slows down tab-open animation&lt;br /&gt;
&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager&lt;br /&gt;
* {{bug|838577}} - Async session-store&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=667055</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=667055"/>
		<updated>2013-06-14T21:27:13Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002}} - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
* {{bug|843853}} -  Newtab page slows down tab-open animation&lt;br /&gt;
&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager&lt;br /&gt;
* {{bug|702559}} - Create a pure-async mozIStorageAsyncConnection&lt;br /&gt;
* {{bug|838577}} - Async session-store&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=667051</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=667051"/>
		<updated>2013-06-14T21:10:42Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002}} - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
* {{bug|843853}} -  Newtab page slows down tab-open animation&lt;br /&gt;
&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager&lt;br /&gt;
* {{bug|702559}} - Create a pure-async mozIStorageAsyncConnection&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665056</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665056"/>
		<updated>2013-06-07T23:00:10Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002)) - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
* {{bug|843853}} -  Newtab page slows down tab-open animation&lt;br /&gt;
&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager&lt;br /&gt;
* {{bug|702559}} - Create a pure-async mozIStorageAsyncConnection&lt;br /&gt;
* {{bug|872421}} [Chrome Workers] Provide a module loader for chrome workers&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665055</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665055"/>
		<updated>2013-06-07T22:56:56Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002)) - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
* {{bug|843853}} -  Newtab page slows down tab-open animation&lt;br /&gt;
&lt;br /&gt;
Dolske:&lt;br /&gt;
* {{bug|355063}} - Password manager does not work on script-generated forms&lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} - {{bug|853389}} - JSON+Async addon manager&lt;br /&gt;
* {{bug|702559}} - Create a pure-async mozIStorageAsyncConnection&lt;br /&gt;
* {{bug|872421}} [Chrome Workers] Provide a module loader for chrome workers&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665052</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665052"/>
		<updated>2013-06-07T22:46:37Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;br /&gt;
* {{bug|876002)) - [meta] Remove nsIFormHistory2 so no synchronous form history code remains &lt;br /&gt;
&lt;br /&gt;
Taras:&lt;br /&gt;
* {{bug|853388}} + {{bug|853389}} - JSON+Async addon manager&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665043</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665043"/>
		<updated>2013-06-07T22:27:31Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
* {{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
* {{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
* {{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665042</id>
		<title>Performance/Frontend</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Frontend&amp;diff=665042"/>
		<updated>2013-06-07T22:27:13Z</updated>

		<summary type="html">&lt;p&gt;Tglek: Created page with &amp;quot;Gavin: {{bug|853549}} - Remove main-thread I/O from password manager {{bug|699854}} - Refactor Downloads APIs to use async Storage {{bug|699850}} - Refactor all synchronous hi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gavin:&lt;br /&gt;
{{bug|853549}} - Remove main-thread I/O from password manager&lt;br /&gt;
{{bug|699854}} - Refactor Downloads APIs to use async Storage&lt;br /&gt;
{{bug|699850}} - Refactor all synchronous history APIs to use async Storage APIs&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Javascript:SpiderMonkey:2013Projects&amp;diff=656032</id>
		<title>Javascript:SpiderMonkey:2013Projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Javascript:SpiderMonkey:2013Projects&amp;diff=656032"/>
		<updated>2013-05-14T23:51:30Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Projects Under Consideration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Projects Under Consideration  ==&lt;br /&gt;
&lt;br /&gt;
* Generational Garbage Collection, Terrence Cole/Steve Fink/Jon Coppeard, https://wiki.mozilla.org/Javascript:SpiderMonkey:ProjectGenerationGarbageCollection&lt;br /&gt;
* OdinMonkey (Asm.js), Luke/Sean/Hannes, https://wiki.mozilla.org/Javascript:SpiderMonkey:OdinMonkey&lt;br /&gt;
* JavaScript Parrellelism, Sean and Luke&lt;br /&gt;
** Parrellel JS, Mozilla Research&lt;br /&gt;
** Parrellel Arrays&lt;br /&gt;
** ArrayBuffer sharing&lt;br /&gt;
** Thread support&lt;br /&gt;
* EcmaScript 6 Features, Jason Orendorff, https://wiki.mozilla.org/ES6_plans&lt;br /&gt;
** Modules - Edy &amp;amp; Jason&lt;br /&gt;
* EcmaScript 6 Testing, Jeff Walden, https://wiki.mozilla.org/User:Waldo/ES6_testing&lt;br /&gt;
* Baseline, Kannan/Jan&lt;br /&gt;
** Optimize generators and proxies in baseline&lt;br /&gt;
** Make Ion use Baseline information&lt;br /&gt;
* BinaryData: {{bug|578700}}&lt;br /&gt;
* Internationalization, Jeff Walden&lt;br /&gt;
** Write up Norbert&#039;s work and API - https://wiki.mozilla.org/User:Waldo/Internationalization_API&lt;br /&gt;
* Memory Usage&lt;br /&gt;
** Lazy Byte Code Analysis, Brian Hackett, {{bug|678037}}&lt;br /&gt;
** Script Analysis, Kannan Vijayan, {{bug|864502}}&lt;br /&gt;
* ARM, Marty Rosenberg&lt;br /&gt;
** Assembly Buffer changes - needed for asm.js&lt;br /&gt;
** Add support for all 32 double registers&lt;br /&gt;
** thumb2 backend - http://en.wikipedia.org/wiki/ARM_architecture#Thumb-2&lt;br /&gt;
*** new assembler for thumb2&lt;br /&gt;
** Add a peephole pass: {{bug|734830}}&lt;br /&gt;
** Support for operand2 and fused-multiply-add: {{bug|777659}}&lt;br /&gt;
** Support for pre and post increment&lt;br /&gt;
** Front-end on top of the macro assembler to get yarr to use it (will likely generate better code)&lt;br /&gt;
* Type Inference, Brian Hackett&lt;br /&gt;
** Reduce TI memory usage {{bug|804676}}&lt;br /&gt;
* FirefoxOS&lt;br /&gt;
** Partner benchmark optimizations&lt;br /&gt;
** B2G Optimizations, Nicolas&lt;br /&gt;
* DevTools, Jim Blandy&lt;br /&gt;
** Debugability of full stack &lt;br /&gt;
** JSD2 Trace Profiler {{bug|797876}}&lt;br /&gt;
** Profiler&lt;br /&gt;
*** Crash Bugs - Typically seen while toggling the profiler and/or private browsing&lt;br /&gt;
**** {{bug|802798}}&lt;br /&gt;
**** {{bug|836938}}&lt;br /&gt;
**** {{bug|832812}} fixed&lt;br /&gt;
**** {{bug|788495}}&lt;br /&gt;
*** prototype/static function name  {{bug|838265}}&lt;br /&gt;
*** multithreaded {{bug|863703}}&lt;br /&gt;
*** Column info  {{bug|785922}}&lt;br /&gt;
* Performance&lt;br /&gt;
** Faster DOM &amp;lt;==&amp;gt; JIT Interaction&lt;br /&gt;
** Shumway and IonMonkey JIT code-gen caching, Till Schneidereit&lt;br /&gt;
*** Memory cloning&lt;br /&gt;
*** Disk Caching&lt;br /&gt;
* Hygiene&lt;br /&gt;
** Remove Jaegermonkey code from the tree&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/FHR&amp;diff=519978</id>
		<title>Performance/FHR</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/FHR&amp;diff=519978"/>
		<updated>2013-02-14T19:39:46Z</updated>

		<summary type="html">&lt;p&gt;Tglek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. &#039;&#039;&#039; JSON vs SQLite storage &#039;&#039;&#039; The SQLite schema used in FHR is overly complex and seems over-engineered and has a degree of redundancy. &lt;br /&gt;
We could simplify FHR storage by storing data in JSON files, this will cut down amount of IO and fsyncs.&lt;br /&gt;
We should flush out current session data on shutdown(without fsync to delay shutdown).&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039; Flushing prefs &#039;&#039;&#039; FHR currently uses browser prefs to store data such as lastPingTime, lastSubmitID, last submission success, etc. It will need to explicitly flush the prefs store to disk for this information to survive a crash. Currently, prefs can only be flushed on the main thread, and this is likely to be a source of jank as typical pref files are sizeable.&lt;br /&gt;
&lt;br /&gt;
3. &#039;&#039;&#039; User-activity tracking &#039;&#039;&#039; The FHR user-activity handler should be implemented natively. The overhead of one JS event running every 5 seconds (while the user is interacting with the browser) is not likely to cause any user-visible jank, but this functionality really belongs in platform code. Once this data provider is moved to native code, FHR will have 1) &amp;quot;pull type&amp;quot; data providers that are only polled at shutdown or upload time, and 2) &amp;quot;push type&amp;quot; providers that record specific user actions (e.g. Google searches). If we could move the &amp;quot;push type&amp;quot; providers out of FHR, FHR would only have to be in memory at shutdown or submission time.&lt;br /&gt;
&lt;br /&gt;
4. &#039;&#039;&#039; FHR event polling &#039;&#039;&#039; Currently, FHR wakes up every minute to check if it needs to submit a report, expire any data, etc. This can be made neater by simply scheduling wake-ups for a specific time in the future.&lt;br /&gt;
&lt;br /&gt;
5. &#039;&#039;&#039; Chrome workers &#039;&#039;&#039; Any disk or network operations should be moved entirely to a chrome worker to avoid unintentionally slowing down the main thread. For example, serializing 6-months worth of FHR data on the main thread before passing the string to Necko&#039;s thread-pool could cause jank (we&#039;ve seen this problem with session restore). FHR can then use XHR from a worker to do uploads instead of re-implementing the functionality on the main thread &amp;amp; using XPCOM to open network channels.&lt;br /&gt;
&lt;br /&gt;
6. &#039;&#039;&#039; Spinning of event loop at shutdown &#039;&#039;&#039; We shouldn&#039;t be spinning the event loop at shutdown. It seems event-loop spinning was added to allow an FHR upload to finish before Firefox shuts down, but we could achieve the same effect by cancelling the upload and updating state atomically at the end of the upload.&lt;br /&gt;
&lt;br /&gt;
7. &#039;&#039;&#039; Telemetry probes &#039;&#039;&#039; FHR should track its first-run initialization time in Telemetry separately from subsequent initialization times. We should also change the existing Telemetry probes to accurately track the amount of time spent on FHR operations instead of tracking the wall clock time elapsed from issuing an asynchronus FHR operation to the operation&#039;s completion handler running. It&#039;s causing the probes to over-estimate the amount of time required by FHR operations.&lt;br /&gt;
&lt;br /&gt;
8. &#039;&#039;&#039; Other comments &#039;&#039;&#039; The current uses of Task.jsm are hard to read, they should be rewritten with better naming conventions or task closures.&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Snappy/Dashboard&amp;diff=507400</id>
		<title>Performance/Snappy/Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Snappy/Dashboard&amp;diff=507400"/>
		<updated>2013-01-28T22:53:54Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Fixed in the last week. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Snappy Dashboard=&lt;br /&gt;
&lt;br /&gt;
==Resolved in the last 3 weeks.==&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;chfield&amp;quot;: &amp;quot;resolution&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;21d&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
==Fixed in last 3 weeks==&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;chfield&amp;quot;: &amp;quot;resolution&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;21d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changed in the last week.==&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;quicksearch&amp;quot;: &amp;quot;status:new,assigned,reopened,unconfirmed&amp;quot;,&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;quicksearch&amp;quot;: &amp;quot;whiteboard:[snappy status:new,assigned,reopened,unconfirmed&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Snappy/Dashboard&amp;diff=507397</id>
		<title>Performance/Snappy/Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Snappy/Dashboard&amp;diff=507397"/>
		<updated>2013-01-28T22:53:31Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Changed in the last week. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Snappy Dashboard=&lt;br /&gt;
&lt;br /&gt;
==Resolved in the last 3 weeks.==&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;chfield&amp;quot;: &amp;quot;resolution&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;21d&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
==Fixed in the last week.==&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;chfield&amp;quot;: &amp;quot;resolution&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;21d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changed in the last week.==&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;quicksearch&amp;quot;: &amp;quot;status:new,assigned,reopened,unconfirmed&amp;quot;,&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;quicksearch&amp;quot;: &amp;quot;whiteboard:[snappy status:new,assigned,reopened,unconfirmed&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Snappy/Dashboard&amp;diff=507395</id>
		<title>Performance/Snappy/Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Snappy/Dashboard&amp;diff=507395"/>
		<updated>2013-01-28T22:52:45Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Resolved in the last week. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Snappy Dashboard=&lt;br /&gt;
&lt;br /&gt;
==Resolved in the last 3 weeks.==&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;chfield&amp;quot;: &amp;quot;resolution&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;21d&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
==Changed in the last week.==&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;chfield&amp;quot;: &amp;quot;resolution&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changed in the last week.==&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;quicksearch&amp;quot;: &amp;quot;status:new,assigned,reopened,unconfirmed&amp;quot;,&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;quicksearch&amp;quot;: &amp;quot;whiteboard:[snappy status:new,assigned,reopened,unconfirmed&amp;quot;,&lt;br /&gt;
        &amp;quot;changed_after&amp;quot;: &amp;quot;7d&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2012-11-27&amp;diff=490300</id>
		<title>Platform/2012-11-27</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2012-11-27&amp;diff=490300"/>
		<updated>2012-11-27T19:00:29Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Snappy [Weekly] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Maybe don&#039;t screw with these links unless you&#039;ve read this blog post:&lt;br /&gt;
http://blog.johnath.com/2011/01/20/automatic-date-links-in-mediawiki/&lt;br /&gt;
Just copy them to new pages and it should Just Work!&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;[[Platform/{{#time: Y-m-d | {{SUBPAGENAME}} -1 week}}|&amp;amp;laquo; previous week]] | [[Platform|index]] | [[Platform/{{#time: Y-m-d | {{SUBPAGENAME}} +1 week}}|next week &amp;amp;raquo;]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-event vevent&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span class=&amp;quot;p-summary summary&amp;quot;&amp;gt;Platform Meeting&amp;lt;/span&amp;gt; Details&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;dt-start dtstart&amp;quot;&amp;gt;Tuesday &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;{{#time: Y-m-d | {{SUBPAGENAME}} }}&amp;lt;/span&amp;gt; - &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;11:00&amp;lt;/span&amp;gt; am &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;-0700&amp;quot;&amp;gt;Pacific&amp;lt;/abbr&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{conf|95312}}&lt;br /&gt;
* &amp;lt;span class=&amp;quot;location&amp;quot;&amp;gt;[https://v.mozilla.com/flex.html?roomdirect.html&amp;amp;key=UK1zyrd7Vhym Warp Core Vidyo Room] / SFO-Boardroom&amp;lt;/span&amp;gt;&lt;br /&gt;
* join irc.mozilla.org [irc://irc.mozilla.org/planning #planning] for back channel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Moztrap ==&lt;br /&gt;
&lt;br /&gt;
==Notices/Schedule==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&amp;lt;big&amp;gt;[https://bugzilla.mozilla.org/buglist.cgi?type0-7-0=notequals;value0-7-0=%2B;field0-3-0=cf_status_firefox19;type0-1-0=notequals;type0-5-0=notequals;value0-5-0=disabled;value0-4-0=verified;field0-1-0=cf_status_firefox19;field0-0-0=cf_tracking_firefox19;type0-4-0=notequals;columnlist=bug_severity%2Cpriority%2Cop_sys%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate;field0-6-0=cf_status_firefox19;value0-3-0=unaffected;field0-7-0=cf_tracking_firefox18;query_format=advanced;value0-2-0=fixed;value0-6-0=verified%20disabled;value0-1-0=wontfix;type0-3-0=notequals;field0-2-0=cf_status_firefox19;field0-5-0=cf_status_firefox19;field0-4-0=cf_status_firefox19;type0-6-0=notequals;type0-0-0=equals;value0-0-0=%2B;type0-2-0=notequals;list_id=5004437 27 bugs]&amp;lt;/big&amp;gt; &amp;lt;small&amp;gt;(17)&amp;lt;/small&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
| &amp;lt;b&amp;gt;&amp;lt;center&amp;gt;&amp;lt;big&amp;gt;[https://bugzilla.mozilla.org/buglist.cgi?type0-1-0=notequals;type0-5-0=notequals;value0-5-0=disabled;value0-4-0=verified;list_id=4754086;field0-1-0=cf_status_firefox18;field0-0-0=cf_tracking_firefox18;value0-3-0=unaffected;value0-6-0=verified%20disabled;value0-1-0=wontfix;field0-5-0=cf_status_firefox18;type0-0-0=equals;value0-0-0=%2B;type0-2-0=notequals;field0-3-0=cf_status_firefox18;type0-4-0=notequals;columnlist=bug_severity%2Cpriority%2Cop_sys%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate;field0-6-0=cf_status_firefox18;query_format=advanced;value0-2-0=fixed;type0-3-0=notequals;field0-2-0=cf_status_firefox18;field0-4-0=cf_status_firefox18;type0-6-0=notequals 85 bugs]&amp;lt;/big&amp;gt; &amp;lt;small&amp;gt;(67)&amp;lt;/small&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | &amp;lt;small&amp;gt;Unresolved Aurora Trackers (non-security, not tracked for Beta)&amp;lt;/small&amp;gt;&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | &amp;lt;b&amp;gt;&amp;lt;small&amp;gt;Unresolved Beta Trackers (non-security)&amp;lt;/small&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Firefox 18.0 beta 1 went out the door yesterday&lt;br /&gt;
* Firefox 19.0a2 updates were enabled yesterday&lt;br /&gt;
* Necessity for a 17.0.1 discussed in the channel meeting today&lt;br /&gt;
* Firefox 18.0 beta 2 is going to build today&lt;br /&gt;
** Team nags sent - please prioritize tracked FF18 bugs asap. Think of the holidays.&lt;br /&gt;
&lt;br /&gt;
* 17.0.1 potential drivers:&lt;br /&gt;
** {{bug|813763}} – Menu items like Addons Manager not working in FF 17 due to Tab Mix Plus&lt;br /&gt;
*** We&#039;ve marked TMP as incompatible with FF17&lt;br /&gt;
*** TMP removed from &#039;featured&#039; addons for now, and also SUMO points to dev version which has fix in it&lt;br /&gt;
*** The currently working TMP dev version is not planned to push out until January&lt;br /&gt;
*** Does {{bug|761723}} have too much code change to back out (it&#039;s the potential regressing bug) - engineering volunteer to work on a potential code fix?&lt;br /&gt;
** {{bug|588909}} fallout:&lt;br /&gt;
*** No topsites broken, but many smaller sites reporting issues with DHTML menus ({{bug|814138}},{{bug|780393}})&lt;br /&gt;
*** Broken libraries: certain embeddings of FCKeditor (including some financial institutions mentioned in SUMO feedback), Moodle workaround for UA is now affecting their cross-site SSO system, MNet (namely Mahara) and either requires yet another hack (slippery slope) or a backout of UA changes&lt;br /&gt;
*** several smaller data entry and rich editing libraries&lt;br /&gt;
*** Question:  How important/how much of a win is the UA change that we should continue to take these papercuts or just rip out the change  (for the forseeable future, given a lack of TE options)?&lt;br /&gt;
&lt;br /&gt;
==Products/Projects==&lt;br /&gt;
&lt;br /&gt;
===Firefox OS===&lt;br /&gt;
&lt;br /&gt;
*QA&lt;br /&gt;
** QA team started last week, began executing Functional testruns&lt;br /&gt;
*** Pass: 778, Fail: 158, Invalid: 175&lt;br /&gt;
*** This first pass is giving us tons of feedback on testcases that need fixing (outdated steps, need to move to v2)&lt;br /&gt;
** Smoketest blockers, still shows 16 open&lt;br /&gt;
*** 11-26 smoketests issues:&lt;br /&gt;
*** [NEW] [CALL LOG] Outgoing calls are not appearing in call log {{Bug|815063}}&lt;br /&gt;
*** [NEW] [BLUETOOTH] Receive images from another device is not working {{Bug|815079}}&lt;br /&gt;
*** [NEW] [sms] Compose/share activities are unable to return to calling app once message is sent {{Bug|815093}}&lt;br /&gt;
*** [EXISTING] [sms] No sound is played when receiving a text message with vibration and sound enabled {{Bug|811087}}&lt;br /&gt;
*** [EXISTING] [camera] Appears a lot of vertical lines on the screen after you take a photo. {{Bug|812208}}&lt;br /&gt;
*** [EXISTING] Videos are recorded at 90deg {{Bug|812924}}&lt;br /&gt;
*** [EXISTING] [Apps] Unable to install packaged apps when running OOP {{Bug|813468}}&lt;br /&gt;
*** [EXISTING] [Contact] Crash after importing around 445 contacts from Facebook {{Bug|813446}}&lt;br /&gt;
*** [EXISTING] {{Bug|815274}} - [SMS] - Can&#039;t open the SMS application from a newly arrived SMS message in the notification panel&lt;br /&gt;
** Gaia Automation work: &lt;br /&gt;
*** test stability is being addressed, with a few wins, few setbacks (see Issues/Risks)&lt;br /&gt;
*** working on getting Wi-Fi support in, to unblock many other tests&lt;br /&gt;
*** added lockscreen tests&lt;br /&gt;
*** with a couple soon-to-be merged pulls, we&#039;ll have 6/14 tests passing&lt;br /&gt;
*** Really close to having an in-tree Contributor document in GitHub (iterating over it, should be ready by next week)&lt;br /&gt;
*** Likewise, really close to a review process, with a core group defined&lt;br /&gt;
*** still having test-reliability issues (both with Marionette + Gaia itself):&lt;br /&gt;
*** bug 814037 - is_displayed struggling with transforms&lt;br /&gt;
*** bug 813583 - [B2G] Homescreen iframe not interpreted as visible&lt;br /&gt;
*** bug 814151 - Add a &amp;quot;camera-ready&amp;quot; or similar event to help tests ensure Camera&#039;s ready for tests to interact with&lt;br /&gt;
** A few blockers in progressing more testcases&lt;br /&gt;
** Other blockers&lt;br /&gt;
*** busted packaged apps&lt;br /&gt;
*** 3rd party app work still being discussed&lt;br /&gt;
*** Sound testcases late&lt;br /&gt;
&lt;br /&gt;
===Firefox Desktop===&lt;br /&gt;
*Social API&lt;br /&gt;
** Short term focus is on multi-provider support, should be landing this week.&lt;br /&gt;
*New downloads panel&lt;br /&gt;
** Uplifted to Aurora for testing. Most blockers are now fixed, but Downloads view for the library remains.&lt;br /&gt;
*Per-window PB&lt;br /&gt;
** Ship target is Firefox 20&lt;br /&gt;
*Snappy&lt;br /&gt;
** Big focus is on main thread I/O: Downloads, Form History/Autocomplete, Content Prefs, SessionStore, search service, Thumbnails, places&lt;br /&gt;
* Australis&lt;br /&gt;
** Windows tabs nearing completion, in final review stages.&lt;br /&gt;
&lt;br /&gt;
===Firefox Mobile===&lt;br /&gt;
; Blog Shout Out&lt;br /&gt;
* Read Jchen&#039;s post about using ADB via an SSH Tunnel: http://www.jnchen.com/blog/2012/11/tunnelling-adb&lt;br /&gt;
&lt;br /&gt;
;Usability &amp;amp; Responsiveness&lt;br /&gt;
* Landed in Fx19 {{Bug|808663}} Downscale awesome-bar row Favicons from 32dip to 16dip&lt;br /&gt;
* To save memory for ARMv6 devices, {{Bug|792603}} Disable automatic reader mode parsing&lt;br /&gt;
* \o/ Patch queue landed in Fx20: {{Bug|783368}} - Add a low res tile cache to TiledThebesLayer&lt;br /&gt;
** T-Checkboard has improved but T-Panning regressed, we&#039;re evaluating tradeoffs in {{Bug|814864}} Low precision tile rendering takes too much time away from high precision rendering&lt;br /&gt;
&lt;br /&gt;
;Stability Wins&lt;br /&gt;
* Fixed for Fx19 {{Bug|802510}} - java.lang.RuntimeException: Buffer not large enough for pixels at android.graphics.Bitmap.copyPixelsFromBuffer(Bitmap.java) especially on Android 4.2&lt;br /&gt;
* Fixed for Fx19 {{Bug|812594}} - PushLocalFrame in AutoLocalJNIFrame::Push taking more than 100ms when called from AndroidGeckoLayerClient::ProgressiveUpdateCallback on a Samsung Galaxy Q&lt;br /&gt;
* Fixed for Fx20 {{Bug|775142}} - java.util.UnknownFormatConversionException: Conversion: at java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.java) mainly with Japanese and Chinese builds &lt;br /&gt;
&lt;br /&gt;
;Work in Progress&lt;br /&gt;
* In the interest of QVGA support for ARMv6, {{Bug|716403}} Request to hide the navigation bar when scrolling down content&lt;br /&gt;
* Working on getting WebRTC stood up {{Bug|750869}} - Support WebRTC for Android in our build system&lt;br /&gt;
&lt;br /&gt;
===Metro [Weekly]===&lt;br /&gt;
&lt;br /&gt;
==== Platform ====&lt;br /&gt;
&lt;br /&gt;
* XPC Shell test work continues (only one failing test left!) {{bug|789335}}&lt;br /&gt;
* Services code will be moving from app to gre {{bug|815320}}&lt;br /&gt;
* New mechanism for defining app-dirs in xpcshell.ini files {{bug|810617}}&lt;br /&gt;
* New rev of packager maybe this week&lt;br /&gt;
* Migration work from elm to m-c continues to progress&lt;br /&gt;
&lt;br /&gt;
==== Rel-eng ====&lt;br /&gt;
&lt;br /&gt;
* All win64 builders now have the 8.0 SDK installed &lt;br /&gt;
* Planning to switch mc to the 8.0 sdk after the next merge on ~2013-01-06 {{bug|774910}}&lt;br /&gt;
&lt;br /&gt;
==== Front-end ====&lt;br /&gt;
* Patches in progress to simplify touch input and send touch events to content ({{bug|794621}} and dependencies).&lt;br /&gt;
* Starting work on download manager.&lt;br /&gt;
* Landing some UX tweaks and bug fixes.&lt;br /&gt;
&lt;br /&gt;
===Stability Report [Weekly]===&lt;br /&gt;
&lt;br /&gt;
* We are doing pretty good stability-wise in recent releases, crash rates are low, most crashes we talk about post-release are third-party issues and not our own code. Keep it up!&lt;br /&gt;
* Overview of stability indicators: [http://arewestableyet.com/ arewestableyet.com]&lt;br /&gt;
* Looking into how to make this report in this meeting more attractive for attendees - what are you interested in? Please tell stability@m.o or #crashkill&lt;br /&gt;
&lt;br /&gt;
* Trunk stats are still weeding out Win64 GC crashes from a big spike last week ({{bug|813619}}) - but we have &#039;&#039;&#039;[https://crash-stats.mozilla.com/topcrasher/by_build_date/Firefox/20.0a1/3/browser top crashes by build date]&#039;&#039;&#039; reports that are clean from that!&lt;br /&gt;
&lt;br /&gt;
* Trunk bugs looking for assignees:&lt;br /&gt;
** {{bug|805745}} - gfxASurface::Release() is the #2 signature over the last 3 days by build date&lt;br /&gt;
** {{bug|815542}} - The spike is Linux only, so not showing up high in overall volume, but it&#039;s out #1 crash on Linux in the last 3 days&lt;br /&gt;
&lt;br /&gt;
====Mobile====&lt;br /&gt;
[[File:CrashStats_2012-11-27.png]]&lt;br /&gt;
&lt;br /&gt;
* [https://crash-stats.mozilla.com/topcrasher/byversion/FennecAndroid/17.0/3/all 17 Release top crashes]&lt;br /&gt;
* [https://crash-stats.mozilla.com/topcrasher/byversion/FennecAndroid/18.0b1/3/all 18.0b1 Beta top crashes]&lt;br /&gt;
* [https://crash-stats.mozilla.com/topcrasher/byversion/FennecAndroid/19.0a2/3/all Aurora top crashes] &lt;br /&gt;
* [https://crash-stats.mozilla.com/topcrasher/byversion/FennecAndroid/20.0a1/3/all Nightly top crashes]&lt;br /&gt;
&lt;br /&gt;
====B2G====&lt;br /&gt;
* We still get too few reports sent in overall, so again, please test what you can on your devices and send reports if you crash!&lt;br /&gt;
* {{Bug|811778}} waiting for uplift, will only send reports over wifi.&lt;br /&gt;
* We&#039;ll need {{bug|814078}} as a followup to make sure we submit all queued/pending reports.&lt;br /&gt;
* Also, {{bug|811335}} on the server (stackwalker) side is currently (probably) blocking us from getting better information out of the reports we receive.&lt;br /&gt;
&lt;br /&gt;
===Snappy [Weekly]===&lt;br /&gt;
* Vladan Djeric blogged about the [https://blog.mozilla.org/vdjeric/2012/11/25/new-abouttelemetry-page-in-firefox-19/ new about:telemetry page in Firefox 19]&lt;br /&gt;
&lt;br /&gt;
;Content &lt;br /&gt;
*Aaron Klotz has made some great progress on prompting for plug-in hangs. See his [http://dblohm7.ca/blog/2012/11/22/plugin-hang-user-interface-for-firefox/ blog post] and check it out in this [http://ftp.mozilla.org/pub/mozilla.org/firefox/try-builds/aklotz@mozilla.com-192a654f8ad6/try-win32/firefox-19.0a1.en-US.win32.installer.exe try build].&lt;br /&gt;
&lt;br /&gt;
;Admin&lt;br /&gt;
* Taras will be out until Jan 1. Contact Vladan Djeric for technical stuff, Dmandelin or JP for everything else.&lt;br /&gt;
&lt;br /&gt;
===Games [1st Tuesday of Month]===&lt;br /&gt;
&lt;br /&gt;
===Mobile Web Compat [2nd Tuesday of Month]===&lt;br /&gt;
&lt;br /&gt;
===Critsmash [3rd Tuesday of Month]===&lt;br /&gt;
&lt;br /&gt;
===Memshrink [4th Tuesday of Month]===&lt;br /&gt;
&lt;br /&gt;
* B2G still a primary focus.  It&#039;s harder on beta to make significant changes.  Cross your fingers.&lt;br /&gt;
&lt;br /&gt;
* The (hopefully) last compartment sharing work for b2g is on central and is ready to land on Aurora once the tree reopens.  After that we can land it all and turn it on on beta.&lt;br /&gt;
&lt;br /&gt;
* Lots of work improving coverage of memory reporters, mostly to help B2G.&lt;br /&gt;
&lt;br /&gt;
* We briefly hit zero known leaks in add-ons!  A year ago this was our single biggest memory consumption problem, and now it&#039;s a minor annoyance.  Great stuff.&lt;br /&gt;
&lt;br /&gt;
* MemShrink reports:  [https://blog.mozilla.org/nnethercote/2012/10/31/memshrink-progress-week-71-72/ Week 71--72], [https://blog.mozilla.org/nnethercote/2012/11/14/memshrink-progress-week-73-74/ Week 73--74].&lt;br /&gt;
&lt;br /&gt;
==Engineering Metrics==&lt;br /&gt;
&lt;br /&gt;
==Key Issues==&lt;br /&gt;
=== Actions Last Week ===&lt;br /&gt;
* Mossop to follow up to mailing list about super-review status, update doc and post link&lt;br /&gt;
* jduell to update style guide for anon name spaces and mail to list&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
* Namespace style guidelines (khuey)&lt;br /&gt;
* Not shipping prefixed APIs on the release channel (henri)&lt;br /&gt;
* Future Issues - early discussion on dev-platform, monitoring for discussion if not resolved&lt;br /&gt;
** UA String Touch or Tablet&lt;br /&gt;
** Win64 builds&lt;br /&gt;
&lt;br /&gt;
=== Actions ===&lt;br /&gt;
&lt;br /&gt;
==Roundtable==&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2012-Q4-Goals&amp;diff=483561</id>
		<title>Platform/2012-Q4-Goals</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2012-Q4-Goals&amp;diff=483561"/>
		<updated>2012-10-29T21:16:23Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Perf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== General Goals ===&lt;br /&gt;
&lt;br /&gt;
=== GFX ===&lt;br /&gt;
* {{ok|Prototype GPU acceleration for Azure/Skia canvas on mobile}}&lt;br /&gt;
* {{ok|Prototype GPU acceleration for Azure/Skia canvas on Windows}}&lt;br /&gt;
** Determine if this is possible on Windows XP due to context loss etc&lt;br /&gt;
* {{ok|Have a clean, dependable, extensible, all-platform, free-of-adverse-cache-effects driver blacklisting solution.}}&lt;br /&gt;
* {{ok|Enable Azure for content everywhere}}&lt;br /&gt;
* {{ok|OMTC implemented, landed and turned on for Metro product beta}}&lt;br /&gt;
* {{ok|Turn on GL layers on Linux}}&lt;br /&gt;
* Other important Q4 work&lt;br /&gt;
** OMTC on Direct3D 9, OpenGL on Desktop, basic layers&lt;br /&gt;
** WebGL test suite compliance&lt;br /&gt;
** CSS font spec work&lt;br /&gt;
** Convert drawing code to Azure &lt;br /&gt;
** Other B2G and mobile work as necessary&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
* {{ok|Readability 2.0}}&lt;br /&gt;
** list features&lt;br /&gt;
* {{ok|Complete Graphite Fonts Project}} ({{bug|631479}})&lt;br /&gt;
** needs final sec-review&lt;br /&gt;
* {{ok|Invalidation via DisplayList Analysis ({{bug|539356}})}}&lt;br /&gt;
** fix regressions&lt;br /&gt;
* {{ok|CSS Flexbox feature/spec}} ({{bug|666041}})&lt;br /&gt;
** pref&#039;ed on&lt;br /&gt;
* {{ok|Add image visibility API ({{bug|689623}})}}&lt;br /&gt;
** r+ and land&lt;br /&gt;
* {{ok|CSS}} [[Platform/Features/Vertical_text|Vertical Text]] ({{bug|145503}})&lt;br /&gt;
** list sub-bugs for Q4&lt;br /&gt;
* {{ok|CSS Pagination}} ({{bug|775628}})&lt;br /&gt;
** list sub-bugs for Q4&lt;br /&gt;
* {{ok|CSS Variables}} ({{bug|773296}})&lt;br /&gt;
* {{ok|Implement the auto value for the HTML dir attribute ({{bug|548206}})}}&lt;br /&gt;
** patch needs r+ and landed&lt;br /&gt;
* {{ok|CSS 2.1 Test Suite v.2}}&lt;br /&gt;
* {{ok|CSS Spec, Unprefixing &amp;amp; Testing}} ({{bug|775235}})&lt;br /&gt;
** need sub-bugs&lt;br /&gt;
* {{ok|Scoped Style Sheets}} ({{bug|508725}})&lt;br /&gt;
** need to specify Q4 to-do list&lt;br /&gt;
* {{ok|SVG Text}} ({{bug|655877}})&lt;br /&gt;
** need to specify Q4 to-do list&lt;br /&gt;
* {{risk|Off Main Thread Animations}} ({{bug|755084}}, {{bug|706179}})&lt;br /&gt;
** need a resource to pick up dzbarsky&#039;s work&lt;br /&gt;
* {{risk|Layout Azure Conversion}} ({{bug|776197}} &lt;br /&gt;
** needs staffing&lt;br /&gt;
* {{ok|Support for Complex Scripts on Mobile}}&lt;br /&gt;
** list actual Q4 scope&lt;br /&gt;
** Example bugs: {{bug|619521}}, {{bug|619524}}, {{bug|676068}}, {{bug|631159}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* {{ok | WebRTC enabled by default (not behind a pref or config flag) in time for Firefox 20 uplift}}&lt;br /&gt;
* {{ok | Land media platform decoding functionality for Android&#039;s Gingerbread and Honeycomb OSs in mozilla-central. One target device for each OS will be identified and agreed upon by Media and Android to verify functionality. Success criteria: platform decoders running in Firefox will playback videos at a similar performance metric to the videos playing back in the default browser on the same device.}}&lt;br /&gt;
* {{ok | Demo H.264/MP4 support using Windows Media Foundation on Windows 7 or Windows 8 Metro }}&lt;br /&gt;
&lt;br /&gt;
=== DOM ===&lt;br /&gt;
* {{done|Make new DOM bindings codegen generate stub class for implementers (in a text file or what not).}}&lt;br /&gt;
* {{prev|New DOM bindings for HTMLElement.}}&lt;br /&gt;
* {{ok|new binding for HTMLDocument}}&lt;br /&gt;
* {{ok|new bindings for 10 HTML element classes}}&lt;br /&gt;
* {{ok|make calling new binding callbacks easy and safe}}&lt;br /&gt;
&lt;br /&gt;
=== WebAPI ===&lt;br /&gt;
* {{prev|Temporary storage for IndexedDB ({{bug|785884}})}}&lt;br /&gt;
* {{prev|Implement unified offline storage quota system, putting IndexedDB and localStorage under this quota system ({{bug|767944}})}}&lt;br /&gt;
* {{ok|Assist with reducing memory usage and increasing performance of B2G ({{bug|797189}})}}&lt;br /&gt;
* {{ok|Make B2G v1 a high quality release}}&lt;br /&gt;
* {{ok|USBCode in DOM key events}}&lt;br /&gt;
* {{ok|Number form support for desktop}}&lt;br /&gt;
* {{ok|Develop and submit to W3C a proposal for &amp;quot;fixing appcache&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== JS  ===&lt;br /&gt;
&lt;br /&gt;
*{{prev|Incremental sweeping by compartment}} [{{bug|790338}}] &lt;br /&gt;
*{{prev|Generational GC: get automated safety checks running and green}}&lt;br /&gt;
*{{ok|Manage memory by zones}} (to reduce memory usage) [{{bug|759585}}]&lt;br /&gt;
*{{prev|Finish properties/elements split}}&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
* {{ok|FF OS for users who are blind (land accessfu + TTS on trunk pref&#039;ed on).}}&lt;br /&gt;
* {{ok|AccessFu/jsat test coverage.}}&lt;br /&gt;
* {{risk|Initial UIA implementation (Narrator support).}}&lt;br /&gt;
&lt;br /&gt;
=== Perf ===&lt;br /&gt;
* {{prev|{{nbug|736144}}: Async local storage via blocking pageload}}&lt;br /&gt;
* {{prev|{{nbug|662397}}: Reorder xul.dll on windows to speed up startup}}&lt;br /&gt;
* {{prev|{{nbug|662444}}: call exit(0) on shutdown}}&lt;br /&gt;
* {{prev|{{nbug|661881}}: Bundle about-telemetry extension to ship with Firefox}}&lt;br /&gt;
* {{prev|{{nbug|769241}}: Make libunwind work on ARM}}&lt;br /&gt;
* {{prev|Prevent, to a reasonable extent, background tabs from starving the main thread}}&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* {{ok|Resolve all networking basecamp blockers that are marked as blocking before November 1st.}}&lt;br /&gt;
** This work will be done primarily by Jason Duell, Honza Bambas, and Brian Smith.&lt;br /&gt;
* {{ok| {{nbug|713933}} Enable TLS false start for NPN/SPDY in mozilla-central.}}&lt;br /&gt;
** Patrick McManus will lead this effort.&lt;br /&gt;
* {{ok|Remove all potentially blocking disk cache API usage in nsHTTPChannel and nsWYCIWYGChannel, on mozilla-central.}}&lt;br /&gt;
** Nick Hurley and Michal Novotny will lead this effort.&lt;br /&gt;
* {{ok|{{nbug|702122}}: Have full adaptive DASH for WebM video enabled by default on Aurora.}}&lt;br /&gt;
** Steve Workman will lead this effort.&lt;br /&gt;
* {{ok|Resolve all networking security bugs that received a designation of sg:moderate or higher more than six weeks ago. This is a permanent goal for the group.}}&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
=== Mobile  ===&lt;br /&gt;
&lt;br /&gt;
* {{ok|Resolve all mobile security bugs that received a designation of sg:moderate or higher more than six weeks ago. This is a permanent goal for the group.}}&lt;br /&gt;
* {{ok|Support shipping ARMv6}}&lt;br /&gt;
* {{ok|Ship H.264 on ICS &amp;amp; JB}} [{{bug|787227}}]&lt;br /&gt;
* {{ok|Implement support for H.264 on GB on trunk}} [{{bug|787228}}]&lt;br /&gt;
* {{ok|Investigate support for Java addons [{{bug|799631}}]}}&lt;br /&gt;
* {{ok|Determine if we can be competitive with the stock browser on 256Mb devices [{{bug|792131}}]}}&lt;br /&gt;
* {{ok|Ship safe browsing to Beta}}&lt;br /&gt;
* {{ok|Support shipping fonts in the APK in Beta}}&lt;br /&gt;
* {{ok|Support shipping to an alternative app store with improved updater}}&lt;br /&gt;
* {{ok|Make full screen video experience pleasant for the user [{{bug|800673}}]}}&lt;br /&gt;
&lt;br /&gt;
Dependencies&lt;br /&gt;
* QA for shipping ARMv6&lt;br /&gt;
* Media team for H.264 support&lt;br /&gt;
&lt;br /&gt;
=== B2G ===&lt;br /&gt;
&lt;br /&gt;
=== Research ===&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Platform/2012-Q3-Goals&amp;diff=483560</id>
		<title>Platform/2012-Q3-Goals</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Platform/2012-Q3-Goals&amp;diff=483560"/>
		<updated>2012-10-29T21:15:38Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Perf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== General Goals ===&lt;br /&gt;
&lt;br /&gt;
=== GFX ===&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
* {{miss|stop using Java screenshotting in Fennec for Android}}&lt;br /&gt;
** we agree that we want to do this, but we have concerns that the pieces will be there, but we&#039;ll still be unable to turn off java screenshotting because of performance problems.&lt;br /&gt;
** alternative: &amp;quot;implement multi-resolution tiles&amp;quot;&lt;br /&gt;
* {{done|complete asynchronous panning and zooming with OMTC for B2G/gonk}}&lt;br /&gt;
* {{done|Ship OMTC on B2G/gonk for basecamp}}&lt;br /&gt;
* {{done|Be able to use Skia for canvas drawing on non-accelerated Windows computers}} &lt;br /&gt;
** gw280 to gather skia software-only performance numbers by Tuesday 3 July to help make a decision&lt;br /&gt;
** carryover - do we care at this point, given the below item?&lt;br /&gt;
* {{miss|Be able to use Skia for content drawing on Android}}&lt;br /&gt;
* {{done|Remove the non-Azure canvas implementation}}&lt;br /&gt;
** Use the Cairo Azure backend everywhere there isn&#039;t a more specific backend&lt;br /&gt;
* {{miss|OMTC cross-platform refactor}}&lt;br /&gt;
** Risky!&lt;br /&gt;
** Not back-outable. No OMTC or &amp;quot;New OMTC&amp;quot; only.&lt;br /&gt;
** Needed so we can enable OMTC everywhere.&lt;br /&gt;
* {{miss|Have a clean, dependable, extensible, all-platform, free-of-adverse-cache-effects driver blacklisting solution.}}&lt;br /&gt;
** {{bug|668008}} - tracking bug&lt;br /&gt;
* Other important Q3 work&lt;br /&gt;
** WebGL work. https://etherpad.mozilla.org/webgl-q3-goals&lt;br /&gt;
** Enable Azure for content everywhere&lt;br /&gt;
** Snappy work&lt;br /&gt;
** Other B2G work as required&lt;br /&gt;
** Moving other pieces of work off the main thread&lt;br /&gt;
** BugKill - ???&lt;br /&gt;
** Increase number of regular contributors&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
* {{prev|Readability 2.0}}&lt;br /&gt;
** {{done|High-DPI on MacOSX Retina}}&lt;br /&gt;
** {{done|Reflow-on-Zoom landed}}&lt;br /&gt;
** {{done|APK Fonts on Android landed}}&lt;br /&gt;
* {{prev|Complete Graphite Fonts Project}} ({{bug|631479}})&lt;br /&gt;
** {{done|Updated Libraries from SIL}}&lt;br /&gt;
* {{prev|Invalidation via DisplayList Analysis ({{bug|539356}})}}&lt;br /&gt;
** {{done|Landed in Q3}}&lt;br /&gt;
* {{prev|CSS Flexbox feature/spec}} ({{bug|666041}})&lt;br /&gt;
** {{done|Landed in Q3}}&lt;br /&gt;
* {{prev|Add image visibility API ({{bug|689623}})}}&lt;br /&gt;
** {{done|Try Server Builds for testing}}&lt;br /&gt;
* {{risk|Continue View class removal ({{bug|337801}})}}&lt;br /&gt;
* {{prev|CSS}} [[Platform/Features/Vertical_text|Vertical Text]] ({{bug|145503}})&lt;br /&gt;
** {{done|First Prototypes}}&lt;br /&gt;
* {{prev|CSS Pagination}} ({{bug|775628}})&lt;br /&gt;
** {{done|({{bug|685012}}) in r?}}&lt;br /&gt;
* {{prev|CSS Variables}} ({{bug|773296}})&lt;br /&gt;
* {{prev|Implement the auto value for the HTML dir attribute ({{bug|548206}})}}&lt;br /&gt;
** {{done|patch needs r?}}&lt;br /&gt;
* {{prev|CSS 2.1 Test Suite v.2}}&lt;br /&gt;
* {{prev|CSS Spec, Unprefixing &amp;amp; Testing}} ({{bug|775235}})&lt;br /&gt;
* {{done|Conditional Rules feature &amp;amp; spec}} ({{bug|649740}})&lt;br /&gt;
* {{prev|Scoped Style Sheets}} ({{bug|508725}})&lt;br /&gt;
* {{prev|SVG Text}} ({{bug|655877}})&lt;br /&gt;
** {{done|lots of dependent bugs closed/fixed}}&lt;br /&gt;
* {{prev|Off Main Thread Animations}} ({{bug|755084}}, {{bug|706179}})&lt;br /&gt;
** {{done|lots of progress for B2G}}&lt;br /&gt;
* {{risk|Layout Azure Conversion}} ({{bug|776197}} - needs staffing)&lt;br /&gt;
* {{prev|Support for Complex Scripts on Mobile}}&lt;br /&gt;
** Example bugs: {{bug|619521}}, {{bug|619524}}, {{bug|676068}}, {{bug|631159}}&lt;br /&gt;
* Specs:&lt;br /&gt;
** Web Animations (FPWD)&lt;br /&gt;
** CSS Flexbox (CR)&lt;br /&gt;
** CSS Cascade L3 (spec scoped style)&lt;br /&gt;
** CSS Conditional L3 (CR)&lt;br /&gt;
** CSS Text L3 (LCWD)&lt;br /&gt;
** Selectors L4&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* {{done|WebRTC landed for desktop in mozilla-central behind a pref in time for Firefox 18. (This includes both PeerConnection and full getUserMedia, but not UI.)&lt;br /&gt;
** We wound up landing DataChannels and basic UI as well}}&lt;br /&gt;
* {{done|Platform decoders running on the Otoro device will playback videos at a similar performance metric to the equivalent android player}}&lt;br /&gt;
* {{done|For a specific list of Android phones (ICS/JB devices), platform decoders running in Firefox will playback videos at a similar performance metric to the videos playing back in the default browser on the same phone}}&lt;br /&gt;
* {{done|Publish (to one or more of our newsgroups) a plan for supporting the Web Audio API.  (We&#039;re still hoping to make improvements to the spec.)}}&lt;br /&gt;
&lt;br /&gt;
Mission Note: The media team will support B2G&#039;s efforts to ship B2G version 1 above any goals for this quarter.&lt;br /&gt;
&lt;br /&gt;
=== DOM ===&lt;br /&gt;
* {{done|Stop leaks by adding purple buffer support for cycle collected non-nsISupports objects.}}&lt;br /&gt;
* {{deferred|Speed up cycle collection by representing a DOM tree as a single node in the cycle collector graph.}}&lt;br /&gt;
** A good bit of investigation and experimentation was done here, but it&#039;s a harder problem than we believed it would be, and security bug fixing took precedence over completing this.&lt;br /&gt;
* {{miss|New DOM bindings for a HTML Element.}}&lt;br /&gt;
** 95% done, but didn&#039;t get reviews in time for the end of the quarter, and even if we had gotten that, we would not land this a week before branching for 19. We&#039;ll finish this up early in Q4.&lt;br /&gt;
&lt;br /&gt;
=== WebAPI ===&lt;br /&gt;
* {{done|Implement cookie-jars for cookies, IndexedDB, localStorage, permission manager and appcache ({{bug|756644}})}}&lt;br /&gt;
* {{done|Implement app:// protocol (part of implementing trusted apps, {{bug|769350}})}}&lt;br /&gt;
* {{done|Finalize multiprocess blob support for IndexedDB, DeviceStorage and Message Manager ({{bug|759427}})}}&lt;br /&gt;
* {{deferred|Temporary storage for IndexedDB ({{bug|785884}})}}&lt;br /&gt;
* {{deferred|Implement unified offline storage quota system, putting IndexedDB and localStorage under this quota system ({{bug|767944}})}}&lt;br /&gt;
* {{done|Zip file contents support using blobs ({{bug|772434}})}}&lt;br /&gt;
* {{done|DeviceStorage improvements (expose available (free) size for each device storage, storage[x].removable ({{bug|765498}})}}&lt;br /&gt;
* {{deferred|FileHandle [[WebAPI/FileHandleAPI#ToDo | improvements]]}}&lt;br /&gt;
* {{done|DeviceStorage onchange notifications ({{bug|763976}})}}&lt;br /&gt;
* {{deferred|DeviceStorage editable features ({{bug|752724}})}}&lt;br /&gt;
* {{done|String encoding/decoding API ({{bug|764234}})}} (completed with community help)&lt;br /&gt;
&lt;br /&gt;
=== JS  ===&lt;br /&gt;
&lt;br /&gt;
*{{done|Land IonMonkey}}&lt;br /&gt;
*{{miss|Incremental sweeping by compartment}} [{{bug|780960}}] - not done but is very close to done.&lt;br /&gt;
*{{miss|Generational GC: get automated safety checks running and green}}&lt;br /&gt;
*{{miss|Finish properties/elements split}}&lt;br /&gt;
*{{done|ES6: direct proxies}} [{{bug|703537}}]&lt;br /&gt;
*{{miss|ES6: modules}} [{{bug|568953}}]&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
* {{done| Preliminary AccessFu support in B2G.}}&lt;br /&gt;
** not landed (targeting v2)&lt;br /&gt;
* {{deferred| TTS Web API}}&lt;br /&gt;
** {{done| Implementation of TTS for b2g. Focus here morphed to just getting what we need for the B2G goal, and helping with B2G blockers (crash reporting work).}}&lt;br /&gt;
* {{miss| Performance: add two additional measures of a11y&#039;s effect on perf. Additionally, show measurable perf increase of at least 10% on two measures.}}&lt;br /&gt;
** Minor performance work landed but there was no precise measuring.&lt;br /&gt;
&lt;br /&gt;
=== Perf ===&lt;br /&gt;
* {{prev|{{nbug|736144}}: Async local storage via blocking pageload}}&lt;br /&gt;
* {{done|{{nbug|563742}}: provide js file api (in workers) for all supported platforms.}}&lt;br /&gt;
* {{prev|{{nbug|662397}}: Reorder xul.dll on windows to speed up startup}}&lt;br /&gt;
* {{prev|{{nbug|662444}}: call exit(0) on shutdown}}&lt;br /&gt;
* {{prev|{{nbug|661881}}: Bundle about-telemetry extension to ship with Firefox}}&lt;br /&gt;
* {{ok|{{nbug|769241}}: Make libunwind work on ARM}}&lt;br /&gt;
* {{prev|Prevent, to a reasonable extent, background tabs from starving the main thread}}&lt;br /&gt;
* {{done|{{nbug|770317}}: Track disk + network by thread on testing infrastructure}}&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
* {{miss|Remove all synchronous disk cache APIs, or at least disable their use on the main thread, on mozilla-central.}}&lt;br /&gt;
** Nick Hurley and Michal Novotny will lead this effort.&lt;br /&gt;
** We just didn&#039;t get this done, lots of complications.&lt;br /&gt;
* {{done|{{nbug|766973}}: Don&#039;t allow synchronous DNS resolution from the main thread.}}&lt;br /&gt;
** Josh Aas will lead this effort.&lt;br /&gt;
** We will not be able to stop the Java plugin from being able to do proxy resolution that may result in DNS resolution on the main thread, but all other cases will be taken care of and a plan is in place for Java.&lt;br /&gt;
* {{miss|{{nbug|105843}}: Land code to not necessarily delete the cache after unclean shut-down on mozilla-central.}}&lt;br /&gt;
** Nick Hurley and Michal Novotny will lead this effort.&lt;br /&gt;
** Brian Bondy is helping with this.&lt;br /&gt;
** We just won&#039;t get this done in time.&lt;br /&gt;
* {{done|Have Stone Ridge reliably reporting basic performance results to graph server for all three top-tier platforms.}}&lt;br /&gt;
** Nick Hurley will lead this effort.&lt;br /&gt;
* {{miss|{{nbug|768705}}, {{nbug|704447}}, {{nbug|766817}}: Fix some remaining significant WebSockets bugs.}}&lt;br /&gt;
** Jason Duell will lead this effort.&lt;br /&gt;
** Priority given to B2G-specific efforts that came up, this goal was abandoned.&lt;br /&gt;
* {{done|{{nbug|702122}}: Land a DASH for WebM implementation in mozilla-central.}}&lt;br /&gt;
** Steve Workman will lead this effort.&lt;br /&gt;
** Landed support for loading video via DASH and video switching. Haven&#039;t actually landed an adaptive algorithm yet.&lt;br /&gt;
* {{done|{{nbug|737470}}: Ship SPDY v3 on by default.}}&lt;br /&gt;
** Patrick McManus will lead this effort.&lt;br /&gt;
* {{miss|Resolve all networking security bugs that received a designation of sg:moderate or higher more than six weeks ago. This is a permanent goal for the group.}}&lt;br /&gt;
** Brian Smith will lead this effort.&lt;br /&gt;
** Priority given to B2G-specific efforts that came up, this goal was abandoned. We only have one applicable bug remaining, however.&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
=== Mobile  ===&lt;br /&gt;
* {{done|{{nbug|741808}} turn on safe browsing}}&lt;br /&gt;
* {{done|{{nbug|786380}} improve updater}}&lt;br /&gt;
* {{done|{{nbug|759945}} h264 support for ICS/JB}}&lt;br /&gt;
* {{done|{{nbug|687267}} Flash support on Honeycomb}}&lt;br /&gt;
&lt;br /&gt;
=== B2G ===&lt;br /&gt;
&lt;br /&gt;
=== Research ===&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Snappy&amp;diff=482269</id>
		<title>Performance/Snappy</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Snappy&amp;diff=482269"/>
		<updated>2012-10-23T23:50:36Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Bug Tracking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Project &amp;quot;Snappy&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
Project Snappy will make improvements to Firefox desktop responsiveness by completing smaller, isolated pieces of work.&lt;br /&gt;
&lt;br /&gt;
This project is a responsiveness equivalent of [[Performance/MemShrink]].&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
* Code that impacts the responsiveness of the Firefox desktop browser&lt;br /&gt;
* Out of scope&lt;br /&gt;
** Major architectural changes such as electrolysis (e10s) and supersnappy &lt;br /&gt;
** Firefox mobile, apps WebRT, B2G&lt;br /&gt;
** Development of performance benchmarks&lt;br /&gt;
** UI changes for perceived performance&lt;br /&gt;
&lt;br /&gt;
==Projects==&lt;br /&gt;
&lt;br /&gt;
* Temporary &amp;amp; Severe Browser Hangs&lt;br /&gt;
* Content Responsiveness (intermittent hangs)&lt;br /&gt;
* [[Performance/Snappy/Startup&amp;amp;Shutdown | Start-up &amp;amp; Shutdown]]&lt;br /&gt;
* Tools&lt;br /&gt;
* Add-on and Web page introduced slowness&lt;br /&gt;
* Page load&lt;br /&gt;
* [[Performance/Snappy/Tabstrip | Tabstrip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
{| class=&amp;quot;wikitable fullwidth-table&amp;quot;&lt;br /&gt;
 ! Communication Type !! Mechanism !! Audience&lt;br /&gt;
 |-&lt;br /&gt;
 | Announcements || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] and [https://lists.mozilla.org/listinfo/dev-planning dev-planning] lists || all&lt;br /&gt;
 |-&lt;br /&gt;
 | General discussion || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] list || devs&lt;br /&gt;
 |-&lt;br /&gt;
 | Meetings || Alternate Thursdays, 11am PT&lt;br /&gt;
{{conf|95346}}&lt;br /&gt;
* Vidyo: PB&amp;amp;J&lt;br /&gt;
* IRC: [irc://irc.mozilla.org/perf #perf]&lt;br /&gt;
* Etherpad: [https://etherpad.mozilla.org/snappy snappy] (copied to wiki after the meeting) &lt;br /&gt;
|| all&lt;br /&gt;
 |-&lt;br /&gt;
 | Meeting summaries || [[Performance/Snappy | this wiki]] and [https://blog.mozilla.org/tglek/ Taras Glek&#039;s blog] || all &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Press===&lt;br /&gt;
* May 14, 2012 - [http://www.pcworld.com/article/255569/firefox_13_gets_a_triple_shot_of_speed_through_mozillas_project_snappy.html PCWorld: Firefox 13 Gets a Triple Shot of Speed Through Mozilla&#039;s &#039;Project Snappy&#039;]&lt;br /&gt;
* May 11, 2012 - [http://www.webpronews.com/mozilla-makes-firefox-13-super-speedy-2012-05 WebProNews: Mozilla Makes Firefox 13 Super Speedy]&lt;br /&gt;
&lt;br /&gt;
===Blog Posts===&lt;br /&gt;
* Sep 22, 2012 - [http://msujaws.wordpress.com/2012/09/22/firefox-performancesnappy-work-week-warsaw-edition/ Jared Wein: Firefox Performance/Snappy Work Week: Warsaw edition]&lt;br /&gt;
* Sep 18, 2012 - [https://blog.mozilla.org/tglek/2012/09/18/snappy-in-warsaw-pierogy-fueled-hackfest/ Taras Glek: Snappy in Warsaw: pierogy-fueled hackfest]&lt;br /&gt;
* May 11, 2012 - [https://hacks.mozilla.org/2012/05/getting-snappy-performance-optimisations-in-firefox-13/ Lawrence Mandel: Getting snappy – performance optimizations in Firefox 13]&lt;br /&gt;
* Mar 14, 2012 - [http://autonome.wordpress.com/2012/03/14/firefox-11-is-smaller-and-faster/ Dietrich Ayala: Firefox 11 is Smaller and Faster]&lt;br /&gt;
* Feb 8, 2012 - [http://www.brianbondy.com/blog/id/127/ Brian Bondy: Snappy optimizations for faster Firefox startup]&lt;br /&gt;
&lt;br /&gt;
=== Minutes and Progress Reports  ===&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color: rgb(221, 221, 221);&amp;quot; colspan=&amp;quot;2&amp;quot; | 2012 &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Thursday, October 18, 2012 - [[Performance/Snappy/2012-10-18| Minutes]], [https://blog.mozilla.org/tglek/2012/10/18/snappy-41/ Snappy #41]&lt;br /&gt;
* Thursday, October 11, 2012 - [[Performance/Snappy/2012-10-11| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/10/15/snappy-40-faster-tabswitching-startup-analysis/ Snappy #40: Faster tabswitching, startup analysis]&lt;br /&gt;
* Thursday, October 4, 2012 - [[Performance/Snappy/2012-10-04| Minutes]], [https://blog.mozilla.org/tglek/2012/10/04/snappy-39/ Snappy #39]&lt;br /&gt;
* Thursday, September 27, 2012 - [[Performance/Snappy/2012-09-27| Status (no meeting)]]&lt;br /&gt;
* Thursday, September 20, 2012 - [[Performance/Snappy/2012-09-20| Minutes]]&lt;br /&gt;
* Snappy work week Sep 10-14. You may want to read [https://blog.mozilla.org/tglek/2012/09/18/snappy-in-warsaw-pierogy-fueled-hackfest/ Taras&#039; summary]&lt;br /&gt;
* Thursday, September 6, 2012 - [[Performance/Snappy/2012-09-06| Minutes]]&lt;br /&gt;
* Thursday, August 30, 2012 - [https://blog.mozilla.org/tglek/2012/09/04/snappy-38/ Snappy #38]&lt;br /&gt;
* Thursday, August 23, 2012 - [[Performance/Snappy/2012-08-23| Minutes]], Progress report: [https://blog.mozilla.org/tglek/2012/08/23/snappy-37/ Snappy #37]&lt;br /&gt;
* Thursday, August 16, 2012 - [[Performance/Snappy/2012-08-16| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/08/16/snappy-36/ Snappy #36]&lt;br /&gt;
* Thursday, August 9, 2012 - [[Performance/Snappy/2012-08-09| Minutes]], [https://blog.mozilla.org/tglek/2012/08/14/snappy-for-aug-9/ Snappy for Aug 9]&lt;br /&gt;
* Thursday, August 2, 2012 - [[Performance/Snappy/2012-08-02| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/08/06/snappy-aug-2/ Snappy, Aug 2]&lt;br /&gt;
* Thursday, July 26, 2012 - [[Performance/Snappy/2012-07-26| Minutes]], [https://blog.mozilla.org/tglek/2012/07/26/snappy-july-26-go-try-the-gecko-profiler/ Snappy, July 26: Go Try The Gecko Profiler!]&lt;br /&gt;
* Thursday, July 19, 2012 - [[Performance/Snappy/2012-07-19| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/07/23/snappy-july-19-telemetry-experiments/ Snappy, July 19: Telemetry Experiments]&lt;br /&gt;
* Thursday, July 12, 2012 - [[Performance/Snappy/2012-07-12| Minutes]]&lt;br /&gt;
* Thursday, July 5, 2012 - [[Performance/Snappy/2012-07-05| Status (no meeting)]]&lt;br /&gt;
* Thursday, June 28, 2012 - [[Performance/Snappy/2012-06-28| Minutes]]&lt;br /&gt;
* Thursday, June 21, 2012 - [[Performance/Snappy/2012-06-21| Status (no meeting)]]&lt;br /&gt;
* Thursday, June 14, 2012 - [[Performance/Snappy/2012-06-14| Minutes]]&lt;br /&gt;
* Thursday, June 7, 2012 - [[Performance/Snappy/2012-06-07| Status (no meeting)]]&lt;br /&gt;
* Thursday, May 31, 2012 - [[Performance/Snappy/2012-05-31| Minutes]]&lt;br /&gt;
* Thursday, May 24, 2012 - [[Performance/Snappy/2012-05-24| Status (no meeting)]]&lt;br /&gt;
* Thursday, May 17, 2012 - [[Performance/Snappy/2012-05-17| Minutes]]&lt;br /&gt;
* Thursday, May 10, 2012 - [[Performance/Snappy/2012-05-10| Status (no meeting)]]&lt;br /&gt;
* Thursday, May 3, 2012 - [[Performance/Snappy/2012-05-03| Minutes]]&lt;br /&gt;
* Thursday, April 26, 2012 - [[Performance/Snappy/2012-04-26| Minutes]]&lt;br /&gt;
* Thursday, April 19, 2012 - [[Performance/Snappy/2012-04-19| Minutes]]&lt;br /&gt;
* Thursday, April 12, 2012 - [[Performance/Snappy/2012-04-12| Minutes]]&lt;br /&gt;
* Thursday, April 5, 2012 - [[Performance/Snappy/2012-04-05| Minutes]]&lt;br /&gt;
* Thursday, March 29, 2012 - [[Performance/Snappy/2012-03-29| Minutes]]&lt;br /&gt;
* Thursday, March 22, 2012 - [[Performance/Snappy/2012-03-22| Minutes]]&lt;br /&gt;
* Thursday, March 15, 2012 - [[Performance/Snappy/2012-03-15| Minutes]]&lt;br /&gt;
* Thursday, March 8, 2012 - [[Performance/Snappy/2012-03-08| Minutes]]&lt;br /&gt;
* Thursday, March 1, 2012 - [[Performance/Snappy/2012-03-01| Minutes]]&lt;br /&gt;
* Thursday, February 23, 2012 - [[Performance/Snappy/2012-02-23| Minutes]]&lt;br /&gt;
* Thursday, February 16, 2012 - [[Performance/Snappy/2012-02-16| Minutes]]&lt;br /&gt;
* Thursday, February 9, 2012 - [[Performance/Snappy/2012-02-09| Minutes]]&lt;br /&gt;
* Thursday, February 2, 2012 meeting cancelled due to travel&lt;br /&gt;
* Thursday, January 26, 2012 - [[Performance/Snappy/2012-01-26| Minutes]]&lt;br /&gt;
* Thursday, January 19, 2012 - [[Performance/Snappy/2012-01-19| Minutes]]&lt;br /&gt;
* Thursday, January 12, 2012 - [[Performance/Snappy/2012-01-12| Minutes]]&lt;br /&gt;
* Thursday, January 5, 2012 meeting cancelled due to holidays&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color: rgb(221, 221, 221);&amp;quot; | 2011 &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Thursday, December 29, 2011 - meeting cancelled due to holidays&lt;br /&gt;
* Thursday, December 22, 2011 - [[Performance/Snappy/2011-12-22| Minutes]], [https://blog.mozilla.org/tglek/2011/12/22/snappy-dec-22/ Progress report]&lt;br /&gt;
* Thursday, December 15, 2011 - [[Performance/Snappy/2011-12-15| Minutes]], [https://blog.mozilla.org/tglek/2011/12/16/snappy-update-for-dec-15/ Progress report]&lt;br /&gt;
* Thursday, December 8, 2011 - [[Performance/Snappy/2011-12-08| Minutes]], [https://blog.mozilla.org/tglek/2011/12/13/snappy-summary-for-dec-8/ Progress report]&lt;br /&gt;
* Thursday, December 1, 2011 - [[Performance/Snappy/2011-12-01| Minutes]], [https://blog.mozilla.org/tglek/2011/12/01/introducing-project-snappy/ Progress report]&lt;br /&gt;
* Friday, November 18, 2011 - [[Performance/Snappy/2011-11-18| Minutes]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bug Tracking ==&lt;br /&gt;
Bugs tracked by the Snappy project are prioritized by adding one of [Snappy:P1], [Snappy:P2], or [Snappy:P3] to the whiteboard. Use whiteboard [Snappy] tag to nominate bugs.&lt;br /&gt;
&lt;br /&gt;
* [[Performance/Snappy/Dashboard | Snappy dashboard]] - shows recent Snappy changes&lt;br /&gt;
&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp&amp;amp;query_format=advanced&amp;amp;list_id=577353&amp;amp;status_whiteboard=Snappy%5b%5e%3A%5d&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE Unprioritized Snappy bugs].  These are triaged occasionally.&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;query_format=advanced&amp;amp;status_whiteboard=Snappy%3AP1&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;order=bugs.bug_id Snappy:P1 bugs].  These are discussed regularly in meetings.&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy:p1]&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;status&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;query_format=advanced&amp;amp;status_whiteboard=Snappy%3AP2&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;order=bugs.bug_id Snappy:P2 bugs].  These are discussed occasionally in meetings.  P2 is the default priority.&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy:p2]&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;status&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;query_format=advanced&amp;amp;status_whiteboard=Snappy%3AP3&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;order=bugs.bug_id Snappy:P3 bugs].  These are discussed rarely in meetings.&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy:p3]&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;status&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other interesting bugs/lists.&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp;query_format=advanced;status_whiteboard=telemetry-needed;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;resolution=---;resolution=DUPLICATE;list_id=2435528 bugs that need telemetry probes implemented]&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=698500 visible unresponsiveness metabug]&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=699820 sync storage main-thread-io metabug]&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=698919 cycle collector responsiveness metabug]&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
* 50ms responsiveness when typing in a textbox ({{bug|703668}})&lt;br /&gt;
* 60fps animations on UI operations, i.e. closing tabs ({{bug|702509}})&lt;br /&gt;
* track above via telemetry&lt;br /&gt;
&lt;br /&gt;
more goal thinking [https://etherpad.mozilla.org/desktop-responsiveness responsiveness goals]&lt;br /&gt;
&lt;br /&gt;
My (Asa) proposed core measures:&lt;br /&gt;
* Startup on par with IE and Chrome&lt;br /&gt;
* 50ms responsiveness for all non-animated primary UI interactions (list TBD)&lt;br /&gt;
* &amp;quot;Above the fold&amp;quot; uncached page load on par with IE and Chrome&lt;br /&gt;
* Back/Forward navigation as fast as Opera.&lt;br /&gt;
&lt;br /&gt;
== Snappy Addons ==&lt;br /&gt;
If you discover an addon that may be causing responsiveness issues&lt;br /&gt;
# Capture a profile of the jank with [https://developer.mozilla.org/en/Performance/Profiling_with_the_Built-in_Profiler SPS Profiler].&lt;br /&gt;
# File a bug under Tech Evangelism/Add-ons. Describe the issue, steps to reproduce. [https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism bugzilla link].&lt;br /&gt;
# Upload your SPS profile + post link in bug&lt;br /&gt;
# Contact addon author. Authors are usually happy to make their addons more performant.&lt;br /&gt;
# If the developer isn&#039;t responsive we will get AMO team involved to consider delisting the offending addon version.&lt;br /&gt;
&lt;br /&gt;
See {{bug|777397}} for an example of above process.&lt;br /&gt;
&lt;br /&gt;
== Wins == &lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;target_milestone&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
;Firefox 16&lt;br /&gt;
* [http://bit.ly/LOFsXE All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 15&lt;br /&gt;
* Start-up optimization - remove prefetch files (backed out in Firefox 16)&lt;br /&gt;
* No more font enumeration&lt;br /&gt;
* [http://mzl.la/Iwq9xT All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 14&lt;br /&gt;
* IE profile migrator rewrite&lt;br /&gt;
* Async favicons&lt;br /&gt;
* Slow SQL Telemetry&lt;br /&gt;
* [http://bit.ly/GGBpJ5 All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 13&lt;br /&gt;
* Tabs on demand&lt;br /&gt;
* CC/GC pause reductions&lt;br /&gt;
* Start-up optimizations&lt;br /&gt;
* Front-end Telemetry&lt;br /&gt;
* [http://j.mp/wXnf5x All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 12&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;about:jank&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Inline autocomplete&lt;br /&gt;
* Slow SQL Telemetry&lt;br /&gt;
* [http://j.mp/AhayWF All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 11&lt;br /&gt;
* [http://j.mp/ypxFzj All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
==Snappy TODO==&lt;br /&gt;
===Firefox===&lt;br /&gt;
* {{nbug|712478}}: interactivity heuristics (to reduce jank while playing video, scrolling)&lt;br /&gt;
* {{nbug|650968}}: fix personas (startup slowdown, possibly other jank)&lt;br /&gt;
* {{nbug|729330}}: fix addon manager (startup slowdown)&lt;br /&gt;
* {{nbug|699820}}: fix remaining main thread sqlite (significant source of jank)&lt;br /&gt;
* {{nbug|743069}}: fix our tab bar responsiveness (switching tabs, tab animations, etc. We lag other browsers in this area)&lt;br /&gt;
&lt;br /&gt;
===Platform===&lt;br /&gt;
* {{nbug|627635}} Make localstorage async (Don&#039;t allow web pages to jank us)&lt;br /&gt;
* {{nbug|692255}} get rid of windows prefetch (so we can enable library reordering for a big startup win)&lt;br /&gt;
* {{nbug|722243}} cancellable sql queries (Cancel background queries to improve interactive performance)&lt;br /&gt;
* {{nbug|692557}} Fix GFX acceleration lag (Currently GFX acceleration can result in a severe slowdown over non-accelerated case)&lt;br /&gt;
* {{nbug|705594}} Font enumeration lag (This can add minutes of lag on some windows/mac machines)&lt;br /&gt;
* OFTC on desktop (Needed for smooth animations)&lt;br /&gt;
* Necko improvements (cache, connection pools, etc)&lt;br /&gt;
&lt;br /&gt;
== Current Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* Event Tracing: http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/EventTracer.cpp#38&lt;br /&gt;
** Fires events at main thread event loop from background thread, measures response time&lt;br /&gt;
** Produces output of the form MOZ_EVENT_TRACE sample &amp;lt;timestamp&amp;gt; &amp;lt;duration&amp;gt;&lt;br /&gt;
** Being rolled out as part of Talos Tp5 {{bug|631571}}, will produce a responsiveness metric for &amp;quot;responsiveness while running Tp5&amp;quot;&lt;br /&gt;
* Peptest: {{bug|674606}}&lt;br /&gt;
** Responsiveness regression test harness&lt;br /&gt;
** Allows devs to write tests that perform various actions and tests responsiveness using EventTracer&lt;br /&gt;
** [https://wiki.mozilla.org/Auto-tools/Projects/peptest Project page] contains everything you need to know&lt;br /&gt;
** Run &#039;make peptest&#039; from your object directory to run the tests (see [https://wiki.mozilla.org/Auto-tools/Projects/peptest#Running_Tests running tests] for command line instructions)&lt;br /&gt;
&lt;br /&gt;
* [http://people.mozilla.org/~xstevens/telemetry/telemetry-histogram-aggregates-20111103-20111116.txt Telemetry dump for ff11 from November 17]&lt;br /&gt;
&lt;br /&gt;
* [http://graphs-new.mozilla.org/graph.html#tests=&amp;amp;#91;&amp;amp;#91;130,1,1&amp;amp;#93;,&amp;amp;#91;130,1,12&amp;amp;#93;,&amp;amp;#91;130,1,13&amp;amp;#93;,&amp;amp;#91;130,1,21&amp;amp;#93;,&amp;amp;#91;130,1,22&amp;amp;#93;&amp;amp;#93;&amp;amp;sel=1322091900253,1322167344714&amp;amp;displayrange=7&amp;amp;datatype=running Talos responsiveness tests] - for details see {{bug|631571}}&lt;br /&gt;
&lt;br /&gt;
== Additional Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* Have metrics do continuous trend analysis to see if our telemetry stats are getting better over time.&lt;br /&gt;
&lt;br /&gt;
== arewesnappyyet.com ==&lt;br /&gt;
* This should use our telemetry data to tell us whether we are meeting our expectations and how far off we are&lt;br /&gt;
* {{bug|703669}} tracks the implementation of this site&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
Placeholder section for QA and testing.&lt;br /&gt;
&lt;br /&gt;
; [https://wiki.mozilla.org/Performance/Snappy/Testing:Sprint_1#Phase_1:_UI_Interactions Sprint 1 Phase 1]&lt;br /&gt;
&lt;br /&gt;
; Takeaways from [https://wiki.mozilla.org/Performance/Snappy/2011-12-01 2011-12-01 Meeting]&lt;br /&gt;
* Goal of Project:&lt;br /&gt;
** Big hangs (~30s) are a problem, but small hangs (~5s) may be a bigger win&lt;br /&gt;
** Identify where we hang, why we hang, and plug those holes&lt;br /&gt;
* Things on Devs Radar:&lt;br /&gt;
** Meta Bugs: visible responsiveness ({{bug|698500}}), sync storage ({{bug|699820}}), cycle collector ({{bug|698919}})&lt;br /&gt;
** Animation hangs are most visible&lt;br /&gt;
** Windows, Mac, Linux are all unique -- Windows is P1 for the project &lt;br /&gt;
** [http://benoitgirard.wordpress.com/2011/11/08/firefox-built-in-profiler/ Firefox Built-in Profiler]: late Q1&#039;2012&lt;br /&gt;
** Chromhang Bugs: {{bug|705761}}, {{bug|705287}}, {{bug|705258}}, {{bug|705594}}, {{bug|704933}}, {{bug|699051}}&lt;br /&gt;
** Small Jank: using &#039;&#039;refresh driver&#039;&#039; to measure refresh-rate performance (ie. throbber, progress bar, etc -- Asa has more ideas)&lt;br /&gt;
** Measuring Snappiness: [http://j.mp/rPGyFb Telemetry use cases] &lt;br /&gt;
** Metrics/Automation: for trend-analysis, finding regressions with Telemetry&lt;br /&gt;
* Where does QA fit in?&lt;br /&gt;
** P1: [https://etherpad.mozilla.org/desktop-responsiveness Desktop responsiveness] competitive testing&lt;br /&gt;
** many of these problems need stack traces (something Telemetry cannot do)&lt;br /&gt;
** crowd-sourcing use cases where we are less Snappy&lt;br /&gt;
** A-B testing with other browsers (versions of Firefox, competitor browsers)&lt;br /&gt;
** Ownership of Snappy P1s&lt;br /&gt;
** Caching issues should have patches landed in the next week or so&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Performance/Snappy&amp;diff=482267</id>
		<title>Performance/Snappy</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Performance/Snappy&amp;diff=482267"/>
		<updated>2012-10-23T23:49:42Z</updated>

		<summary type="html">&lt;p&gt;Tglek: /* Bug Tracking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Project &amp;quot;Snappy&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
Project Snappy will make improvements to Firefox desktop responsiveness by completing smaller, isolated pieces of work.&lt;br /&gt;
&lt;br /&gt;
This project is a responsiveness equivalent of [[Performance/MemShrink]].&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
* Code that impacts the responsiveness of the Firefox desktop browser&lt;br /&gt;
* Out of scope&lt;br /&gt;
** Major architectural changes such as electrolysis (e10s) and supersnappy &lt;br /&gt;
** Firefox mobile, apps WebRT, B2G&lt;br /&gt;
** Development of performance benchmarks&lt;br /&gt;
** UI changes for perceived performance&lt;br /&gt;
&lt;br /&gt;
==Projects==&lt;br /&gt;
&lt;br /&gt;
* Temporary &amp;amp; Severe Browser Hangs&lt;br /&gt;
* Content Responsiveness (intermittent hangs)&lt;br /&gt;
* [[Performance/Snappy/Startup&amp;amp;Shutdown | Start-up &amp;amp; Shutdown]]&lt;br /&gt;
* Tools&lt;br /&gt;
* Add-on and Web page introduced slowness&lt;br /&gt;
* Page load&lt;br /&gt;
* [[Performance/Snappy/Tabstrip | Tabstrip]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
{| class=&amp;quot;wikitable fullwidth-table&amp;quot;&lt;br /&gt;
 ! Communication Type !! Mechanism !! Audience&lt;br /&gt;
 |-&lt;br /&gt;
 | Announcements || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] and [https://lists.mozilla.org/listinfo/dev-planning dev-planning] lists || all&lt;br /&gt;
 |-&lt;br /&gt;
 | General discussion || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] list || devs&lt;br /&gt;
 |-&lt;br /&gt;
 | Meetings || Alternate Thursdays, 11am PT&lt;br /&gt;
{{conf|95346}}&lt;br /&gt;
* Vidyo: PB&amp;amp;J&lt;br /&gt;
* IRC: [irc://irc.mozilla.org/perf #perf]&lt;br /&gt;
* Etherpad: [https://etherpad.mozilla.org/snappy snappy] (copied to wiki after the meeting) &lt;br /&gt;
|| all&lt;br /&gt;
 |-&lt;br /&gt;
 | Meeting summaries || [[Performance/Snappy | this wiki]] and [https://blog.mozilla.org/tglek/ Taras Glek&#039;s blog] || all &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Press===&lt;br /&gt;
* May 14, 2012 - [http://www.pcworld.com/article/255569/firefox_13_gets_a_triple_shot_of_speed_through_mozillas_project_snappy.html PCWorld: Firefox 13 Gets a Triple Shot of Speed Through Mozilla&#039;s &#039;Project Snappy&#039;]&lt;br /&gt;
* May 11, 2012 - [http://www.webpronews.com/mozilla-makes-firefox-13-super-speedy-2012-05 WebProNews: Mozilla Makes Firefox 13 Super Speedy]&lt;br /&gt;
&lt;br /&gt;
===Blog Posts===&lt;br /&gt;
* Sep 22, 2012 - [http://msujaws.wordpress.com/2012/09/22/firefox-performancesnappy-work-week-warsaw-edition/ Jared Wein: Firefox Performance/Snappy Work Week: Warsaw edition]&lt;br /&gt;
* Sep 18, 2012 - [https://blog.mozilla.org/tglek/2012/09/18/snappy-in-warsaw-pierogy-fueled-hackfest/ Taras Glek: Snappy in Warsaw: pierogy-fueled hackfest]&lt;br /&gt;
* May 11, 2012 - [https://hacks.mozilla.org/2012/05/getting-snappy-performance-optimisations-in-firefox-13/ Lawrence Mandel: Getting snappy – performance optimizations in Firefox 13]&lt;br /&gt;
* Mar 14, 2012 - [http://autonome.wordpress.com/2012/03/14/firefox-11-is-smaller-and-faster/ Dietrich Ayala: Firefox 11 is Smaller and Faster]&lt;br /&gt;
* Feb 8, 2012 - [http://www.brianbondy.com/blog/id/127/ Brian Bondy: Snappy optimizations for faster Firefox startup]&lt;br /&gt;
&lt;br /&gt;
=== Minutes and Progress Reports  ===&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color: rgb(221, 221, 221);&amp;quot; colspan=&amp;quot;2&amp;quot; | 2012 &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Thursday, October 18, 2012 - [[Performance/Snappy/2012-10-18| Minutes]], [https://blog.mozilla.org/tglek/2012/10/18/snappy-41/ Snappy #41]&lt;br /&gt;
* Thursday, October 11, 2012 - [[Performance/Snappy/2012-10-11| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/10/15/snappy-40-faster-tabswitching-startup-analysis/ Snappy #40: Faster tabswitching, startup analysis]&lt;br /&gt;
* Thursday, October 4, 2012 - [[Performance/Snappy/2012-10-04| Minutes]], [https://blog.mozilla.org/tglek/2012/10/04/snappy-39/ Snappy #39]&lt;br /&gt;
* Thursday, September 27, 2012 - [[Performance/Snappy/2012-09-27| Status (no meeting)]]&lt;br /&gt;
* Thursday, September 20, 2012 - [[Performance/Snappy/2012-09-20| Minutes]]&lt;br /&gt;
* Snappy work week Sep 10-14. You may want to read [https://blog.mozilla.org/tglek/2012/09/18/snappy-in-warsaw-pierogy-fueled-hackfest/ Taras&#039; summary]&lt;br /&gt;
* Thursday, September 6, 2012 - [[Performance/Snappy/2012-09-06| Minutes]]&lt;br /&gt;
* Thursday, August 30, 2012 - [https://blog.mozilla.org/tglek/2012/09/04/snappy-38/ Snappy #38]&lt;br /&gt;
* Thursday, August 23, 2012 - [[Performance/Snappy/2012-08-23| Minutes]], Progress report: [https://blog.mozilla.org/tglek/2012/08/23/snappy-37/ Snappy #37]&lt;br /&gt;
* Thursday, August 16, 2012 - [[Performance/Snappy/2012-08-16| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/08/16/snappy-36/ Snappy #36]&lt;br /&gt;
* Thursday, August 9, 2012 - [[Performance/Snappy/2012-08-09| Minutes]], [https://blog.mozilla.org/tglek/2012/08/14/snappy-for-aug-9/ Snappy for Aug 9]&lt;br /&gt;
* Thursday, August 2, 2012 - [[Performance/Snappy/2012-08-02| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/08/06/snappy-aug-2/ Snappy, Aug 2]&lt;br /&gt;
* Thursday, July 26, 2012 - [[Performance/Snappy/2012-07-26| Minutes]], [https://blog.mozilla.org/tglek/2012/07/26/snappy-july-26-go-try-the-gecko-profiler/ Snappy, July 26: Go Try The Gecko Profiler!]&lt;br /&gt;
* Thursday, July 19, 2012 - [[Performance/Snappy/2012-07-19| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/07/23/snappy-july-19-telemetry-experiments/ Snappy, July 19: Telemetry Experiments]&lt;br /&gt;
* Thursday, July 12, 2012 - [[Performance/Snappy/2012-07-12| Minutes]]&lt;br /&gt;
* Thursday, July 5, 2012 - [[Performance/Snappy/2012-07-05| Status (no meeting)]]&lt;br /&gt;
* Thursday, June 28, 2012 - [[Performance/Snappy/2012-06-28| Minutes]]&lt;br /&gt;
* Thursday, June 21, 2012 - [[Performance/Snappy/2012-06-21| Status (no meeting)]]&lt;br /&gt;
* Thursday, June 14, 2012 - [[Performance/Snappy/2012-06-14| Minutes]]&lt;br /&gt;
* Thursday, June 7, 2012 - [[Performance/Snappy/2012-06-07| Status (no meeting)]]&lt;br /&gt;
* Thursday, May 31, 2012 - [[Performance/Snappy/2012-05-31| Minutes]]&lt;br /&gt;
* Thursday, May 24, 2012 - [[Performance/Snappy/2012-05-24| Status (no meeting)]]&lt;br /&gt;
* Thursday, May 17, 2012 - [[Performance/Snappy/2012-05-17| Minutes]]&lt;br /&gt;
* Thursday, May 10, 2012 - [[Performance/Snappy/2012-05-10| Status (no meeting)]]&lt;br /&gt;
* Thursday, May 3, 2012 - [[Performance/Snappy/2012-05-03| Minutes]]&lt;br /&gt;
* Thursday, April 26, 2012 - [[Performance/Snappy/2012-04-26| Minutes]]&lt;br /&gt;
* Thursday, April 19, 2012 - [[Performance/Snappy/2012-04-19| Minutes]]&lt;br /&gt;
* Thursday, April 12, 2012 - [[Performance/Snappy/2012-04-12| Minutes]]&lt;br /&gt;
* Thursday, April 5, 2012 - [[Performance/Snappy/2012-04-05| Minutes]]&lt;br /&gt;
* Thursday, March 29, 2012 - [[Performance/Snappy/2012-03-29| Minutes]]&lt;br /&gt;
* Thursday, March 22, 2012 - [[Performance/Snappy/2012-03-22| Minutes]]&lt;br /&gt;
* Thursday, March 15, 2012 - [[Performance/Snappy/2012-03-15| Minutes]]&lt;br /&gt;
* Thursday, March 8, 2012 - [[Performance/Snappy/2012-03-08| Minutes]]&lt;br /&gt;
* Thursday, March 1, 2012 - [[Performance/Snappy/2012-03-01| Minutes]]&lt;br /&gt;
* Thursday, February 23, 2012 - [[Performance/Snappy/2012-02-23| Minutes]]&lt;br /&gt;
* Thursday, February 16, 2012 - [[Performance/Snappy/2012-02-16| Minutes]]&lt;br /&gt;
* Thursday, February 9, 2012 - [[Performance/Snappy/2012-02-09| Minutes]]&lt;br /&gt;
* Thursday, February 2, 2012 meeting cancelled due to travel&lt;br /&gt;
* Thursday, January 26, 2012 - [[Performance/Snappy/2012-01-26| Minutes]]&lt;br /&gt;
* Thursday, January 19, 2012 - [[Performance/Snappy/2012-01-19| Minutes]]&lt;br /&gt;
* Thursday, January 12, 2012 - [[Performance/Snappy/2012-01-12| Minutes]]&lt;br /&gt;
* Thursday, January 5, 2012 meeting cancelled due to holidays&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color: rgb(221, 221, 221);&amp;quot; | 2011 &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Thursday, December 29, 2011 - meeting cancelled due to holidays&lt;br /&gt;
* Thursday, December 22, 2011 - [[Performance/Snappy/2011-12-22| Minutes]], [https://blog.mozilla.org/tglek/2011/12/22/snappy-dec-22/ Progress report]&lt;br /&gt;
* Thursday, December 15, 2011 - [[Performance/Snappy/2011-12-15| Minutes]], [https://blog.mozilla.org/tglek/2011/12/16/snappy-update-for-dec-15/ Progress report]&lt;br /&gt;
* Thursday, December 8, 2011 - [[Performance/Snappy/2011-12-08| Minutes]], [https://blog.mozilla.org/tglek/2011/12/13/snappy-summary-for-dec-8/ Progress report]&lt;br /&gt;
* Thursday, December 1, 2011 - [[Performance/Snappy/2011-12-01| Minutes]], [https://blog.mozilla.org/tglek/2011/12/01/introducing-project-snappy/ Progress report]&lt;br /&gt;
* Friday, November 18, 2011 - [[Performance/Snappy/2011-11-18| Minutes]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bug Tracking ==&lt;br /&gt;
Bugs tracked by the Snappy project are prioritized by adding one of [Snappy:P1], [Snappy:P2], or [Snappy:P3] to the whiteboard. Use whiteboard [Snappy] tag to nominate bugs.&lt;br /&gt;
&lt;br /&gt;
* [[Performance/Snappy/Dashboard | Snappy dashboard]] - shows recent Snappy changes&lt;br /&gt;
&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp&amp;amp;query_format=advanced&amp;amp;list_id=577353&amp;amp;status_whiteboard=Snappy%5b%5e%3A%5d&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE Unprioritized Snappy bugs].  These are triaged as developer free up.&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;query_format=advanced&amp;amp;status_whiteboard=Snappy%3AP1&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;order=bugs.bug_id Snappy:P1 bugs].  These are discussed regularly in meetings.&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy:p1]&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;status&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;query_format=advanced&amp;amp;status_whiteboard=Snappy%3AP2&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;order=bugs.bug_id Snappy:P2 bugs].  These are discussed occasionally in meetings.  P2 is the default priority.&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy:p2]&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;status&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&amp;amp;resolution=---&amp;amp;resolution=DUPLICATE&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;query_format=advanced&amp;amp;status_whiteboard=Snappy%3AP3&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;order=bugs.bug_id Snappy:P3 bugs].  These are discussed rarely in meetings.&lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy:p3]&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;status&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other interesting bugs/lists.&lt;br /&gt;
* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp;query_format=advanced;status_whiteboard=telemetry-needed;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;resolution=---;resolution=DUPLICATE;list_id=2435528 bugs that need telemetry probes implemented]&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=698500 visible unresponsiveness metabug]&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=699820 sync storage main-thread-io metabug]&lt;br /&gt;
* [https://bugzilla.mozilla.org/show_bug.cgi?id=698919 cycle collector responsiveness metabug]&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
* 50ms responsiveness when typing in a textbox ({{bug|703668}})&lt;br /&gt;
* 60fps animations on UI operations, i.e. closing tabs ({{bug|702509}})&lt;br /&gt;
* track above via telemetry&lt;br /&gt;
&lt;br /&gt;
more goal thinking [https://etherpad.mozilla.org/desktop-responsiveness responsiveness goals]&lt;br /&gt;
&lt;br /&gt;
My (Asa) proposed core measures:&lt;br /&gt;
* Startup on par with IE and Chrome&lt;br /&gt;
* 50ms responsiveness for all non-animated primary UI interactions (list TBD)&lt;br /&gt;
* &amp;quot;Above the fold&amp;quot; uncached page load on par with IE and Chrome&lt;br /&gt;
* Back/Forward navigation as fast as Opera.&lt;br /&gt;
&lt;br /&gt;
== Snappy Addons ==&lt;br /&gt;
If you discover an addon that may be causing responsiveness issues&lt;br /&gt;
# Capture a profile of the jank with [https://developer.mozilla.org/en/Performance/Profiling_with_the_Built-in_Profiler SPS Profiler].&lt;br /&gt;
# File a bug under Tech Evangelism/Add-ons. Describe the issue, steps to reproduce. [https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism bugzilla link].&lt;br /&gt;
# Upload your SPS profile + post link in bug&lt;br /&gt;
# Contact addon author. Authors are usually happy to make their addons more performant.&lt;br /&gt;
# If the developer isn&#039;t responsive we will get AMO team involved to consider delisting the offending addon version.&lt;br /&gt;
&lt;br /&gt;
See {{bug|777397}} for an example of above process.&lt;br /&gt;
&lt;br /&gt;
== Wins == &lt;br /&gt;
&amp;lt;bugzilla type=&amp;quot;count&amp;quot; display=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;whiteboard&amp;quot;: &amp;quot;[snappy&amp;quot;,&lt;br /&gt;
        &amp;quot;resolution&amp;quot;: &amp;quot;fixed&amp;quot;,&lt;br /&gt;
        &amp;quot;x_axis_field&amp;quot;: &amp;quot;target_milestone&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
;Firefox 16&lt;br /&gt;
* [http://bit.ly/LOFsXE All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 15&lt;br /&gt;
* Start-up optimization - remove prefetch files (backed out in Firefox 16)&lt;br /&gt;
* No more font enumeration&lt;br /&gt;
* [http://mzl.la/Iwq9xT All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 14&lt;br /&gt;
* IE profile migrator rewrite&lt;br /&gt;
* Async favicons&lt;br /&gt;
* Slow SQL Telemetry&lt;br /&gt;
* [http://bit.ly/GGBpJ5 All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 13&lt;br /&gt;
* Tabs on demand&lt;br /&gt;
* CC/GC pause reductions&lt;br /&gt;
* Start-up optimizations&lt;br /&gt;
* Front-end Telemetry&lt;br /&gt;
* [http://j.mp/wXnf5x All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 12&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;about:jank&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Inline autocomplete&lt;br /&gt;
* Slow SQL Telemetry&lt;br /&gt;
* [http://j.mp/AhayWF All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
;Firefox 11&lt;br /&gt;
* [http://j.mp/ypxFzj All fixed bugs]&lt;br /&gt;
&lt;br /&gt;
==Snappy TODO==&lt;br /&gt;
===Firefox===&lt;br /&gt;
* {{nbug|712478}}: interactivity heuristics (to reduce jank while playing video, scrolling)&lt;br /&gt;
* {{nbug|650968}}: fix personas (startup slowdown, possibly other jank)&lt;br /&gt;
* {{nbug|729330}}: fix addon manager (startup slowdown)&lt;br /&gt;
* {{nbug|699820}}: fix remaining main thread sqlite (significant source of jank)&lt;br /&gt;
* {{nbug|743069}}: fix our tab bar responsiveness (switching tabs, tab animations, etc. We lag other browsers in this area)&lt;br /&gt;
&lt;br /&gt;
===Platform===&lt;br /&gt;
* {{nbug|627635}} Make localstorage async (Don&#039;t allow web pages to jank us)&lt;br /&gt;
* {{nbug|692255}} get rid of windows prefetch (so we can enable library reordering for a big startup win)&lt;br /&gt;
* {{nbug|722243}} cancellable sql queries (Cancel background queries to improve interactive performance)&lt;br /&gt;
* {{nbug|692557}} Fix GFX acceleration lag (Currently GFX acceleration can result in a severe slowdown over non-accelerated case)&lt;br /&gt;
* {{nbug|705594}} Font enumeration lag (This can add minutes of lag on some windows/mac machines)&lt;br /&gt;
* OFTC on desktop (Needed for smooth animations)&lt;br /&gt;
* Necko improvements (cache, connection pools, etc)&lt;br /&gt;
&lt;br /&gt;
== Current Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* Event Tracing: http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/EventTracer.cpp#38&lt;br /&gt;
** Fires events at main thread event loop from background thread, measures response time&lt;br /&gt;
** Produces output of the form MOZ_EVENT_TRACE sample &amp;lt;timestamp&amp;gt; &amp;lt;duration&amp;gt;&lt;br /&gt;
** Being rolled out as part of Talos Tp5 {{bug|631571}}, will produce a responsiveness metric for &amp;quot;responsiveness while running Tp5&amp;quot;&lt;br /&gt;
* Peptest: {{bug|674606}}&lt;br /&gt;
** Responsiveness regression test harness&lt;br /&gt;
** Allows devs to write tests that perform various actions and tests responsiveness using EventTracer&lt;br /&gt;
** [https://wiki.mozilla.org/Auto-tools/Projects/peptest Project page] contains everything you need to know&lt;br /&gt;
** Run &#039;make peptest&#039; from your object directory to run the tests (see [https://wiki.mozilla.org/Auto-tools/Projects/peptest#Running_Tests running tests] for command line instructions)&lt;br /&gt;
&lt;br /&gt;
* [http://people.mozilla.org/~xstevens/telemetry/telemetry-histogram-aggregates-20111103-20111116.txt Telemetry dump for ff11 from November 17]&lt;br /&gt;
&lt;br /&gt;
* [http://graphs-new.mozilla.org/graph.html#tests=&amp;amp;#91;&amp;amp;#91;130,1,1&amp;amp;#93;,&amp;amp;#91;130,1,12&amp;amp;#93;,&amp;amp;#91;130,1,13&amp;amp;#93;,&amp;amp;#91;130,1,21&amp;amp;#93;,&amp;amp;#91;130,1,22&amp;amp;#93;&amp;amp;#93;&amp;amp;sel=1322091900253,1322167344714&amp;amp;displayrange=7&amp;amp;datatype=running Talos responsiveness tests] - for details see {{bug|631571}}&lt;br /&gt;
&lt;br /&gt;
== Additional Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* Have metrics do continuous trend analysis to see if our telemetry stats are getting better over time.&lt;br /&gt;
&lt;br /&gt;
== arewesnappyyet.com ==&lt;br /&gt;
* This should use our telemetry data to tell us whether we are meeting our expectations and how far off we are&lt;br /&gt;
* {{bug|703669}} tracks the implementation of this site&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
Placeholder section for QA and testing.&lt;br /&gt;
&lt;br /&gt;
; [https://wiki.mozilla.org/Performance/Snappy/Testing:Sprint_1#Phase_1:_UI_Interactions Sprint 1 Phase 1]&lt;br /&gt;
&lt;br /&gt;
; Takeaways from [https://wiki.mozilla.org/Performance/Snappy/2011-12-01 2011-12-01 Meeting]&lt;br /&gt;
* Goal of Project:&lt;br /&gt;
** Big hangs (~30s) are a problem, but small hangs (~5s) may be a bigger win&lt;br /&gt;
** Identify where we hang, why we hang, and plug those holes&lt;br /&gt;
* Things on Devs Radar:&lt;br /&gt;
** Meta Bugs: visible responsiveness ({{bug|698500}}), sync storage ({{bug|699820}}), cycle collector ({{bug|698919}})&lt;br /&gt;
** Animation hangs are most visible&lt;br /&gt;
** Windows, Mac, Linux are all unique -- Windows is P1 for the project &lt;br /&gt;
** [http://benoitgirard.wordpress.com/2011/11/08/firefox-built-in-profiler/ Firefox Built-in Profiler]: late Q1&#039;2012&lt;br /&gt;
** Chromhang Bugs: {{bug|705761}}, {{bug|705287}}, {{bug|705258}}, {{bug|705594}}, {{bug|704933}}, {{bug|699051}}&lt;br /&gt;
** Small Jank: using &#039;&#039;refresh driver&#039;&#039; to measure refresh-rate performance (ie. throbber, progress bar, etc -- Asa has more ideas)&lt;br /&gt;
** Measuring Snappiness: [http://j.mp/rPGyFb Telemetry use cases] &lt;br /&gt;
** Metrics/Automation: for trend-analysis, finding regressions with Telemetry&lt;br /&gt;
* Where does QA fit in?&lt;br /&gt;
** P1: [https://etherpad.mozilla.org/desktop-responsiveness Desktop responsiveness] competitive testing&lt;br /&gt;
** many of these problems need stack traces (something Telemetry cannot do)&lt;br /&gt;
** crowd-sourcing use cases where we are less Snappy&lt;br /&gt;
** A-B testing with other browsers (versions of Firefox, competitor browsers)&lt;br /&gt;
** Ownership of Snappy P1s&lt;br /&gt;
** Caching issues should have patches landed in the next week or so&lt;/div&gt;</summary>
		<author><name>Tglek</name></author>
	</entry>
</feed>