Slide 1

Slide 1 text

OPEN WEB APPS Mozilla Labs Apps project Rob Hawkes Hi, I’m Rob Hawkes and I’m going to talk about the Mozilla Labs Apps project and what it means for the Web.

Slide 2

Slide 2 text

I work at Mozilla, a non-profit company who is fighting for a better Web. If you’re unsure about how much I love Mozilla then check out this beautiful chicken and leek pie with extra Firefox goodness. It was made by my talented girlfriend and it was delicious.

Slide 3

Slide 3 text

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 and designers like you and I about cool new technologies on the Web. I’m interested in everything that’s going on but my particular focus at Mozilla is on game development using Web technologies. 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 HTML5 and JavaScript. It’s actually quite fun! http://rawkets.com

Slide 4

Slide 4 text

We might have enough time for questions at the end but feel free to grab me in person after this talk or on Twitter. I’m always happy to help. These slides will go online after this talk and they’ll be available from my personal website. I’ll put all the details up at the end.

Slide 5

Slide 5 text

Created by Phil Banks (@emirpprime) Now, it’s no secret that I spend most of my time experimenting with HTML5 and other cool technologies like JavaScript. If you’ve met me before then you probably already know about my slight addiction to HTML5 canvas, visual programming, and gaming.

Slide 6

Slide 6 text

The concept of Web apps is something that is gaining a lot of traction at the moment. No doubt this is as a result of the success of native applications on the desktop and mobile, particularly with iOS and Android. What’s exciting is that HTML5 and JavaScript are now allowing developers to create app experiences on the Web that can rival those on the desktop and mobile. But just having the technology isn’t good enough.

Slide 7

Slide 7 text

Current situation Things could be better Currently, app platforms are predominantly closed in either the technology required to make the apps or the methods that are used to distribute them. Although these approaches do have their benefits they also put unnecessary constraints on the developers and users of apps. It’s also not an ideal solution if we want an open Web.

Slide 8

Slide 8 text

Mozilla Labs Apps project For the good of the Web At Mozilla we think there is a better way, a way that puts the developers and users of apps back in charge. We think there is a way that embraces open technology and is for the good of the Web. We call it the Mozilla Labs Apps project and we’re working hard to make it a reality.

Slide 9

Slide 9 text

Reach Apps can be used cross-platform It allows you to create rich HTML5 app experiences that run across multiple devices and form factors (desktop, mobile, tablet, etc.)

Slide 10

Slide 10 text

Open technology What you already use to make websites It allows you to use Web standards and open technologies such as HTML5, CSS and JavaScript. Anything you currently use to build a website with can be used to build an app.

Slide 11

Slide 11 text

Freedom of choice Putting devs and consumers in control It puts you in control of every aspect of the app experience; from easy development, to distribution, to direct communication with your customers.

Slide 12

Slide 12 text

Developer preview Laying the groundwork Right now we’re in a limited Developer Preview to lay the groundwork and test things but we’ll soon be opening that up so more people can try it out.

Slide 13

Slide 13 text

Getting started How to create an app Creating a Web app isn’t crazy hard, it’s just a case of understanding the new features in browsers.

Slide 14

Slide 14 text

Apps are websites They use the same technology Apps are websites and are built using the same technology and processes. If you already know how to make a website then creating your first Web app is a breeze.

Slide 15

Slide 15 text

Extending the website Adding new functionality for apps The Mozilla Labs Apps project proposes some additions to standard websites and introduces a few new JavaScripts APIs into the browser that help make apps an experience unlike any other on the Web. If you don’t know JavaScript then don’t be put off, the amount that’s needed to make an app is relatively small and should make sense to you. However, I would definitely advise learning JavaScript development if you’re planning on getting really involved in Web apps.

Slide 16

Slide 16 text

Application manifest Turning a website into an app The only thing that you need to do to turn a website into app is create an application manifest.

Slide 17

Slide 17 text

{ "version": "1.0", "name": "MozillaBall", "description": "Exciting Open Web development action!", "icons": { "16": "/img/icon-16.png", "48": "/img/icon-48.png", "128": "/img/icon-128.png" }, "developer": { "name": "Mozilla Labs", "url": "http://mozillalabs.com" }, "installs_allowed_from": [ "https://appstore.mozillalabs.com" ], "default_locale": "en" } This is a JSON file that effectively describes your application; it’s name, icons, and other related data.

Slide 18

Slide 18 text

Manifest requirements Important to remember There are a couple of important things to remember when creating an application manifest.

Slide 19

Slide 19 text

Same domain An element of security The first is that it needs to be hosted from the same domain as your Web app. This is pretty straightforward and it adds an element of security in that it is unlikely that a rouge manifest file will be able to be put on the same domain without your knowledge.

Slide 20

Slide 20 text

Content-type header application/x-web-app-manifest+json The second is that it needs to be served with a specific content type (application/x-web-app- manifest+json). This is probably the most tricky process in turning a website into an app as it involves changing settings on your server or a bit of hackery in your manifest file. If you don’t want to fiddle with your server then you can always set the content-type header using something like PHP or Node.js.

Slide 21

Slide 21 text

Extension my-manifest-file.webapp It’s also recommended that the manifest file has an extension of .webapp, although this isn’t enforced.

Slide 22

Slide 22 text

Manifest validator Making sure everything is ok If you want to make sure your manifest is valid you can have it checked at http:// appmanifest.org

Slide 23

Slide 23 text

Installing apps Via extension and soon in the browser You can install and manage apps using an extension for Firefox on the desktop and an application for Android. We’re working on building the necessary functionality directly into Firefox, as well as providing a JavaScript include that can be used in other browsers. https://addons.mozilla.org/en-US/firefox/addon/app-runtime/ https://apps.mozillalabs.com/bin/Soup-0.1.apk

Slide 24

Slide 24 text

Installing an app navigator.mozApps.install(manifestUrl) Installing an app is achieved through the new mozApps JavaScript API, particularly the install method. By passing it a string URL to the app’s manifest file you will trigger the installation process. An example of when you would call this method is after a user clicks on an “Install this app” button on your own website.

Slide 25

Slide 25 text

The install method triggers an installation dialogue within the browser that allows the user to decide what to do with the app.

Slide 26

Slide 26 text

When installed, apps can be accessed and managed via a special dashboard during the developer preview. This is available by accessing https://myapps.mozillalabs.com or clicking on the Apps link at the bottom of the Firefox window.

Slide 27

Slide 27 text

Apps launched from the dashboard are opened in an application tab at the far left-hand side of the tab bar. An application tab is different in that it has a much smaller visual footprint in the tab bar and there is little browser UI cluttering the screen, like the address bar.

Slide 28

Slide 28 text

Distribution App stores and money Creating an app is only half the story, the final chapter is distributing your app and getting it in the hands of users. There are a couple of prominent options here.

Slide 29

Slide 29 text

Go it alone Take full control and do it yourself The first option is to provide the app only via your own website and do the leg work in regards to promotion. This option is an enticing one for developers who want full control over where and how their app is distributed. However, right now this is a tricky option if you want to charge for your app.

Slide 30

Slide 30 text

Existing platforms Like the Mozilla App Marketplace The second option is to use an existing platform like the Mozilla App Marketplace. There are many benefits to this option but the main ones are that you don’t need to worry about payment systems nor have to do as much promotion. The marketplace uses PayPal and BrowserID to make the purchase and confirmation of purchase as easy as possible. http://apps-preview.mozilla.org/

Slide 31

Slide 31 text

Native experience Apps are no longer just glorified websites I think what is most interesting about the apps project is the ability to break away from the concept of apps being nothing more than glorified websites. Instead, the new functionality allows Web apps to look and act much like native applications that you would find in an operating system, rather than a website running within a browser.

Slide 32

Slide 32 text

WebRT Installing apps within the OS We call this WebRT (Web run-time) and it’s really cool. It allows you to install Web apps in the operating system as if they were a native application. Right now, WebRT is supported on Windows, Mac, and Android. It’s built into the Firefox extension, Android application, and JavaScript include that I mentioned earlier for installing and managing apps.

Slide 33

Slide 33 text

It’s really easy to use and you don’t need to do anything special as a developer to enable it in your app. Whenever a user requests to install an app they will see an option to install it natively.

Slide 34

Slide 34 text

Launch from the dock …or desktop, or home screen Apps installed using WebRT are no different to any other native application that you have on your computer. They’re installed in a standard applications folder and can be launched in the same way that you launch any other application. For example, on the Mac your app would be installed in the ~/Applications directory.

Slide 35

Slide 35 text

No browser UI The application is yours and yours alone WebRT applications use a browser rendering engine behind the scenes but don’t display any normal browser UI that would clutter your app. Instead, WebRT apps look and feel like native applications while actually using HTML and JavaScript behind the scenes.

Slide 36

Slide 36 text

This is an example of my HTML5 game running as a WebRT application, check out the lack of browser UI. Right now WebRT uses the version of Firefox you already have installed to grab the rendering engine. In the future you won’t necessarily need a browser installed and WebRT will handle grabbing a relevant rendering engine behind the scenes.

Slide 37

Slide 37 text

Related technology Pushing apps even further Aside from WebRT and the apps API there are many other Web technologies that help push apps even further.

Slide 38

Slide 38 text

Full Screen API Simple, yet powerful The Full Screen API allows you to expand any HTML element to fill the users screen, even if the browser isn’t running full screen itself. It’s different to using the F11 shortcut for full screen a that makes the entire browser full screen and keeps the address bar and other UI if you place the mouse near the top of the screen. With the Full Screen API only the specific HTML element that you choose will be made full screen and the browser UI will be hidden. It’s useful for things like video and games. https://bugzilla.mozilla.org/show_bug.cgi?id=545812 http://blog.pearce.org.nz/2011/09/mozilla-full-screen-api-progress-update.html https://wiki.mozilla.org/Platform/Features/Full_Screen_APIs

Slide 39

Slide 39 text

WebSockets Bi-directional real-time communication WebSockets is particular favourite of mine. It a JavaScript API that allows you to provide bi-directional real-time communication between a browser and a server. This means you can instantly push data to and from the user as soon as it becomes available.

Slide 40

Slide 40 text

Offline assets Who needs the Internet anyway Technologies like the application cache, Local Storage, and IndexedDB allow for a website or app to cache necessary assets to that it can still run while offline. This includes things like JavaScript files, CSS and images as well as standard key/value data. Combining these techniques will allow your application to continue working even if the Internet connection goes down. You just sync up all the changes when it gets connected again. https://developer.mozilla.org/en/Offline_resources_in_Firefox

Slide 41

Slide 41 text

Device APIs Accessing hardware with JavaScript Device APIs is a catch-all term for the technologies that allow developers to access hardware and operating system APIs using JavaScript.

Slide 42

Slide 42 text

At Mozilla we’re working on the WebAPI effort which is our attempt at solving this problem. In other camps it might be referred to as DAP, which is the Device APIs Working Group who are producing a W3C specification for accessing various parts of a device through JavaScript. In fact, we recently joined the DAP to collaborate and contribute to the existing efforts. The 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? http://hacks.mozilla.org/2011/08/introducing-webapi/ http://arewemobileyet.com/

Slide 43

Slide 43 text

My favourites Device APIs I cannot wait for There are so many Device APIs in the pipeline when you combine all the efforts by the various browser manufacturers. Here are just a few of my favourites.

Slide 44

Slide 44 text

Media Capture API Accessing the camera and microphone The Media Capture API will let you access the camera and microphone 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. You could also do things like using the microphone input for voice recognition in for input areas. I know Google are already experimenting heavily in this area.

Slide 45

Slide 45 text

Battery API Find out how much juice is left The Battery API is interesting because it allows you to find out how much power is remaining, or whether the device is currently being charged.

Slide 46

Slide 46 text

WebNFC API RFID-like wireless communication The WebNFC API is pretty cool. It gives you the ability to transmit and receive data within distances no larger than a few centimetres. The idea is that it can be used in phones for things like payment (like the new Barclaycard), travel (think Oyster Card), and file transfer. https://bugzilla.mozilla.org/show_bug.cgi?id=674741

Slide 47

Slide 47 text

Vibration API Vibrating you with open technologies Or what about the Vibration API that gives you access to the vibration motors of a device. Apart from having a humorous name, it’s APIs like this are really going to change the way that apps are created with JavaScript. https://bugzilla.mozilla.org/show_bug.cgi?id=679966

Slide 48

Slide 48 text

Find out more Documentation and resources I hope I’ve given you a taste for the Mozilla Labs Apps project and the potential for Web apps right now. There is much, much more to learn about them and the related technology.

Slide 49

Slide 49 text

One of the places to check out for general information is the apps section on the Mozilla Labs website. https://apps.mozillalabs.com/

Slide 50

Slide 50 text

For technical information the apps section of the Mozilla Developer Network is the place to go. It’s full of clear documentation on every detail of the project so far and is being update all the time. https://developer.mozilla.org/en/Apps

Slide 51

Slide 51 text

Talk to us #openwebapps on Mozilla IRC For anything that can’t be answered by those websites you should get in touch with us. The developers and relevant apps-related people at Mozilla hang out in the #openwebapps room on irc.mozilla.org so definitely head over there if you have any particular questions or concerns. We’ll be happy to help.

Slide 52

Slide 52 text

Rob Hawkes Rawkets.com HTML5 & WebSockets game Twitter sentiment analysis Delving into your soul RECENT PROJECTS Rawkes.com Personal website and blog MORE COOL STUFF Rawket Scientist Technical Evangelist at Mozilla @robhawkes ExplicitWeb.co.uk Web development podcast 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

Slide 53

Slide 53 text

Hand-picked experts @ASKMDN & #ASKMDN ON TWITTER Coming back this year Web development topics Great discussions Ask MDN ASKMDN And lastly, I’d like to quickly mention Ask MDN which is a project that I’m working on at Mozilla. The concept is simple; every so often we gather a bunch of experts to answer your questions about a particular topic. We’ve had a whole bunch of sessions to date and it’s going down really well. If you follow @AskMDN on Twitter you’ll be sure not to miss the next one when it starts again this year. http://twitter.com/AskMDN

Slide 54

Slide 54 text

THANK YOU Any questions? Rob Hawkes @robhawkes Thank you. If you have any questions feel free to grab me on Twitter (@robhawkes) or email [email protected].