Platform/Roadmap
| Platform 2011 Roadmap | ||
| Owner: Chris Blizzard | Updated: 2011-09-27 | |
| This roadmap outlines the current strategy and direction for Mozilla Platform development through 2011. While much of the recent past has been focused on HTML5, it's become obvious that where we want the web to go has to go well beyond that and build something that moves the web forward in a way that takes advantage of its unique capabilities, and will allow you to move seamlessly from phones to tablets to your desktop. | ||
Platform for Firefox
The vision for Firefox has been outlined in Jay’s Vision for Firefox document. That document is extensive, but boils down to a simple vision:
Discover, experience and connect with apps, websites and people on your own terms, anywhere.
It’s the Platform team’s job to support that vision with engineering resources and process. This document will attempt to lay out the first set of priority items that we should be investing in. This document is not exhaustive, but should reflect where people should look for “next steps.”
The Platform underlies much of what we do, and as such our goals are to help our products shine. Here’s what the platform needs to do:
- We need to make Firefox awesome.
- We need to make Web Pages awesome.
- We need to make Apps awesome.
While these may seem flippant, it’s important to remember that these are our main audiences. Whether or not they are delivered via a software download, a service or someone else’s creation we need to create an environment where all of these can flourish. This roadmap will try to cover the next steps for these three areas.
Making Firefox Awesome
Firefox is the main tool we have to create the web we want. In order for people to choose Firefox, we need using it to be an amazing and engaging experience. This means delivering a good blend of simplicity, extensibility and performance. All audiences will be looking for this. But we’re interested in early-to-middle adopters, which means we should be focused on more cutting edge features that can also be adopted by web sites in order to improve the experience of users at the leading edge.
Making Firefox Fast
We have to make Firefox fast. It must be able to compete with other browsers on benchmarks and must feel incredibly responsive to user input. We should also be investing in ways to make existing web pages and web applications faster with newer versions of the browser.
Key Measurements (Note: All of these should be compared to other browsers!)
- How responsive is the browser during intense moments like a tab restore after start up?
- How fast can we load and render web pages?
- How fast can we start up?
- How fast can we create new windows on demand?
- How fast can we react visually to people’s mouse movements and button presses?
- How do we compare to other browsers on industry benchmarks?
Projects:
Measurement & Performance
- Telemetry - Ongoing heuristics and measurement
- 50ms response time project
- Tools for measuring Networking Performance
Networking
- SSL Fast Start
- SPDY (low risk, medium reward)
- Web Timing Specs
- Pipelining (high risk, high reward)
- HTTP Pre-connections
- Cache Priorities
- Cache Control APIs
JS
- IonMonkey - better perf, platform for research and future perf improvements
- Debug API - so people can build faster apps and save time in Firefox
- Incremental GC - perf and getting rid of pauses
- Generational GC - same, but different tech
- Type Inference - performance & infrastructure for more measurement
- Profiler - required to let people optimize JS code and make it faster
- Objshrink - better performance and lower memory usage
- ES.next modules - faster access through better interfaces for web developers
- Runtime optimizations - better performance
- Refactoring & cleanup - for security and performance
DOM
- New DOM bindings
- Pre-cached JS libraries (hash? cache?)
- Steaming XHR interface instead of download/process
- HTML5 App Cache Replacement / Caching API
GFX
- GL for Mobile
- Azure
- NPAPI Async Drawing
- Electrolysis Accelerated Layers
Devtools
- Tools for external web developer profiling (see Page Speed)
- Tools for internal profiling
Electrolysis:
- Make it go
Making Firefox Reliable
Key Measurements:
- How often does Firefox crash?
- How often does Firefox hang?
- How often do plugins crash?
- How often do plugins hang?
- How often do we survive a content crash?
- Does Firefox’s memory usage cause the rest of the system to slow down?
- How often do people using Firefox have network problems?
- How often do people have problems rendering web sites?
- What’s our overall user satisfaction numbers with Firefox’s reliability?
Projects:
Tools:
- Capturing browser hangs
Engineering:
- Crash kill
- Telemetry
- Electrolysis
- MemShrink
Plugins:
- Moving plugins destroys & re-creates them instead of just moving them
- Key events aren’t properly passed between chrome and plugins
- Better API for plugin rendering
Keeping Firefox Secure
Key Measurements:
- Days of exposure for our users?
- How much lag time do we have for incoming security requests?
- Are we perceived as being secure in the market?
- Are the number of zero days and reported exploits going down with time?
- Are we getting security reviews done in reasonable time and at the right time in the feature lifecycle?
- Are we shipping releases with no sg:crit or sg:high bugs?
Clean-up and fixes
- Sandboxing of content processes
- Plugin background updating
- Plugin sandboxing
- ...
Security Innovation
- DNSSec
- UX Security experiment
- CSP revisions
- XSS Filter
- ...
Market / Engine Match (Keep Gecko Great)
Key Measurements (Largely subjective):
- Do we compete with WebKit and the IE rendering engine on our ability to add new features?
- Are we able to take advantage of the best capabilities offered by a hardware platform and operating system?
- Is our engine perceived as being great?
- Are we set up for future directions in hardware development?
- Does our engine give us the tools to fit market needs? Future market needs?
- Are we able to make performance and architecture improvements easily?
Projects:
Engineering:
- Maintain a moden graphics stack
- Improve readability and quality of our code base to attract external contributors
- Support for multi-core
- Support for mobile
- Support for security
- Support for network encryption improvements
Making Web Pages Awesome
It’s not enough that we make the experience of using Firefox great. We must also keep pushing the web technology forward so people can make more beautiful & functional web sites.
Note that many of these items overlap with the section below on Making Web Applications Awesome. When in doubt, assume that functionality will be available to both. This section deals more with display & device integration technology for the web.
Key Measurements:
- Are people adopting technology as we deploy them?
- Are our competitors adopting them as well?
- Are we adopting great ideas and standards from our competitors?
- Is Firefox seen as dragging the web forward?
- Are we equivalent to mobile platforms in display, animation and device integration?
- Are we making it possible to build apps that are more beautiful and faster?
Getting the best from Fonts
- Continuing to implement the new CSS Font standards
Improving the state of Display Technologies
- Support for text-overflow: ellipsis (Shipped in Firefox 7)
- Support for CSS Hyphens
- Support for CSS Animations (Shipped in Firefox 5)
- Support for 3D transforms
- Support for CSS Flex
- Support for CSS Grid
- Support for CSS Regions
- Support for Veritcal Writing
- Better control over color matching
- CORS Support in WebGL
- WebGL anti-aliasing
- WebGL full 1.0-compliance
Making Moving Media a First-Class Citizen
Media & Layout:
- Metrics API for HTML5 video performance
- Support for Full-screen applications
- Integrated media APIs for capture, upload and real-time communications
- Real-time Video and Audio Communications in the Browser
- Adaptive bandwidth support for HTML5 video
- Support for HTML5 video looping
- Adding support for hardware decoding, where available
DOM:
- Connecting media sources to worker threads for processing
Support for Programming at Scale
DOM:
- Fine-grained support for loading and compiling JS libraries
- Load-complete and error events for CSS, font and JS files
- Shared Workers for cross-tab communications
Finish HTML5 support
DOM:
- Complete HTML5 forms
- HTML5 Form Events
- Finish worker pools
- Dynamic markup insertion
- Labels properties on fields
- Microdata (?)
- FileWriter API (no?)
- Shared Workers
- Seamless iframe
- Sandboxed iframe
Media:
- Timed track support
Full Device Integration
Media:
- Support for Taking a Picture (build instagram)
- Support for capturing and uploading a video file with HTTP
DOM:
- Electrolysis for IndexedDB (multiple processes)
- Support for uploading a Directory with relative pathnames preserved
- Exposing Libraries or Directories as a file tree
- Passing Files & Directories into Workers
- Ability to drag files out of a web page with download_url
- EventSource for Workers
- IndexedDB for Workers
- WebSockets for Workers
- Touch and Multi-touch support
- Better support for scrolling (Joe Hewitt’s Scrollability)
Identity
- Verified email
- Contacts
Making Apps Awesome
Key Measurements:
- Can we load a Web Application in less than 100ms?
- Do people feel it’s OK to pay for things on the web?
- Are developers making money on the web platform through direct payments?
- Are developers and companies building apps on the web?
- Do users feel that the experience of using a web app is on par with a native app?
Vision for Apps Platform
( need to pull from Ragavan / Jay based on vision document and their work
Improve the Experience of Using Applications
Firefox:
- Site-specific Windows
- Support for context menus that look native, but are under app control
- How do I take my applications with me across all my devices?
- How do I share from inside of an application?
- How do I advertise capabilities from inside of an application?
Making it Possible to Pay for Applications
- Monetization (One-time buy / subscription / in-app purchase)
- Downloadable
- Install Process
- Receipts / End-user Ownership Verification / Entitlement
Make it Possible to Find Applications (not platform)
- Discovery while browsing
- Social recommendations - how do I share an application?
- Search
- Opportunistic / Heuristic discovery
- Rough location / “in a business.”
- Required applications (ex. HIPAA)
Support for Applications Without Windows
- Messaging & Notification APIs for Desktop
- Messaging & Notification APIs for Mobile (SMS or other mobile integration)
- Support for Worker activiation on receipt of a message from the Web
- Ability for Workers to create pages after processing a message
- The ability to deliver a message to an open app or web page.
Make Web Apps First Class Applications
- Remove cross-site access restrictions for installed applications
- Easy access to cameras, microphones and other hardware (examples)
- User-friendly security model that matches expectations of security and privacy
- Access to OS-level data for apps (contacts, etc)
Have Great Development Tools for Applications
- Idea to deployment in 20 minutes.