Mozilla Firefox: Present and Future - Fluent JS

47
MOZILLA FIREFOX Present and future Rob Hawkes Hi, I’m Rob Hawkes and I’m here today to talk about Firefox and some of the JavaScript-related functionality that has just arrived or is coming soon.

description

 

Transcript of Mozilla Firefox: Present and Future - Fluent JS

Page 1: Mozilla Firefox: Present and Future - Fluent JS

MOZILLA FIREFOX

Present and future

Rob Hawkes

Hi, I’m Rob Hawkes and I’m here today to talk about Firefox and some of the JavaScript-related functionality that has just arrived or is coming soon.

Page 2: Mozilla Firefox: Present and Future - Fluent JS

If you don’t already know, I work at Mozilla.

My official job title is Technical Evangelist, but I prefer what it says on my business card.

Part of my job is to engage with developers like yourselves about cool new technologies on the Web.

And for those of you with no idea of what a rawket is, I made a multiplayer game called Rawkets in which players fly around in little rockets and shoot each other in the face with the latest Web technologies. It’s quite addictive!

http://rawkets.com

Page 3: Mozilla Firefox: Present and Future - Fluent JS

I’m not sure how much time we’ll have for questions at the end, but feel free to grab me in person after the talk or on Twitter.

These slides will go online after this talk, they include links to more information on the technologies covered.

I’ll put all the details up at the end.

Page 4: Mozilla Firefox: Present and Future - Fluent JS

I haven’t got long with you guys today so I can’t cover everything in Firefox with you.

Instead, I’m going to go over some of my favourite HTML5 and JavaScript-related features that have either just landed or will be coming in the near-future.

I’ll give you a bunch of resources to go out and find out about everything else that I couldn’t cover.

Page 5: Mozilla Firefox: Present and Future - Fluent JS

4Pretty much 1 year ago Firefox was at version 4.

As of today the latest public release is version 12, with versions 13, 14 & 15 already going through developer testing.

This new rapid release process has allowed us to push more features to developers and users in a shorter space of time.

Page 6: Mozilla Firefox: Present and Future - Fluent JS

Firefox Persona

B2G

Web Apps

Kilimanjaro is a milestone across several of the Mozilla products; Firefox, B2G, Web Apps, and Persona.

The Kilimanjaro Event is not a single release, it is an incremental effort that results in an coherent experience across those products.

When we reach the Kilimanjaro milestone we will have an elegant and simple experience for HTML5 Web apps in Firefox on multiple devices that puts the user in control of their apps and identity.

‘Kilimanjaro’ is planned to be reached by September 2012.

https://wiki.mozilla.org/Kilimanjaro

Page 7: Mozilla Firefox: Present and Future - Fluent JS

WebAPI

Device APIs and hardware access

WebAPI is a catch-all term for the technologies that we’re working on that allow developers to access hardware and operating system APIs using JavaScript.

Page 8: Mozilla Firefox: Present and Future - Fluent JS

Multitouch

WebBluetooth

WebGL

WebTelephony

WebSMS

WebNFC

Geolocation

CameraWebUSB

Battery API

WebContacts

Full Screen API

Settings API

WebVibration

One approach we’re taking is to try and replicate the functionality of a mobile phone with JavaScript.

What APIs would you need to do that?

This has resulted in our Boot to Gecko project.

http://hacks.mozilla.org/2011/08/introducing-webapi/http://arewemobileyet.com

Page 9: Mozilla Firefox: Present and Future - Fluent JS

Boot to Gecko

Boot to Gecko, referred to as B2G, is a full operating system and platform for mobile devices that is built using nothing but JavaScript and HTML.

I won’t cover it in any more detail as it’s not directly connected to Firefox but I have a development device with me today and am happy to let you play on it and talk about it more after this session.

https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko

Page 10: Mozilla Firefox: Present and Future - Fluent JS

Touch Events

Multitouch and gestures

Touch Events

https://developer.mozilla.org/en/DOM/Touch_events

Page 11: Mozilla Firefox: Present and Future - Fluent JS

Camera API

Accessing the camera

The Camera API lets you access the camera on a device.

Being able to do this with JavaScript will make a whole world of difference in so many areas.

For example, instead of requiring a user to upload a profile image you could take one using the webcam and use that instead. Simple but effective.

https://wiki.mozilla.org/Platform/Features/Camera_API

Page 12: Mozilla Firefox: Present and Future - Fluent JS

WebVibration API

Vibrating you with open technologies

WebVibration API, previously known as the WebVibrator API

https://bugzilla.mozilla.org/show_bug.cgi?id=679966

Page 13: Mozilla Firefox: Present and Future - Fluent JS

Battery API

Monitoring power usage

Battery API

https://bugzilla.mozilla.org/show_bug.cgi?id=678694

Page 14: Mozilla Firefox: Present and Future - Fluent JS

Fullscreen API

Simple, yet powerful

While not technically part of the WebAPI effort, The Fullscreen API allows you to expand any HTML element to fill the users screen, even if the browser isn’t running full screen itself.

For games, this is great because you can make the small canvas element fill the entire screen.

Outside of games, this is useful for video elements and Web applications.

https://bugzilla.mozilla.org/show_bug.cgi?id=545812https://wiki.mozilla.org/Platform/Features/Full_Screen_APIs

Page 15: Mozilla Firefox: Present and Future - Fluent JS

Screen Orientation

Must-have on mobile devices

Screen Orientation allows you to do things like changing and locking, you guessed it, the orientation of the screen.

Before now, it’s been incredibly difficult to lock orientation on a website or game using nothing but JavaScript.

https://bugzilla.mozilla.org/show_bug.cgi?id=740188http://dvcs.w3.org/hg/screen-orientation/raw-file/default/Overview.html

Page 16: Mozilla Firefox: Present and Future - Fluent JS

WebRTC

Skype in the browser

WebRTC is currently being worked on and will allow video conferencing using nothing but JavaScript.

It’s actually a bunch of smaller components, ranging from camera devices access to peer to peer network communication.

Some of the core components are planned to be released later this year.

https://wiki.mozilla.org/Platform/Features/VideoConferencinghttps://bugzilla.mozilla.org/show_bug.cgi?id=665909http://www.webrtc.org

Page 17: Mozilla Firefox: Present and Future - Fluent JS

Open Web Apps

Putting developers and users back in control

The concept of Web apps is something that is gaining a lot of traction at the moment.

It’s no doubt this this traction is as a result of the success of native applications and games on the desktop and mobile, particularly with iOS and Android.

https://developer.mozilla.org/en/Apps

Page 18: Mozilla Firefox: Present and Future - Fluent JS

It’s something we’re spending a lot of time on at Mozilla.

We envisage Web apps to run on any device, any browser, and to be distributed through any store or website.

https://developer.mozilla.org/en/Appshttps://marketplace.mozilla.org

Page 19: Mozilla Firefox: Present and Future - Fluent JS

The process of installing an Open Web App is handled by the browser.

In Firefox this means a door-hanger prompt will appear when you request to install an app from a marketplace or a developer’s website.

From there the browser will handle the rest of the installation process.

Page 20: Mozilla Firefox: Present and Future - Fluent JS

App-like experience

Launch from the desktop or home screen

Something that needs to be tackled with Web apps is how to make them feel like real applications rather than glorified websites.

One way that is being considered is completely removing the browser chrome and running the application in it’s own window.

This will effectively mean that you have full control of the app UI and it won’t look like it’s being run in a browser.

Page 21: Mozilla Firefox: Present and Future - Fluent JS

At Mozilla we call this WebRT, which stands for Web Run-Time.

By using WebRT you can install a Web app directly into the OS just like you would a native application.

The WebRT app will look and feel like a native application when launched but will actually be running a browser rendering engine behind the scenes.

This is an example of the game Sinuous running as a WebRT app with the Firefox rendering engine. Notice the lack of browser UI.

https://developer.mozilla.org/en/Apps/Apps_architecture#Web_runtime

Page 22: Mozilla Firefox: Present and Future - Fluent JS

Game-related APIs

Bringing the console to the Web

Aside from WebAPI and Web Apps, there are a few APIs that we’re working on specifically for games.

Page 23: Mozilla Firefox: Present and Future - Fluent JS

Pointer Lock API

Locking the cursor in one place

The Pointer Lock API is an attempt at improving the mouse as an input device.

It would be used in situations like games and 3D visualisations where the mouse position rotates or moves you around a 3D space.

As it stands there’d still be a cursor moving around the screen causing all sorts of trouble when you want to click on something in your game.

With the new API you can lock your mouse position and stop it from getting in the way and being a nuisance.

Both Google and Mozilla are working on an implementation of this right now, it’s available in a custom build of Firefox.

https://developer.mozilla.org/en/API/Pointer_Lock_APIhttps://bugzilla.mozilla.org/show_bug.cgi?id=633602

Page 24: Mozilla Firefox: Present and Future - Fluent JS

Gamepad API

Bringing the console to the Web

The Gamepad API is one of the major improvements to input that is coming.

Both Mozilla and Google are working an an implementation of this and there is actually an experimental build of Firefox available to the public that has it working. The API is also in the dev build of Chrome.

What I find most interesting about the Gamepad API is that it might be just the thing we need to finally justify HTML5 gaming on a TV or console.

Who wants to use a keyboard and mouse while sitting on the sofa?

https://wiki.mozilla.org/GamepadAPIhttp://www.gamepadjs.comhttps://github.com/jbuck/input.js

Page 25: Mozilla Firefox: Present and Future - Fluent JS

This is another little demo that I put together to show off the Gamepad API implemented in my game Rawkets.

Page 26: Mozilla Firefox: Present and Future - Fluent JS

Performance

Making things better and faster

There are a bunch of projects happening at Mozilla that aim to improve performance in Firefox.

Page 27: Mozilla Firefox: Present and Future - Fluent JS

Snappy

Firefox desktop responsiveness

Snappy aims to improve responsiveness in Firefox on the desktop.

It’s purpose is to improve things like startup time, the responsiveness of UI elements, as well as things like page load time and navigation speed.

We’re landing a whole bunch of fixes in this area, details of which can be found on the Snappy wiki page.

https://wiki.mozilla.org/Performance/Snappy

Page 28: Mozilla Firefox: Present and Future - Fluent JS

MemShrink

Reducing Firefox memory consumption

MemShrink aims to reduce memory consumption in Firefox, which will make the browser faster and more stable.

This is achieved by slimming down the amount of memory used in the browser whilst also fixing things like memory leaks.

As with Snappy, we’re landing a whole bunch of fixes with MemShrink.

https://wiki.mozilla.org/Performance/MemShrinkhttps://areweslimyet.com

Page 29: Mozilla Firefox: Present and Future - Fluent JS

Incremental GC

Making things faster and more reliable

Incremental GC is one of the many improvements made in Firefox to improve performance.

It basically divides the garbage collection time in JavaScript into short increments.

Overall, the same time is spent doing GC but each individual GC pause would be shorter and less noticeable.

This is integral for high-performance JavaScript projects like games and animation but the improvements also help speed up all JavaScript in general.

Incremental GC landed in Fx15.

https://wiki.mozilla.org/Platform/Features/Incremental_GC

Page 30: Mozilla Firefox: Present and Future - Fluent JS

Developer tools

Built-in tools for development bliss

Developer tools

https://wiki.mozilla.org/Features/DevToolshttp://blog.mozilla.org/devtools/

Page 31: Mozilla Firefox: Present and Future - Fluent JS

Page Inspector

https://wiki.mozilla.org/DevTools/Features/Highlighter

Page 32: Mozilla Firefox: Present and Future - Fluent JS

3D View (Tilt)

https://wiki.mozilla.org/DevTools/Features/PageInspectorTilt

Page 33: Mozilla Firefox: Present and Future - Fluent JS

Style Editor

https://wiki.mozilla.org/DevTools/Features/CSSEditor

Page 34: Mozilla Firefox: Present and Future - Fluent JS

JavaScript Scratchpad

Page 35: Mozilla Firefox: Present and Future - Fluent JS

Web Console

Page 36: Mozilla Firefox: Present and Future - Fluent JS

JavaScript debugger

https://wiki.mozilla.org/DevTools/Features/Debugger

Page 37: Mozilla Firefox: Present and Future - Fluent JS

Keeping up

So much stuff on the horizon

I’ve really only touched the tip of the iceberg here.

There is much more coming in the near future.

Here are a few ways to keep up with things and get yourself prepared with the things happening in Firefox.

Page 38: Mozilla Firefox: Present and Future - Fluent JS

Platform features on the Mozilla Wiki

https://wiki.mozilla.org/Features/Platform

Page 39: Mozilla Firefox: Present and Future - Fluent JS

Desktop features on the Mozilla Wiki

https://wiki.mozilla.org/Features/Desktop

Page 40: Mozilla Firefox: Present and Future - Fluent JS

Mobile features on the Mozilla Wiki

https://wiki.mozilla.org/Features/Mobile

Page 41: Mozilla Firefox: Present and Future - Fluent JS

Are We Fun Yet? on the Mozilla Wiki

https://wiki.mozilla.org/Platform/AreWeFunYet

Page 42: Mozilla Firefox: Present and Future - Fluent JS

Multitouch

WebBluetooth

WebGL

WebTelephony

WebSMS

WebNFC

Geolocation

CameraWebUSB

Battery API

WebContacts

Full Screen API

Settings API

WebVibration

Are We Mobile Yet

http://arewemobileyet.com

Page 43: Mozilla Firefox: Present and Future - Fluent JS

Hacks blog

http://hacks.mozilla.org

Page 44: Mozilla Firefox: Present and Future - Fluent JS

Firefox Aurora

“Get a first look at the latest developer tools, security features and innovative HTML5 and other Web technologies.”

http://www.mozilla.org/en-US/firefox/channel/#aurora

Page 45: Mozilla Firefox: Present and Future - Fluent JS

Firefox Nightly

Bleeding edge functionality.

Testing only.

http://nightly.mozilla.org

Page 46: Mozilla Firefox: Present and Future - Fluent JS

Talk to us

We live on Mozilla IRC

The general rule of thumb at Mozilla is to look for the relevant people on IRC if you want a quick response, we tend to live on there.

The server you want is irc.mozilla.org

The channels you want are #b2g and #gaia for B2G-related stuff, #openwebapps for Open Web Apps, and #webapi for anything about WebAPIs.

Page 47: Mozilla Firefox: Present and Future - Fluent JS

Rawkes.comPersonal website and blog

Rob Hawkes

Rawkets.comHTML5 & WebSockets game

Twitter sentiment analysisDelving into your soul

RECENT PROJECTS MORE COOL STUFF

Rawket ScientistTechnical Evangelist at Mozilla

@robhawkes

Slidesslideshare.net/robhawkes

Get in touch with me on Twitter: @robhawkes

Follow my blog (Rawkes) to keep up to date with stuff that I’m working on: http://rawkes.com

I’ve recently worked on a project that analyses sentiment on Twitter: http://rawkes.com/blog/2011/05/05/people-love-a-good-smooch-on-a-balcony

Rawkets is my multiplayer HTML5 and JavaScript game. Play it, it’s fun: http://rawkets.com

These slides are online at http://slideshare.net/robhawkes