Platform/2014-Q3-Goals

From MozillaWiki
Jump to: navigation, search

Platform

2014 General Goals

GFX

Items marked here with release 33 and 34 are part of the Q3 landings.

Layout

  • Layout to Moz2D
    • [DONE] Migrate SVG to Moz2D (bug 703159)
  • Enable Vertical Text for major use cases for Chinese & Japanese
    • [MISSED] bug 145503 - Meta Bug. We've made lots of progress, but our big bug won't get closed until Q4
    • [DONE] bug 789096 - Layout with horizontal block flow and vertical text flow
    • [MISSED] bug 902762 - Vertical text run creation. Needs r+ and landed.
    • [MISSED] bug 1062963 - Make nsFloatManager use logical coordinates. Working through remaining test failures.
  • Text Performance
    • We'll get 1 of the 3 we wanted to hit.
    • [DONE] bug 998869 Streamline parsing of fontlists and improve efficiency of font matching code (note: unicode-range support will fall out of this work)
    • [MISSED] bug 934770 - slow at rendering large blocks of plain text
    • [MISSED] bug 860492 - Divide large text runs into smaller runs to avoid chrome hangs
  • Improve Restyling Performance
    • [DONE] bug 977991
    • [DONE] bug 931668 - (not originally listed for this quarter, but carryover from previous)
  • [DROPPED] Font Inflation and Reflow-on-Zoom
    • We picked up scrolling features/fixes in Q3 and deferred this item
    • both implementation bug fixing and spec work
    • -moz-text-size-adjust
  • ImageLib
    • [ON TRACK] RasterImage for multiple images
      • [DONE] prerequisite draw API refactoring bug 1043560
      • [DONE] store imgFrame objects in the imagelib SurfaceCache bug 1054079
      • [DONE] use #1: HQ scaled frames in the surface cache bug 1060200
      • [ON TRACK] use #2: store multiple decode options in surface cache for non-animated images
      • [AT RISK] use #3: store multiple decode options in surface cache for animated images
  • CSS Projects with Adobe
    • [DONE] CSS Filters
  • Animations & Transitions
    • [MISSED] transitions/animations spec editing
    • [DONE] transitions refactoring to match new spec
    • [DONE] frame reconstruction (625289)
    • [MISSED] Effective start of CSS animations and transitions bug 927349
      • may spill into Q4
  • OMTA on non-B2G Platforms (980770)
    • [AT RISK] fix correctness bugs (cascading, etc.)
      • partly done in bug 996796, but cascading fix likely miss
    • [MISSED] turning on on other OMTC platforms (Mac/Android)
  • Web animations:
    • [DONE] Get basic implementation of GetAnimationPlayers bug 1032573
    • [DONE] Implement PlaybackControl() bug 1033114
  • CSS Scrolling
    • [MISSED] CSS scroll snapping
    • [DONE] scroll-behavior:smooth
  • CSS Flexbox
    • [ON TRACK] performance bugs
      • significant improvement on bug 946167, though more to do
    • [ON TRACK] spec changes
  • CSS Ruby
    • Our intern got through a bunch of this, but we'll continue it next quarter; remaining work tracked in bug css-ruby and bug enable-css-ruby
    • [DONE] style system support
    • [DONE] frame construction
    • [DONE] anonymous box handling
    • [DONE] reflow architecture and horizontal positioning
    • [MISSED] line breaking
    • [MISSED] vertical positioning
    • [MISSED] other dependencies on enabling the feature

Media

  • [MISSED] Enable YouTube MSE/VP9 for Firefox 33 in Nightly/Aurora bug 1000686
  • [MISSED] Enable YouTube MSE/MP4 on Windows and Firefox OS for Firefox 34

Detailed Breakdown

  • MSE Common
    • [DONE] Rate adaption/buffer switching, reseting
    • [MISSED] Seeking into unbuffered ranges bug 1056440
    • [TODO] Eviction/pinning
  • MSE WebM
  • MSE MP4

DOM

  • [DONE] Mirror prototype of DOM objects through xray wrappers (bug 787070, peterv)
  • [DROPPED] Remove nsDOMClassInfo.cpp
    • Given the recent focus on e10s, we have not been pushing on this at this point.
  • [DONE] Make less-privileged non-Xrayable unwaived opaque from privileged code (bholley, bug 856067)
  • [DONE] Route all JSContext pushing through AutoJSAPI and Implement GetEntryGlobal (bobowen, bholley, bug 951991)
  • [MISSED] Land <picture> preffed on on nightly (bug 1017875) (johns)
    • 99% done, but John got pulled into e10s plugin work (bug 874016) but made excellent progress here and was very close to preffing on by the end of Q3.
  • [DONE] audit callsites of IsInDoc()/GetCurrentDoc to ensure correct Shadow DOM behaviour and fix Shadow DOM blockers for Gaia (smaug, wchen) (bug 1026047)
  • [MISSED] land Service Workers preffed off on nightly (nsm, bkelly, baku) (bug 903441)
    • This is progressing well, but won't be *done* until the end of the quarter, so still on track.
    • Note that originally we thought things would be at the point where Gecko and Blink would be far enough along with a stable spec that this could be preffed on. That is not going to be the case but we are still aiming to have a usable implementation preffed off.
    • There remain spec questions about Cache which have impacted the design of our implementation.
    • We are focusing on Maple being usable for getting feedback.

WebAPI

  • [DONE] create design plan for "share" activity (flow, what kind of objects are involved) (annevk)
  • [MISSED] document existing activities usage in gaia (ehsan)
    • this work is underway but it's not yet complete
  • [MISSED] get screen orientation spec to LC (marcosc)
  • [DONE] publish use cases for wake locks (marcosc)
  • [MISSED] publish spec for "wakelock" API (marcosc)
    • there is a spec but it got held up on making WebIDL attributes observable
    • current status is that others in the community make pick this up and drive it forward
  • [DONE] 24/12 hour format API (ehsan) bug 903683
  • [MISSED] bug 942542 new quota API on PBackground for Service Worker cache (janv)
    • this is up for review but won't land before the end of Q3
  • [MISSED] bug 701634 IndexedDB in workers (bent)
    • the majority of this work was done with bug 994190 to get main thread IDB using PBackground but the remaining work to get IndexedDB available on workers did not make it

JS

  • [MISSED] ES6 classes: bug 837314
  • [ON TRACK] 1020751 - Generational GC on Firefox OS
  • [ON TRACK] 650161 - Compacting GC to reduce memory usage
  • [ON TRACK] 856533 - Escape analysis JIT optimizations
  • [DONE] Use Latin1 strings to reduce memory usage: bug 998392
  • [ON TRACK] 903519 - Allocate strings in GC nursery (for performance)
  • [MISSED] ARM64 JIT [stretch goal]: bug 972710

Accessibility

  • [MISSED] e10s: proxy the common a11y API stuff like name, role, and states.
    • Decent progress with unlanded patches including some event work.
  • [DONE] GAIA: Fix all Gaia P1 a11y bugs (~30 at this time).
    • 49 (all) are fixed.
  • [DONE] FFOS: bug 1030465 - Volume change should update the screen reader volume.
  • [DONE] FFOS: bug 1030466 - Headphones screen reader volume is too low.
  • [DONE] FFOS: bug 1030468 - VC rectangle needs to work with scaled content.
  • [DONE] FFOS: bug 1030470 - Localization needs to work when switching locales in FxOS.

Perf

Fix major source of browser jank:

  • [DONE] (milestone reached, work continues in Q4) Initialize plugin instances asynchronously bug 998863
  • [MISSED] (Blocked on external dependencies + unplanned newtab page work took precedence) Pause heavy main-thread activities while user is interacting with the browser:
    • [MISSED] Determine when a user is actively interacting with the browser
    • [MISSED] Detect when jank occurs during interactions and report to Telemetry bug 1017055
    • [MISSED] Experiment with hinting to GC & CC that they should pause while the user is interacting with the browser
  • [DONE] (refactoring work continues) Help Frontend team with Places refactoring, eliminate some of the Places main-thread SQL reported to Telemetry
  • [DONE] Don't store UI customization in localstore.rdf, use off-main thread JSON instead bug 559505

Improve Firefox startup (identified as a top issue in user research):

  • [DONE] Reduce appearance of the "profile is in use" message on startup bug 286355
  • [DEFER] Restore windows one by one during session-restore bug 1034534 and/or load windows by descending z-order bug 1034036
  • [DONE] C++ version of AsyncShutdown bug 918317

Prevent performance regressions:

Grow community:

  • [DONE] Mentor at least 5 external contributors

Networking

  • [MISSED] Ship Network Predictor ("Seer") on nightly, using HTTP cache instead of SQLite (bug 1009122) (hurley)
    • Well-underway, but not done yet. Rolling over to Q4.
  • [DONE] Ship current (hopefully final) IETF version of HTTP/2 preffed on in nightly (hurley)
    • HTTP/2 is done and we've shipped it. This is a big deal.
  • [DONE] HTTP/2 "alt-svc" support (bug 1003448) (mcmanus)
  • [DROPPED] HTTP cache: determine if revalidation is needed w/o doing I/O (bug 983122) (sworkman)
    • We didn't have the cycles to even start on this: decided it wasn't mission-critical.
  • [DONE] Network up/down link detection on all platforms (bug 939318) (bagder)
  • [DROPPED] Implement WebSocket compression extension (bug 792831) (michal)
    • Too much cache work remained for Michal to start on this. Also not mission-critical.

Mobile

A*Team

For full list, see A-Team Goals 2014Q3

B2G

  • [DROPPED] (moved to B2G team) Run a set of performance and correctness tests per-commit to b2g-inbound on Flame devices
  • [DROPPED] (moved to B2G team) Get gaia-integration tests running on device
  • [DONE] Expand the FxOS Certification Suite with 1.4 support, test automation to prevent regressions, and investigation of support for non-phone devices
  • [DONE] Green up B2G tests on TaskCluster (joint with RelEng)

Developer Productivity

  • [MISSED] Deploy ReviewBoard for developers to start using (joint with RelEng)
    • Primary dev on medical leave for a month; will be finished early q4.

Performance

  • [DONE] Deploy new Talos tests for tp5o_scroll, webgl, webrtc, and mainthread I/O
  • [DONE] Get Datazilla alerts to beta mode (full parity with graph server alerts) with reduced noise
  • [DONE] Get Eideticker running against Android again with increased frequency
  • [DONE] Run B2G Eideticker against same branch/build combinations as our other on-device perf tests
  • [DONE] Stand up a Games Benchmarking system for webaudio tests running against Firefox and Chrome

Treeherder

  • [DONE] Deliver performance web service for ingesting and returning performance data
  • [MISSED] Deliver a UI for viewing Talos data

Sheriffing

  • [DONE] Fully transition sheriffing from TBPL to Treeherder

General Automation

  • [DONE] Create weekly reports that describe how many tests have been added/disabled/enabled per suite and platform
  • [DONE] Move reftest to mozbase
  • [DONE] Add command executors for Marionette for Java and Python

Bugzilla

  • [DONE] Improve load time of related bugs; can decrease show_bug load times by up to 12%
  • [DONE] Minify and concatenate JS files
  • [DONE] Authoritative view for review history
  • [DONE] Rewrite docs for REST API

Community

  • [DONE] 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
  • [DONE] Monthly review of mentored bugs and projects

Web Engineering

Crash stats

  • [DONE] Prototype service for identifying post-crash user actions
  • [DONE] Hardware and performance tuning for new primary data store
  • [DONE] Remove older, redundant crash storage format from database
  • [DROPPED] Improve search performance and features
    • API changes in the underlying tech made this much more complicated that originally estimated. Will be carried over to next Q.
  • [DONE] Replace interfaces to deprecated external data sources
  • [DONE] Remove barriers to community installations

FHR

  • [DONE] Support search diversion plan

DXR

  • [DONE] Improve infrastructure.
    • Switched back end to Elasticsearch, paving the way for concurrent, independent tree indexing.
    • Freed codebase of C++ assumptions.
    • Completely new plugin API supporting multiple languages, multi-core indexing, request-time analysis, binary file handling, and plugins living outside the DXR source tree
    • Added an official DXR submodule, complete with 3 module peers.
    • Rewrite search controller, which was always complete spaghetti. We now have a genuine HTTP API!
    • Upgrade Vagrant VM to a LTS release of Ubuntu.
    • Render folder views at request time, a pilot for doing this with file view as well (which will save hundreds of GB of expensive NetApp space and, more importantly, speed indexing so we can do it more often).
  • [DONE] Broaden our audience.
    • Added indexing for several releng trees.
    • Rewrote developer documentation (dxr.readthedocs.org), bringing in about 2 new contributors per week.
    • Rewrite query machinery to do "and" searches as people expect rather than the weird and-or hybrid it used to do.
    • Added macro and typedef direct search.
    • Added Google Analytics so we can measure our use.
    • Rewrote highlighting support, fixing myriad UI bugs.
    • Basic JS analysis 75% done. Rust analysis in progress.

l10n

  • [DONE] Get l10n build logs into a searchable data store
  • [MISSED] Replace some buildbot functionality with a10n automation
    • a10n work got pushed out because of firefighting to unblock other goals. Estimated 3 weeks away. Will carry over

Air Mozilla

  • [DONE] Prototype support for streaming media boxes
  • [DONE] Improve desktop user experience

full list

SUMO and Input

  • [DONE] SUMO: Launch new offline SUMO app [Get Firefox on a Growth Trajectory]
  • [DONE] SUMO: Develop new Community Hub to a level where it can replace legacy Karma app [Enable Communities with Impact]
  • [DONE] SUMO: Research and prototype new experimental features (e.g. geotargeting, Instant Search, Search Suggestions) [Get Firefox on a Growth Trajectory]

Release Engineering - Laura

  • [DROPPED] 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) - dropped early on. Third parties are not "there yet" and cost more.
  • [DONE] Simplify release engineering mobile hardware infrastructure (Get Firefox on a Trajectory of Growth)
  • [MISSED] Automate developer access to continuous integration resources to expedite debugging and standing up new job variants. (Enable Communities With Impact) - Progressed a lot. Almost ready for releng to use internally.
  • [DONE] Help enable video operability on the web by providing continuous integration for Cisco Open H.264 builds. (Get Firefox on a Trajectory of Growth)

Release Engineering - Taras

  • [DONE] Replace aging Firefox update service with a scalable, modern solution. (Get Firefox on a Trajectory of Growth) - Now on beta channel. release channel in early Q4
  • [MISSED] Simplify developer workflow by automating patch landing and uplift. (Enable Communities With Impact) - Implementation done; needs secreview and final integration, deployment.
  • [DONE] Optimize network transfers for build/test automation between datacenters. (Enable Communities With Impact)
  • [MISSED] Continue AWS cost optimizations: EBS < 3% of AWS bill (vs 30% in Q2) (Enable Communities With Impact) - Missed primarily due to lost headcount. Reduced our EBS cost in September to 11% of total; more reductions to come in Q4.
  • [DROPPED] Improve developer workflow by migrating 80% of FirefoxOS build/test jobs to taskcluster (Enable Communities With Impact) - this goal is now with jlal in FirefoxOS
  • [DROPPED] Turn telemetry into a general purpose s3 ingester and analysis tool - this goal is now with mreid in Services

Release Engineering Operations

  • Build/Test System Performance Enhancements
    • [DROPPED] Unify releng platform architecture, using common tools and best practices, to decrease complexity and enable smoother developer engagement bug 1026110 [Get Firefox on a Trajectory of Growth, Enable Communities With Impact] - blocked on obtaining necessary resources from other groups
    • [DONE] Improve communication and response time for releng network flow requests bug 1026112 [Get Firefox on a Trajectory of Growth, Scale Firefox OS]
    • [DONE] Improve security for all releng windows infrastructure bug 893716 [Get Firefox on a Trajectory of Growth]
    • [DONE] Update windows platform developer tools bug 1019165 [Get Firefox on a Trajectory of Growth]
  • Build/Test System Self-Serve Re-architecture
    • [DONE] 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] - POC created, and openstack was deemed too buggy in its current unreleased state to be production ready
    • [DROPPED] 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] - bare metal openstack is proving to be too bleeding edge and buggy to use for production services. We will track changes made in the openstack code base and revist this in 9mo, but we will not move any services to production in FY2014

Developer Services

  • [DONE] (with B-team) roll out phase 2 of new review tooling [Get Firefox on a Growth Trajectory / Enable communities with impact]
  • [DONE] Upgrade existing Mercurial infrastructure to support more rapid, safe, and coordinated deployment of updates. [Get Firefox on a Growth Trajectory / Enable communities with impact]

Full List

Security & Privacy Engineering

More details here: SecurityEngineering/2014/Q3Goals

Content Security

  • [DONE] Gecko Security Hooks: Finish code and debugging for NS_NewChannel API, start getting reviews (dri=tanvi)
  • [DEFER] Gecko Security Hooks: Create plan for addon compatibility -- doesn't make sense until New Channel API is done, deferring to next quarter when shimming the JS API for creating new channels (dri=tanvi)
  • [DONE] CSP: Remove old JS implementation from mozilla-central (dri=sstamm)
  • [DONE] Evangelism: Security blog post about new CSP implementation, maybe again as brown bag. (dri=sstamm)
  • [MISSED] [stretch goal] CSP: Fix majority of CSP 1.1 compatibility bugs. Couldn't stretch. (dri=ckerschb)

Tracking Protection

  • [MISSED] Referer: Finish implementation of <meta> referrer control with volunteer help. Unexpected dependencies, will finish about two weeks late. (dri=sstamm)
  • [DONE] Land first implementation of protection in Fx 33/34 off by default. BONUS: landed frontend code too (dri=mmc)

Communications Security

  • [DONE] SSL Error Reporting finish first implementation of ssl error reporting feature. (dri=grobinson)
  • [DONE] HPKP - implement pinning http header (dri=cviecco)
  • [DONE] Update roadmap for Cert Revocation improvements (dri=rbarnes)
  • [DONE] Create a mechanism to provision phones with an alternate cert (dri=mgoodwin)
  • [DONE] Add measurement/enforcement of compliance with CABF Baseline Requirements (dri=keeler)
  • [DONE] Create a tool for testing CA certificate compliance and EV-readiness (dri=keeler)
  • [AT RISK] Add support for key wrap/unwrap and ECC in WebCrypto (dri=rbarnes)
  • [DEFER] [stretch goal] Get CA Program data into one database (dri=kathleen)
  • [DONE] [stretch goal] Retire first batch of 1024-bit roots, working towards requiring 2048-bit keys for built-in root certificates (dri=kathleen)

Firefox and Platform Security

  • [DONE] Marifuzz fuzzer ported to and running on Flame devices.
  • [DONE] Update ASan and LSan work for DOMFuzzer
  • Update "Bounty Stars" document with issues found by external reporters and updating DOMFuzzer to reflect these results.
  • [DONE] Get Clang on RelEng ready for official OS X ASan builds. - Fuzzing team work is done. Waiting for Releng to update build system.
  • [DONE] Initial work to move CoreFuzz towards running in cloud environments.
  • [DONE] WebCrypto API fuzzing using Dharma fuzzer.
  • [DONE] Port a portion of WebRTC fuzzing from Frambois fuzzer to Dharma fuzzer.
  • [DONE] Peach: Improving and porting Peach 2 to Python 3.
  • [DONE] Public Mozilla Security Github work: Moving of fuzzing tools from Fuzzing Hg to GitHub, including work to separate harnesses from testcase generation tools. - Only outlier is DOMFuzz because of Releng integration.

Games Program

  • [DONE] Reach out to 3rd party engines en masse (also for Q4)
  • [ON TRACK] Select a 3D demo for mobile
  • [DONE] Pick a partner demo to optimize for mobile
  • [ON TRACK] Focus on supporting shipping games and maintaining platform stability
  • [ON TRACK] Focus on Shared Array Buffer implementation
  • [AT RISK] WebGL Benchmarks
  • [ON TRACK] Continue to work MDN documentation; get Emscripten documentation started
  • [ON TRACK] GDC and MWC event support plan

Release Management

For full list, see Release Management 2014Q3 Goals.

  • [DONE] Create and document process for Desktop/Mobile feature fast tracking
  • [DONE] Determine future of ESR and how to manage this channel
  • [DONE] Continue desktop throttling experiment with intention of reducing throttled time while maintaining existing level of feedback
    • Throttling time currently reduced from 10 to 7 days. Experimenting with further reductions.
  • Improve release notes with revamped template for all products
  • [DONE] Create B2G release model proposals and gather feedback for potential changes
  • [MISSED] Figure out what to do with B2G Security Releases

Program Management

See this wiki page for a full list of Program Management goals.

  • [ON TRACK] Create a set of dashboards based on the ES database to track platform projects and surface bottlenecks.
    • Narrowed focus to a set of dashboards for review queues for individuals and teams.
  • [AT RISK] Brown bag presentation/restropective on the agile processes we are using on Desktop and FirefoxOS
    • With the reorg, revisiting the purpose/target. Might change this goal slightly. Still probably worthwhile planning a brown bag to talk about Desktop process and introduce Trello planning tool for Platform.
  • [ON TRACK] Evaluate and produce a report on several tools for helping organize and visualize team backlogs and priority lists; wiki, spreadsheets, Trello, Kanbanize
    • Using a Trello board for Platform work. Jenn piloting Kanban board for Desktop/Android. Should have a summary, write-up ready by end of Sept.

Quality Engineering

See this wiki for the full list of Quality goals. What follows are our brief summary of our internal improvement goals for each strategic team.

  • Firefox QA - Revitalize our Quality Engineering strategy by switching to a feature-based test strategy for all Firefox browser products so that there are test plans for each feature and testing is executed within two sprints of the feature's code landing
  • Firefox OS - Better metrics for quality analysis, provide opportunities for community contribution, and expanding the role of our on-device automation for reporting to Treeherder.
  • Services - Ensure new offerings have 98% uptime (FxA Sync, OAuth, FMD, Loop) and no more than 2 P1 bugs discovered post launch while building a core contributor base in services
  • Marketplace - Ensure Marketplace's new payments backend, in-app payments, and the Marketplace feed land with high quality releases.
  • Platform QA - Deploy into continuous integration a regression testing system for WebRTC along three areas of investigation: 1. "Smoke" tests, 2. Connection tests, and 3. Connection quality tests. These will be performed in a variety of environments, including various network topologies with various performance characteristics, connections between various versions of Firefox, and connections on multiple OS platforms. Test plans will be developed, and we will measure coverage of test plans. Results will be posted and available in Treeherder. We will also build backlog for next Platform Tiger Team tasks.
  • Community - Increase conversion of interested and casual contributors to help them become active contributors with strong ties to the QA community