Platform/Roadmap
Note: The lists contained in here have only the next release attached. They are not prioritized yet, but should be soon.
Firefox is the best delivery vehicle that we have for Mozilla's mission. One important aspect of this is the tools that it makes available to web developers, add-ons developers and to internal Firefox developers.
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 the capabilities that HTML5 offer and build something that isn't just a slightly improved way to render web pages, but moves the web forward in a way that's unique and takes advantage of its capabilities when compared with platforms like Windows, OSX and the rise of Application store models.
Five Areas of Focus
To this end, there are five areas where we should be focusing during 2011 and beyond. These include:
Support for Application Models
When we talk about applications we're not just talking about the ability to download and install an app, although that's an important component. We're also talking about taking the application installation model, mixing it with a distribution and communication model as well as giving developers new ways to monetize their applications. This should also include a new set of display capabilities for web page developers can take advantage of. The install paradigm is one that users are used to using as a metaphor for advanced permissions.
Also, as we build out our infrastructure in other areas we'll be able to connect those to our application model as well.
Firefox Should Know Who You Are (Identity and Social)
The way that people are finding things on the web has changed quite a bit over the last couple of years. Social sites act as an additional vector along side search engines. Also the rise of facebook and other identity platforms means that we're starting to see who you are on the web become the property of web sites, locking you into their models and using it as a way to track you as you browse the web. In the browser we have the unique position to offer a neutral identity and social platform that puts the user in control of their online life. We will offer services and APIs that will help web developers build better applications that at the same time puts users in control of their services.
Built around much of the identity and social infrastructure that will be built to support those services, there are web-facing APIs that web developers will be able to use to make it easy to share web pages and information. (This solves the "NASCAR" problem on many sites that make it possible for you to share links.)
Firefox Should Enable a New Set of Real-time (Push-based) Applications
Right now web pages are applications that are only loaded when you happen to have a web page open. This leads to two specific problems. First, any kind of system that wants to offer a background notification (like gmail) means that you always have to have it open, in its entirety. This takes up large amounts of resources, attention and real estate. (See Application Tabs as one way to work around this problem.)
Second, it severly limits web applications on mobile. Many important mobile experiences are about mobile data that's delivered to you on demand, and requires a new model for event delivery that doesn't require waking up the CPU and radio to poll for new data that - more often than not - isn't there.
To this end we need new models for applications and the lifetime and activation of web pages that allows you to build applications that can be activated remotely, span mobile and desktop and bring us into a world where you can be connected no matter where you, no matter what device you're on, with a single identity.
Firefox Should be Built on a Modern Engine
At the same time that we're building out these new capabilities for web developers, we should also make sure that we continue to invest in the baseline for our engine, APIs for add-ons authors, performance and other strategic areas.
Application Models
Workers
- Pass files into workers
- localstorage "lite" for workers
- EventSource for workers
- WebSockets for workers
- IndexedDB for workers
- Support for cross-window communications
Monetization
- JavaScript APIs for entitlements
- Appetizer
Distribution
- Store
Packaging
- [ needs more data ]
JavaScript Libraries
- Granular library loading support
- Load a library
- Parse a library
- Support for JavaScript library hashes to avoid cache lookup
- Support for Error Events that work
Applications without windows
- EventSource (server-sent) events
- Over HTTP (Firefox 5)
- Over SMS (with backend notification service)
- Application activation model for events for headless applications
- Persistent workers for background work that should be single threaded across windows
- IndexedDB
- Async messaging
- Global window for cross-tab communications
Better Files Support
- Support for a file "sandbox"
- Support for File Writer interfaces
- Storing large files in IndexedDB
- Ability to drag a file out of a web page (download_url)
- Pictures and media integration (a better file picker)
- Upload a directory with relative pathnames preserved
Networking
- Support for an XHR stream API - replace download with something that can read as the stream comes in
- WebSockets (Firefox 5)
- TLS Slow Start
- TLS False Start (Firefox 5)
Mobile
- "Native" app install to home screen
- Server-sent events over SMS with Activation model
Flexbox / Grid
- Support for these & specs for better application UI
- "Replace XUL with HTML"
Display
- Color Correction control
- CSS 2.1 tests fallout (Firefox 5)
- Finish CSS 3 Backgrounds (Firefox 5)
- Full Screen APIs (Firefox 5)
- text-overflow: elipsis (Firefox 5)
- 3D Transforms (Firefox 5)
- Control over font downloading display behaviour
- Events for font, css and JS downloads completed
- WebP support (maybe)
Content
- Video capture and upload
- WebSRT for HTML5 video
- WebM + Adaptive Bandwidth
- HTML5 video looping
- Finish HTML5 forms
- Content Editable
- Web-exposed transation manager
- Events system
- Works by default
- Selection API
- Accessibility API
Developer Tools
- Inspector (Firefox 5)
- Web Timing spec (Firefox 5)
Identity and Social
Account Manager
- In-browser UI (Firefox 5)
- Web APIs (Firefox 5)
Log into the browser
- In-browser UI
Mozilla ID service
- Account Dashboard
- User Consent Flow
- ID Provider
- OAuth consumer
- Single sign-on for Mozilla Properties
- Contacts connector
- Contacts web API
- Contacts UI
- Connects to Sharing (F1)
Data Broker UI
- Sharing data from one application to another
Sharing
This service is similar to the F1 service but is based on the identity services that we will build, including the Mozilla ID service, the contacts connector and any other social services we will build into the browser.
Components
- UI and Chrome
- Backend service
- Sharing Web API
Real Time (Push) Applications
Application Framework
- Activation model for headless applications
- Activation model to go from headless to UI
- Notifications APIs
- Service to connect SMS with registered applications
- EventSource API
Real Time Audio and Video support
- Specs for HTML binding APIs for audio and video
- Networking stack (STUN, ICE, other)
- Audio & Video capture and playback stack
- Device integration
- Out of band real-time point to point protocol
- Out of band real-time point to point Web API
Solid Baseline
Metrics
- Telemetry
Privacy
- Do not track header
- 3rd Party Cookies setting from Safari (dwitte has plans)
- Secure Storage (Nicholas' proposal)
- Secure DNS
- How to connect to SSL?
- UI Elements?
- Identity connections?
Performance
- Priorities in Caching
- HTTP Pipelining
- DNS Pre-fetch for link coloring
- Continued JS engine improvements
- Byte Arrays in many APIs
Layout
- Deeper integration with layers for GPU acceleration (especially SVG)
- Removing the view system (code improvement, performance)
- Display-list-based invalidation (ditto)
- Rework inline layout (ditto)
- Finishing CSS 2.1 (run-ins, page-break) (Firefox 5)
- run-ins are from css 2.1 testing
- page-break is wanted by authors
- Many CSS3 features
- Flexbox reimplementation (also chrome perf)
- Grid implementation
- Writing-mode (vertical text)
- CSS animations
- Ruby
- Updating multicol (all of these needed to catch up to Webkit and/or IE)
- Some kind of CSS3 grid/template layout (I suspect Google and/or Microsoft will make a move here, and the Web needs it)