A Browser Developer's Research Wish List. Robert O'Callahan Mozilla Corporation

Similar documents
Firefox quality. Mozilla Paris FOSDEM Feb 3rd 2018

Honours/Master/PhD Thesis Projects Supervised by Dr. Yulei Sui

HTML5 Evolution and Development. Matt Spencer UI & Browser Marketing Manager

Trusted Browsers for Uncertain Times

SVG and Mozilla. An insider's view. SVG Open 2008, Jonathan Watt

FIREFOX REVIEWER S GUIDE. Contact us:

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.

Scaling with Continuous Deployment

Delivery Options: Attend face-to-face in the classroom or via remote-live attendance.

Debugging. Erwan Demairy Dream

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015

OSSW ICOSST 2009, Al-Khawarizmi Institute of Computer Science University of Engineering and Technology, Lahore

CS2141 Software Development using C/C++ Debugging

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016

Reviewer s Guide. PR Contact: Steve Naventi, OutCast PR

GRITS AJAX & GWT. Trey Roby. GRITS 5/14/09 Roby - 1

Etanova Enterprise Solutions

Mock Objects and Distributed Testing

Life, the Universe, and CSS Tests XML Prague 2018

Executive Summary. Performance Report for: The web should be fast. Top 1 Priority Issues. How does this affect me?

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

CSC Introduction to Computers and Their Applications

Performance Analysis of Virtual Environments

Bug Hunting and Static Analysis

Introduction to Programming

Hypervisor security. Evgeny Yakovlev, DEFCON NN, 2017

Lesson 14 SOA with REST (Part I)

Using Smart Tools to Write Good Code

VMem. By Stewart Lynch.

HTML5 for mobile development.

Who is Mozilla? What is Firefox? Is it better than Internet Explorer? Presented by Phil Goff (Branch 116) September 18, 2008

Using Development Tools to Examine Webpages

Full Stack Developer with Java

3 Continuous Integration 3. Automated system finding bugs is better than people

Selenium Web Test Tool Training Using Ruby Language

Case Study: Dodging the Pitfalls of Enterprise Ajax Applications

Context-Switch-Directed Verification in DIVINE

Delivery Options: Attend face-to-face in the classroom or remote-live attendance.

RKN 2015 Application Layer Short Summary

Case study on PhoneGap / Apache Cordova

Proving Dekker with SPIN and PROMELA

Is the Web good enough for my app? François Daoust W3C Workshop HTML5 vs Native by software.brussels 4 December 2014

Think like an Elm developer

How to Work with Mercurial

More on Testing and Large Scale Web Apps

Changes in JHawk 6 1 Changes in JHawk6 Virtual Machinery 2015

Mozilla & Firefox Quantum. Mozilla 12 Mars 2018

From Runtime Failures to Patches: Study of Patch Generation in Production

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

A Library and Proxy for SPDY

Computer Labs: Debugging

How to get a perfect 100 in Google PageSpeed Insights

Fault Injection & Formal Made for Each Other

1 Visible deviation from the specification or expected behavior for end-user is called: a) an error b) a fault c) a failure d) a defect e) a mistake

Detects Potential Problems. Customizable Data Columns. Support for International Characters

A JavaScript Framework for Presentations and Animations on Computer Science

90 Minute Optimization Life Cycle

Introduction: Manual Testing :

Designing and debugging real-time distributed systems

Dynamic code analysis tools

XML. Jonathan Geisler. April 18, 2008

WHITE PAPER. 10 Reasons to Use Static Analysis for Embedded Software Development

ZAP Innovations. OWASP Zed Attack Proxy. Simon Bennetts. OWASP AppSec EU Hamburg The OWASP Foundation

Web Collaborative Reviewer Installation Guide. Small Business Edition

Real Player Manual Not Working Firefox 2013

5.1 Registration and Configuration

How Automated Testing Tools Are Showing Its Impact In The Field Of Software Testing

Telerik Test Studio. Web/Desktop Testing. Software Quality Assurance Telerik Software Academy

GWT: The Technical Advantage. Presenter: Anirudh Dewani Company Name: Google

Eme03. Mobilise your Applications as Progressive Web Apps

Quick XPath Guide. Introduction. What is XPath? Nodes

System Wide Tracing User Need

BROWSERS OPTIMIZATION

Part of this connection identifies how the response can / should be provided to the client code via the use of a callback routine.

Google Web Toolkit for quick relief of AJAX pain. Kelly Norton & Miguel Méndez

This document is for informational purposes only. PowerMapper Software makes no warranties, express or implied in this document.

HTML version of slides:

Jenkins 2 UX Improvements. Keith Zantow Software Engineer, CloudBees, Inc.

Test-driven development

GFS: The Google File System. Dr. Yingwu Zhu

CSE 333 Lecture 1 - Systems programming

Automatically Finding Patches Using Genetic Programming. Westley Weimer, Claire Le Goues, ThanVu Nguyen, Stephanie Forrest

Flash Player Update Manual Win 7 64 Bit Firefox

Verification Planning with Questa Verification Management

Intro to Intro to Software Engineering

Browser Guide for PeopleSoft

nacelle Documentation

Greenstone 3 Interface Transformations Library: Basic Documentation

The tools used in the development of Life Is Strange

Firefox Crash Reporting.

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

Simple AngularJS thanks to Best Practices

Web Technologies Present and Future of XML

Tizen Framework (Tizen Ver. 2.3)

For the past 50 years, software engineers have

Switching to Innodb from MyISAM. Matt Yonkovit Percona

Luckily, our enterprise had most of the back-end (services, middleware, business logic) already.

Formal Methods at Scale in Microsoft

JavaScript Fundamentals_

Automated Testing of Tableau Dashboards

Transcription:

A Browser Developer's Research Wish List Robert O'Callahan Mozilla Corporation

About Me Research career Mozilla career Contributor Developer Manager

A very quick overview of Mozilla development Problems that need research attention

Browsers Are Hard HTTP HTML CSS JPEG DOM JS NPAPI XML HTML5 CSS3 Opentype SVG XSLT XPath WebM IndexedDB WebSockets WebApps MathML WebGL WebWorkers SMIL

Browsers Are Hard Severe performance requirements Severe security challenges

Browsers Are Hard

Mozilla Nonprofit Relatively small (~300 FTE) Large community > 300M users (~25% worldwide) Long-ish history (to 1998 and earlier)

Code C: 0.88M lines (many third party libs) C++: 1.5M lines.h: 0.98M lines JS: 0.19M lines

Being Open Making it easy for anyone to contribute to any level means opening everything online Code Data, e.g. Bugs Crash data Test farm data Decision-making Need to be distributed Need low barriers to entry

Distributed Version Control Mercurial (hg) Like git Mercurial Queues (mq) Make it easy to factor work into many logically separate changes

Patch Lifecycle Bug filed in bugzilla.mozilla.org (including for new features) Patch attached, discussed, and formally reviewed Checkin, close bug

Automated Tests Multiple test frameworks Correctness and performance Run on every push

Try-server Push to try Very heavily used

Fuzz Testing Best bug-finding methodology so far Skilled operators Automated reduction

Adding Value To Tests Assertions Debug only Leak detection Valgrind Race detection (hasn't worked?) Combined concrete/symbolic execution?

Crash-Stats Google Breakpad http://crash-stats.mozilla.org Long tail of low frequency, non-reproducible, inexplicable crashes Sometimes due to environmental differences Correlate environmental factors with crashes E.g., list of loaded DLLs Malware

Dehydra GCC plugin for AST-level access Custom checkers written in JS e.g. override Dead code detection Syntax-aware source code browsing (DXR) Refactoring using Pork (based on Elsa) Renaming Not much used

A Wish List

Performance Analysis

Performance Analysis Reduce noise Find significant metrics e.g. instruction counts, cache misses Intelligent profile diffing

Nondeterministic Test Failures

VM Record And Replay It really works Best advance in debugging since Need improvements Overhead and reliability Always On Easy sharing Application-specific extensibility (e.g. DumpJSStack()) Combine with finer-grained R&R?

Static Analysis So far, no useful advanced generic analysis sixgill looks promising Brian Hackett's PhD thesis Low-annotation array bounds checking for C++ Works on Firefox http://sixgill.org

Program Analysis And Code Review Unreported bugs in shipped code: low priority Bugs in new code: high priority Regression bugs: highest priority! Code review is the one time we look at code to try to find bugs! Use analyses to assist code review Add analyses to try-server Even false positives could improve review quality Reviewer more likely to believe results?

Bug Finding Code review is a cheap time to fix bugs Finding a bug too late may mean it's not worth fixing Bug finding is not our bottleneck Need to reduce cost of fixing bugs (Potential) regressions are a big part of that cost

Verifying Refactorings DVCSs enable breaking up changes into small patches Facilitates code review Facilitates bisection search We could use better tools for this! Many patches are (intended to be) behaviourpreserving refactorings

Verifying Refactorings Verify operational equivalence for refactoring patches Check for performance effects? Tremendously useful because these patches consume review time Easy incremental research progress Easier and more important than automated refactoring

Code Complexity Simple, buggy code is better than complex, less buggy code All code will need to be fixed and improved, and that will be easier for the simple code Less skilled developers write overcomplex code Is this patch the simplest possible change? Depends on entire system E.g. failure to reuse existing code

Programming Languages Finding and fixing mountains of bugs is not sustainable Need approaches that prevent classes of bugs At some point we will need to change to better languages Lots to say, but out of scope

Final Plea Do problem-driven research, not solutiondriven research Help! Thanks for inviting me :-)