Mozilla Games Technology Roadmap

Andre Vrignaud

In furthering the advantages and appeal of the Web as a platform for games and game technologies, Mozilla is publishing its games-focused roadmap. In short, it’s all about high-performance, plugin-free games on the Web. We have made incredible progress over the last few years; to continue this trend, Mozilla has been working with game developers and tool makers to identify additional enhancements that will further empower the community. The following roadmap outlines both the feedback we received and the solutions we are currently pursuing in response to this feedback. This roadmap may be subject to change.

With the unveiling of WebAssembly, browsers have taken another common step towards native levels of performance on the Web. This roadmap outlines the wider view of additional Web platform functionality needed to allow game developers to provide the best possible experiences. Games are often a great catalyst for driving technology forward due to their demanding nature. To maximize the benefit to the Web, care has been taken to ensure that solutions will benefit the widest possible range of applications.

There are two levels to this document. The first is the Roadmap section which contains areas that are currently in development and we have a reasonable level of confidence we can address in the next year. The second is the Under Consideration section which contains topics that are under active investigation.

Roadmap

  • Allow developers to better exploit hardware parallelism.
    • Developers are struggling to get multi-threaded games running efficiently on the Web:
      • Standardize, implement and ship SharedArrayBuffer [1,2].
      • Add pthreads support to Emscripten [1,2].
      • Expose performance-sensitive Web APIs to Web Workers: WebGL, WebSockets, IndexedDB, WebAudio, WebRTC, WebVR.
      • Share compiled code (asm.js and WebAssembly) between workers [1].
    • Developers want to take advantage of SIMD hardware to optimize their code:
      • Standardize, implement and ship SIMD.js [1,2].
      • Include SIMD in WebAssembly [1].
      • Add SIMD support to Emscripten [1].
  • Improve cold load time of large compiled codebases.
    • Developers want to see reduced download, compilation and startup time for multi-million line compiled codebases.
      • WebAssembly will provide significant download size reductions (even before native support, through the polyfill) [1].
      • Natively decoding WebAssembly will be significantly faster than parsing JavaScript/asm.js [1].
      • Add a fast WebAssembly/asm.js compiler that allows an app to start quickly while a fully-optimizing compilation proceeds in a background thread [1].
      • Off-main-thread, streaming parsing/compilation [1].
    • Developers want to avoid depending on HTTP Content-Encoding:gzip for generic compression.
      • Add Emscripten support to perform decompression in asm.js / WebAssembly while downloading (allowing more aggressive algorithms than gzip).
  • Improve browser storage capabilities.
    • Developers seeking to avoid the permission prompt associated with persistent storage hit limitations of temporary storage as currently implemented in browsers.
      • Improve temporary quota limits to take into account factors like frecency.
      • Provide more information on quota usage and allowance [1].
      • Propose, standardize and implement finer-granularity units of evictable storage [1].
      • Allow cross-origin storage usage [1].
    • Developers that need persistent storage guarantees hit limitations of persistent storage as currently implemented in browsers.
      • Standardize persistent storage so that other browsers implement [1].
      • Reduce UI friction associated with the persistent permission prompt [1].
      • Improve storage management/eviction UI for browser users.
  • Improve browser graphics capabilities.
    • Ship WebGL2 [1].
    • Standardize and implement streaming WebGL canvas via WebRTC [1,2].
    • Run WebGL on discrete hardware for systems with integrated+discrete (e.g. nVidia Optimus).
  • Allow developers to better avoid 32-bit browser Out-of-Memory conditions.
    • Ship 64-bit Firefox on 64-bit Windows.
    • Avoid Emscripten in-memory Virtual File System for asset storage by leveraging pthreads and FileReaderSync to provide synchronous file I/O in workers.
  • Continue investment in performance across the platform.
    • Significantly optimize WebAudio performance [1].
    • Reduce WebGL shader compile times [1,2].
    • Reduce latency and jitter in the browser’s rendering pipeline [1,2,3,4].
    • Continue investments in the performance of JS, DOM, WebGL, WebRTC, codec, layout, rendering, compositing, animation, etc.
  • Continue investment in Emscripten.
    • Add support for pthreads, SIMD, and WebAssembly, as mentioned above.
    • Further improve compilation speed.
  • Continue investment in Firefox developer tooling to better support game developers.
    • Improve Web Worker support [1].
    • Allow developers to break on various asm.js/WebAssembly error conditions [1].

Under Consideration

  • Developers are having trouble identifying how many Web Workers they should create to distribute their workload. Benchmarking methods often prove unreliable.
  • Developers are hitting the 20-per-origin limit on web workers in Firefox and are requesting a much higher limit.
  • Leverage multi-process browser architecture to guarantee a fresh address space for games with large contiguous heaps allocated early in process startup.
  • Investigate Out-of-Memory error reporting mechanism to send safe/sanitized triage information back to Web app developers.
  • Collaborate on new standards to improve IME capabilities [1,2].
  • Add hardware cursor API [1].
  • Improve Gamepad API [1].
  • Add Pointer Clipping extension to Pointer Lock API [1].
  • Add Emscripten tooling for memory use/leak debugging.
  • Standardize (as part of WebAssembly or more generally) a more scalable form of source maps suitable for large compiled codes.

What to Look Forward to from Firefox

Mozilla

We created Firefox more than a decade ago with a mission to give people transparency, choice and control online. Since then, the browser has continued to evolve its critical role in how users experience the Web and control their online lives.

That’s why at Mozilla we’re always focused on one question: how do we make Firefox even better and continue to delight users? Because we are different than most tech companies and work in the open, we are sharing some experiments centered around the three focus areas of our strategy.

Firefox Pillars

Uncompromised Quality

The first focus area is delivering an uncompromised user experience that ensures Firefox meets the most rigorous of quality and performance standards. This commitment is evident in the strides we’re making to improve the richest Web experiences like HTML5 video playback and game performance.  We’ll also soon deliver Firefox to new platforms, such as Firefox for iOS and Windows 10, where we will provide an independent and high-performing alternative to the stock browser.

Best Of The Web

Firefox is well known for giving users complete control over their Web experience while pushing the boundaries of the “modern browser.” Today, we’re working with more partners and developers around the world to highlight innovation and offer the best of the Web in Firefox. We showed this with our new search strategy for Firefox to promote choice and innovation and with new open technologies we build based on standards including Firefox Hello, the first WebRTC in-browser video chat tool made in partnership with Telefonica. We continue to pioneer open standards including WebVR, WebGL and WebRTC to advance the Web as the development platform.

Uniquely Firefox

Earlier this year, we asked users to identify what’s different about Firefox and the results reaffirmed our view that it’s important for Firefox to be increasingly recognized for attributes such as performance, trust and quality that align with our mission.

We value that our users trust us because we protect their choices and protect their privacy. That’s why we are experimenting with improvements to private browsing and other unique features for a major release focused on these three areas that we’ll share with Firefox users later this year.

Stay tuned for more.

Update on Firefox for iOS

Mozilla

We want to bring Firefox to every language, platform and device possible. Although we can’t bring the full Firefox experience and rendering engine to iOS due to the restrictions, we saw an opportunity with the latest improvements and tools in iOS 8 to begin development of a Firefox experience for iOS.

The Firefox team has been working hard on development of this new browser over the past few months. We are sharing source code in Github for the brave early testers and are also preparing for a limited Firefox for iOS Beta soon. Of course, we would prefer to have a large, open beta, but we must work through the required development and release process to get a Firefox app tested on iOS to get it ready to share with the world.

We’ll post more updates here as Firefox for iOS develops.

Help Test Changes to New Tab in Firefox Beta

Kevin Ghim

It’s been 18 months since we started working to improve digital advertising experiences for the Web.  We released our first two products, Directory Tiles and Enhanced Tiles, last November.  Directory Tiles have proven that Tiles can deliver successful advertising in Firefox and Enhanced Tiles was our first step to show it is possible to deliver personalization while respecting privacy.  The next step is to scale these advances to the entire Firefox population.

Suggested Tiles will merge with the Beta channel next week – Beta testers should start to see Tiles promoting Firefox for Android, Firefox Marketplace and other Mozilla causes.

Suggested Tiles is an advertising experience that delivers content recommendations that are relevant for the user in a transparent way while at the same time respecting their privacy, and giving them complete control over the experience.  As a tester, you should be able to identify clearly what is promoted or sponsored content, understand why you’re seeing it, interact with it and be able to change your settings with ease.  If you want to opt out entirely of Tiles, you may do that effectively and easily. Please note that we are not testing ad blocking add-ons with Suggested Tiles.

Where something doesn’t work as specified, please file bugs under Firefox, Component New Tab page.  If you have comments on the quality of the experience, please let us know through Firefox Input.

* Note: if you set DNT=1, it is possible that you may not be receiving Suggested Tiles.  You can very simply enable them on the new tab page with the cogwheel.  We made the decision to opt users out of all sponsored Tiles experiences if they have DNT=1 quite early on, as we believe that most DNT early adopters are seeking to opt out of all advertising experiences.  However, it’s important to understand that no tracking is involved in delivering Tiles.

More information:

Get a Firefox Account and Test New Features in Firefox Beta

Chad Weiner

We’re experimenting with new features in Firefox Beta to give you more ways to connect with the people and content you want on the Web.

There’s a new tab sharing feature in Firefox Hello Beta so you can share any website you’re viewing while talking to friends, family and co-workers. We’re also testing a new integration with the popular service, Pocket. Pocket allows you to save stories, videos and websites to enjoy at a later time.

To test Firefox Hello tab sharing, follow these steps:

  1. Click the Hello icon in the Firefox toolbar.
  2. Start a conversation.
  3. Connect with your guest.
  4. Click the share icon.

To experience even more of Hello, sign up for a Firefox Account. You can then add and save contacts directly into your Hello contacts list, making it easier to connect with friends and family.

Firefox Hello Tab sharing

You’ll see the Firefox Accounts sign up option by clicking the Hello icon and looking at the bottom right of the conversation control center.

Firefox Accounts

You can even use Firefox Hello without an account, the people you’re connecting to just need to click your link to join a call with you.

When you have a Firefox Account, you can also test the new Firefox Beta Pocket integration, following these steps:

  1. Click “Sign up with Firefox.”
  2. You’ll create your account and be asked to confirm your email.
  3. Open your email service and click the confirmation link in the message we’ve sent you.

Pocket

You’re now ready to use Pocket. To start testing, visit any website and click the Pocket icon in the toolbar. For example, visit Yahoo news. Once there, click the Pocket icon. That page will be saved to your Pocket. You can access that content again through Firefox by clicking the Pocket icon and selecting View List. You’ll then be taken to the screen below where you can view and manage your saved content.

Pocket

Pocket is available in Firefox Beta in English, German, Japanese, Russian and Spanish and more languages are coming soon.

An Early Look at WebGL 2

mbest

One of the common requests we’ve had since we started work to bring high-end gaming to the Web is the desire to take advantage of the more modern 3D graphics capabilities present in desktop GPUs, as well as the latest generation of mobile GPUs. WebGL, the Web’s standard for 3D graphics, is tied closely to OpenGL ES, the standard for mobile 3D graphics. WebGL 1.0 was based upon OpenGL ES 2.0, which ensured that WebGL content could run on the widest possible hardware, both desktop and mobile.

Today, we’re introducing a preview of WebGL 2, which is still under development by the WebGL working group. WebGL 2 is based on OpenGL ES 3.0, and brings with it many improvements and additions to help developers create stunning visuals on the Web. WebGL 2 will raise many restrictions and add new capabilities compared to WebGL 1. For example, while WebGL 1 only required support for being able to render using 8 textures at a time, WebGL 2 raises this minimum limit to 32.

WebGL 2 also includes requirements for higher precision in fragment shaders, adds support for features such as occlusion queries and geometry instancing, and introduces developer-controlled access to antialiasing, multiple render targets, and more. All of this combines to enable Web developers access to more advanced graphics on both desktop and mobile platforms.

The Unity 5 engine includes experimental support for WebGL export, and we’ve worked with Unity engineers to bring their ES 3.0 target to WebGL 2. Check out Unity’s Teleporter demo below, taking advantage of new WebGL 2 rendering features!

Calling All Beta Users: Help Test Simplified Calling in Firefox Hello

Chad Weiner

We have some exciting new updates to Hello, our communications feature in Firefox, and we could use your help testing them because we value your feedback. Hello focuses on making it easier to communicate with your friends and family who might not have the same video chat service, software or hardware as you.

Together with our long-term partner Telefónica, and leveraging TokBox technology, we’re looking to make it easier to communicate over the Web by providing people with the first global communications system built directly into a browser. Firefox Hello is free to use, allows you to connect with anyone who has a WebRTC-enabled browser such as Firefox, Chrome or Opera and doesn’t require you to sign up for an account.

Since we introduced Hello, we’ve been listening closely to user feedback and acting on it. We’ve heard from people who love not having to sign up for an account or download a plugin in order to use Hello. We’ve also heard that the call initiation process and call management could be simpler. As a result, in Firefox Beta we’ve made important changes to the account-less call mode that simplifies the call process by eliminating some steps. Now when you start a conversation a window opens showing a self-view until the person you have invited clicks on the link and joins you. When the person you have called joins the conversation, you’ll be notified with an audio alert and the Hello icon will turn blue.

Each conversation window has a shareable, unique URL for two people to communicate more easily over video or audio. You can create multiple conversations and name them for different topics, making it easier to go back to the people you speak to regularly without having to create a new link each time. For example, you might set one conversation up for your weekly catch up with your family and a different one for a daily meeting with your co-worker. And the best part is that you still don’t need to set up an account to benefit from this feature. Your saved conversations will always be there when you need them.

New conversation window in Firefox Hello

New conversation window in Firefox Hello

For those of you who still love direct calling – don’t worry, we’re not taking this away. You will still be able to call people directly if both parties have Firefox Accounts.

So why not start a conversation and at the end of your call let us know what you think. Your feedback will help us find and fix bugs and enable us to get ready to share rooms with more Firefox users. Here are the instructions on how to create a conversation using Hello.

More information:

Ericsson Interops OpenWebRTC with Firefox

pjarratt

Recently, Ericsson announced successful interoperation of its OpenWebRTC client with Firefox. This is very exciting for us; it marks several important milestones, both for Firefox and for the WebRTC specification itself.

Ericsson’s Bowser, which is based on their OpenWebRTC implementation, represents not just a third interoperable browser in the WebRTC space, but the first totally independent implementation. While most of the code in Firefox and Chrome’s WebRTC stack comes from completely different teams, some of the media handling is shared between the two. This common heritage, however small, has led to doubts around whether the IETF and W3C specifications are sufficiently detailed to achieve interoperability. Ericsson’s work in this space serves the incredibly valuable role of proving out that WebRTC interoperability can be achieved independently, simply by following the standards as they are specified.

Ericsson

The timing is fortuitous: both the IETF and the W3C are now approaching the home stretch in their WebRTC-related work, and the final steps to publish the relevant specifications will begin in earnest in the next few months. Multiple independent codebases allow us to discover where the specifications are ambiguous, incomplete, or inaccurate: if two different teams believe that they have implemented a standard but still don’t work together, it’s probable that the specifications themselves need to be adjusted. These kinds of problems are orders of magnitude easier to fix before they’ve been published.

In addition to the basic WebRTC interoperability story, Ericsson’s work also represents a completely independent H.264 implementation that works with Cisco’s real-time OpenH264 stack, which is incorporated in Firefox’s WebRTC codebase. Although H.264 is a mature, well-tested technology, its incorporation in Firefox is done in a novel way – through the use of the new Gecko Media Plugin (GMP) architecture – that had previously been tested only with itself. Further, Firefox’s implementation of other aspects of its H.264 handling, such as RTP packetization, parameter negotiation, and packet loss handling, had similarly been only self-tested. Ericsson’s success in interoperating H.264 video demonstrates the viability of the OpenH264 codec, our associated media handling and signaling, and the GMP architecture.

Finally, the simple existence of a second general-purpose, interoperable WebRTC toolkit (in addition to the WebRTC.org library) serves the critical role of growing diversity in library implementations, which helps avoid the rise of the kind of software monoculture that is so harmful to interoperable standards. In single-implementation ecosystems, having the same bug on two systems may result in a flaw being masked. Importantly, this makes it much harder for newcomers to the game to write software that works with the incumbent implementations. Additionally, the mere existence of more than one library keeps implementors “honest”: the temptation to implement proprietary or out-of-specification behavior is tempered by the knowledge that doing so will break their interoperability with many other implementations.

Mozilla would like to thank Ericsson for their important work in helping advance the WebRTC standard and in expanding the implementation ecosystem. We are proud that they chose Firefox as the reference implementation to use to test their interoperability, and look forward to seeing additional open-sourced projects based on their OpenWebRTC library.

Adam Roach, Principal Platform Engineer

Changes to Search in Firefox

Johnathan Nightingale

Think about what you’ve searched for in the last week: gifts for family, travel ideas, worrying health symptoms, long lost friends. Search is a central part of how we live online, and that makes it a personal, intimate act. That’s why I’m excited about the changes coming to search in Firefox. We build Firefox for you, and we work constantly to ensure that it fits your online life.

The first change, as Chris announced a few weeks ago, is that we will no longer have a single, global default for search providers in Firefox. This is really important: Firefox is available in more than 80 locales and we can now choose great defaults independently in each one. Of course, we’ll always offer you several built-in search providers to choose from, and the ability to install new ones.

For our US users, the new Yahoo default also comes with a new, modern Yahoo search experience. We collaborated with Yahoo to help them create something special for Firefox users, with richer search results that pull from the best of the Web (like integrated Yelp reviews for restaurants, Tripadvisor for travel, and lots more). Yahoo has also committed to respect Do Not Track signals from Firefox users across all Yahoo properties. For our users that choose not to have their activity tracked across the web, I’m thrilled that we can offer a default search that respects their choice.

The new search interface in Firefox

The last big change you’ll see in Firefox is our new search box. You’ve told us that, even with great defaults, you often have special searches you want to send directly to a different provider, like Wikipedia. Now you have the power to choose any search engine in a single click, without having to change your default.

If you don’t see these changes in your Firefox right away, don’t worry; you will. For something as central as search, we take extra care, and that means we’re going to roll this one out slowly (if you really can’t wait, try our pre-release channels).

Firefox search options

We provide more search choices in Firefox than any other browser because their differences matter; to you, to us, and to the web. We hope you’ll enjoy the improvements we’ve made to search in Firefox, and we look forward to bringing you more awesome in 2015.

Test the new Firefox Hello WebRTC feature in Firefox Beta

Chad Weiner

We have some exciting updates to our experimental WebRTC feature in Firefox. We’ve added some new functionality to play with and a new name. Say ‘Hi!’ to Firefox Hello.

Firefox Hello provides more value to Firefox users by making it easier to communicate with your friends and family who might not have the same video chat service, software or hardware as you. It’s free to make voice and video calls and there’s no need to download software, plugins or even create an account. It’s ready to go as soon as you open Firefox Beta by clicking on the ‘chat bubble’ icon under the customize menu. Hello allows you to connect with anyone who has a WebRTC-enabled browser, such as Firefox, Chrome or Opera. We should give a shout out to our friends at TokBox, whose OpenTok platform is used to power this new feature.

The new features we’ve added to Firefox Beta include:

New Call Options

One of the great features of Firefox Hello is that you don’t need to create an account in order to connect with the people that matter to you most. You simply share a callback link with the person you want to connect with and when they click on the link the call begins.

Call Management Panel

Call Management Panel

But let’s say that you start using Hello all the time with your friends and family. As an added convenience, you should sign up for a Firefox account for even easier one-click calling from Firefox. After signing in, you can initiate or receive direct calls with other Firefox Account users, without having to share a callback link first. You can sign into your Firefox Account on every computer you use, so you can be reached at home or at work.

Contacts Integration

We’ve also added contacts management for the first time in this release. You can add contacts to your address book manually or import contacts from your Google account to Firefox Hello. Simply select ‘Import Contacts’ from the address book and then sign into your Google account to give permission. If your contacts have a Firefox Account and are online, then you can call these contacts directly from Firefox.

These are just some of the main improvements that we will be rolling out over the next few weeks to all Firefox Beta users. So please test them out and let us know what you think at the end of your call. Please remember we’re still in the experimental phases and making a lot of changes behind the scenes.

We look forward to receiving your feedback on these new features, so we can get Firefox Hello ready to share with the world.

More information: