Firefox OS
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Sicking, Jonas
Firefox OS is the next product being developed by Mozilla. It's an open source OS based on the web and following the principals which have made the web a success. We'll demo a phone running recent builds of Firefox OS (it's not a finished product yet) and talk about the technologies and ideas behind Firefox OS. Firefox OS is an OS built entirely on web technologies using Open Source Software. Everything the user sees and interacts with is rendered using standard HTML and CSS and all application code is written in javascript, as is the implementation of many of the new APIs which are exposed to applications and web pages. The idea behind Firefox OS is to create an application platform which lets developers use technologies that they are familiar with from the web and that, as much as possible, create a development environment like the one used on the web. This means that to create an app, all you need to do is to set up a normal website and add a bit of metadata in a JSON file. Users can then "install" this website and get an experience similar to that on traditional OSes like Android or Windows. Our ultimate goal is to have a standardized platform that allows for applications that can run on any OS and any device, just like web pages can run on any hardware that has a browser, while staying true to the technologies and philosophies which drive the web. No need to get approval from an app store, and no need to get locked into the platform of a particular vendor. We will demo a phone running recent builds of Firefox OS (it's not a finished product yet), as well as talk about the technologies and ideas behind Firefox OS and our experience building it.
 Let's get started Hi, my name is Jonas Hicking. I'm with Mozilla. I am the tech lead for the web API team Is it better yes much more so I again my name is Vivian Nicholas I work for Mozilla as well and I'm the tech lead for Gaia, the front end side of the boot to Gecko projects So we're gonna talk about Firefox OS today or as we're gonna eventually call it new Linux Firefox OS Yeah, so these I hope you can sort of read that let me try to zoom in here You had some last-minute slide issues So Firefox OS is a Open source project We It's bit it's uses Gaia, which is the the front end which is entirely written in web technologies using HTML JavaScript CSS JPEGs and so on Behind that is get go which is the rendering engine that we've been using for Firefox for over a decade And then under that is a Linux kernel We're using the same Linux kernel as Android is using and the reason for that is because a lot of hardware manufacturers are already targeting Android or the Android kernel which Means that a it's easier for us to to find partners and but be it also means that it's easier for anyone else to Install Firefox OS on a device that already supports Android So why are we doing this well mostly because it's cool and Web technologies are awesome. We want to use the web in more places but Also because we really believe in open source Open standards and creating a community Community-driven operating system We don't want to have something Where just the source code is available We want people we want a project where anyone can participate The latest version of Firefox OS is available on GitHub and Mercurial Anyone can pull and build whatever code we currently have There's no surprises all the planning happens in the open Anyone can participate and submit patches just like Anyone has been able to do for Firefox So one important point is that it's not done yet we have not shaped Firefox OS anywhere But we are we are very close. We are gonna ship in Q2 We have hardware and and partners hardware manufacturers and partners lined up. So we're gonna have devices Running Firefox OS selling in stores in Q2. It's not the worldwide release though But hopefully we'll get to that point eventually Since Jonas so when we started the project one year ago, it was really The front end parts was oh, let's do this very nice operating system. We have an ID and The first demo was done in August 2011 I think and it was mostly just a version of Firefox mobile with a UI dedicated as an on-screen and The phone code we are using the Android stack all the UI there was part of some Android UI and It was looking really like shit. So We spent the last year changing this We made a complete UI based on HTML JavaScript CSS We reached some incredible performance we use CSS animation Transition we reached 60 FPS on most of the transition transition We You can you may have heard about PDF. Yes, we can use it on desktop to read PDF We can use it on the device. So with JavaScript we can read PDF on such a device so What is it so I don't know if it's Visible so as most fun you and you start with a lot screen. Let's do some CSS For this show animation, I don't know if the camera looks right to see the city of past so The fun as most other is composed of a system application so you see The black bar at the top of the screen is the only visible part of the system that is here all the time It contains it use already some APIs to show the status of the sync card to show the battery So you can also so the battery is a battery API. It works already in WebKit so you can try it There is a notification notification center and All those are parties on screen. It's made of moving parts and Always your part a doc which is always here where you can add eight icons But you can also do it's a fun so let's prove it. Let's see if Jonas can call me like Okay, okay, send me a text message Which number to use Okay, yeah Okay, there is there is no sync card on this one, sorry So Usually does not work without any sim card that's still a web based phone but to make phone calls We need one so my sim card that really in the other device So we can show it after that during the question phase What else so you can obviously send we see this MS access your contact you can browse the web we made a new The web browser in the in the browser so you can and I don't have anything I don't have access to the network. Let's see if I can connect to the Wi-Fi Let's connect to Wi-Fi So we have a lot of API to enable access to Hardware capabilities of the phone Let's see if it's So yes, we got it. No, let's go Nice Hmm So it's looking for network you can see that on the top I It's coming the Wi-Fi is a bit slow so it's coming so you can navigate the web you can load because And one tab is not enough so let's open a new one and Hope it will load faster. So Yes, nice the same so it shows also a little detail each of those tabs leaves inside their own process So every time you create a new tab you spawn a new process and most of the fun architecture is based on this We will speak a bit about it later So One of the other thing is normally you cannot Do a browser using regular web APIs. So we have an extended version of the iframes That let us listen for some events on the page title change load change so we can do more stuff so we enhance the web stack to To be able to do such apps So it's not one network is still coming So let's do Let's use some apps You have all the basic functionality of different fun you can Go to your gallery see your girlfriend See the last guy work week for main contributor the best cat It's not very visible. So let's try so you can edit picture on the fly So we use web GL and some shader. So we have hardware to the 3d effect. Well, 3d You can listen music directly from your phone if you don't have many music you can listen talks from other So yeah is when Dan speaking about what to get go one year ago Yeah Yeah, hey, Brandon, do you have anything to say? I Don't know if you can hear him, but he's with us. He's very happy So You can do much of the thing you can do with your regular phone. There is no It works you can use it as your daily phone and if you have another proprietary Phone you don't need to use it. You can switch and you don't care Obviously We you still need more stuff you want more. So what what can we do if you want to install most things into the device? Jonas, do you have any suggestion for us? Yeah, so any modern smartphone has to have apps right apps is cool So we have what we we have enabled apps on Firefox OS. So we have a marketplace Let's see if the web or if the internet connection here is good enough that This will actually load This is the normal issue with them I'm it doesn't seem like we are actually getting any connectivity here But Yeah, so we have the ability to to So so basically all of the the applications or icon-looking things here are real apps and if I So what you what this is not just one giant web page that has built-in support for For camera and for for making phone calls and so on each of these icons is actually a app and which means that it's a it's a small package of of Javascript HTML and and CSS and so on and So let me Bring up the right slide again here So so So apps in Firefox OS are entirely done with with web technologies But the web as it exists exists today doesn't support apps like we just have web pages But what really is the difference between a web page and an app? Well, mostly or at least to start with it's it's like it's an icon on your on the home screen, right? So how do you get an icon? Well, we need a little bit of metadata for the app So we've introduced a JSON manifest where you can where you express what name the app should have what icon? What URL to load and so on when when the app launches and We also have two types of apps We have what's called hosted apps, which is essentially just the normal website with this little extra metadata Sprinkled on top of it so that you can get a home screen icon and Then we have something called packaged apps packaged apps is sort of what it sounds like it's a zip file that Contains all of the resources so when when the user installs a packaged app we download the zip file and store it on the device and then anytime you use that the You launch the app we load from the zip file So here's what man, this is not running at all Sorry this camera is not working out so this is supposed to be an example of What a application manifest looks like Yeah, I don't think that can fix that So it basically it's it's just a little bit of metadata. It's the name It's a list of icon sizes and which URL to use for for these icons and And it's some information about the developer and so on So in and additionally to this We need a little bit of API in particular what's been very important for us for Firefox OS is that we don't want to have a solution Like some other operating systems have our mobile operating systems have where there's only One store where you can get applications what we want to Keep the web open so people shouldn't have to submit their apps to a particular store So these API's that we've added for managing apps actually allow any websites to become a store and this is a very big deal Because it means that anyone can set up a you just set up a normal website and then you can start selling apps for Firefox OS and for other platforms that support the same type of web apps Directly from your website you don't need to have any you don't need to have buy-in from the device manufacturer You don't need to make your own device. You can simply put up your website and start selling apps So this API both lets the store Install applications we have it like an install function a check if this app is installed function and so on It also manages updates so we can keep apps up to date all the time because it's very annoying when when and it's very important To have users be running the latest version of an app for security reasons Another thing that that We have enabled this so for packaged apps. It's obvious that they will work if the user is not online But we want to keep packaged apps aren't pretty aren't very webby We wanted to keep the the nice things about the web Which is that you just put a bunch of files on your web server and then anyone can use it So how do we make that work together with? This expectation you have for for something you've downloaded and installed which is that it should work even if you don't connect to the internet We've integrated with the app cache It is a feature of HTML 5 which allows a website to Enumerate the set of URLs that should be cached And then these are our cache that they're reliably available So when you launch your app, we don't even have to hit the network. We can immediately load these cache resources from the device So offline even though this is based on the web offline will work just fine And the experience that the user has is no different just because it's web. It's no slower There's no not like this incremental rendering like you don't see that images like slowly load It everything is instant. We're just loading resources locally Assuming that is set up correctly So in addition to To having these API's to manage applications We also expect that applications can do more than the web can do Right now on the web you sort of it's it's everything is very safe because You know the web or web technologies don't have access to very many things Which means that it's it's safe to go to any website Well for apps or for for for an entirely web-based operating system. We have to expand extend those capabilities so what we did was we added the We tried to find a small set of capabilities that we had to add to the web and then we wrote specifications For this that we have submitted to W3C and we're now working with W3C to standardize For adding the set of things that that you would want to able to do But we've always kept the the sort of the mindset of the web. So everything is standardized everything is JavaScript friendly It it basically it feels like just like developing a web app even though you're interacting with for example a telephone API There should be some example code there, but it's sort of washed out in this camera So So we've added so basically The device can do anything that normal apps that you would expect of a normal upper mobile operating system Even though it's based on web technologies and so we also saw The the gallery This the gallery uses Another API that we added which is device storage API the device storage API Is that I mean the gallery is essentially just rendering images We've always been able to render images on the web the little piece We're missing is the ability to go to your images folder and Enumerate all the images that are there. So we've added the device API and the device storage API which lets you ask for The pictures folder or the the music folder then you can enumerate all the files that are there and Just and treat them just like an enormal file. So like we it You can just point an image tag at one of these These files or you can point a audio tag if you want to play music and so on So so there's only a very small set of capabilities. We've had to add and in general the web has a Tremendous set of functionality already We've also added a browser API you can sort of make out a little bit there and Because of course we needed to have a web browser, right? So What we did was we extended the iframe element with a couple of things We have the remote equals true attributes which says Run the contents of this iframe in a separate process. This is what allows us to do a multiprocess Browser application even though it's entirely based on HTML and JavaScript So you just set an attribute which causes get code to to create a new process And then and then run the contents of that iframe in a separate process And we also added a must browser attribute which makes this iframe element behave slightly differently The page that's rendered inside of this iframe doesn't see that it's inside of an iframe It it just sees what it normally what a web page normally sees it looks like it's the top level browsing context so We've had to add small changes to Two web technologies, but in general we've kept with what's there and tried to use as much as possible And and then just add APIs that sort of look and feel like not normal JavaScript and web APIs So let's try a demo we so One thing that we we kind of looked at Android for some inspiration Android has These web these intent system which allows applications to talk to each other In Firefox West we've actually sandboxed applications very very strongly There's no way for applications to interact with each other. We've done this for security reasons So installing an app is very safe just because you have like a bank app And doesn't mean that if you install some evil app that the evil app can get to the contents of the bank app But we still want to enable applications to talk to each other and through dedicated channels So let's see if I can Get this demo running And so what we what we have is we have a something called web activities web activities Let's a website or an app say I want to perform a particular action and then Gecko will look through or Firefox West will look through all the applications you have installed and see our which applications can handle this action so if I launched the Get image or pick activity. I get a list of all the apps That support this activity and then I can choose the camera up here And this will render Not so great Well this launched the camera, but the camera app is not very happy if you don't have a memory card in Sorry, we switched last minute switch of device here That's a bummer actually I wonder if I can make it work now Okay, so but web activities is basically a subset of intents and and lets applications use Use the system to perform certain actions and this allows by installing additional applications You can sort of expand the capabilities of your phone and the capability exposed to other web applications This also allows any apps that you install to integrate with your phone So this use the pick activities any apps that you install So for example, if you install a flicker app the flicker app can then And integrate and let you choose pictures from your flicker account and so on and again, this is just like a small addition we've done to The set of web APIs that already exist in order to integrate and allow this richer ecosystem of apps So let me switch I Think that that might be Yes, that's all I had So if you also want to see it working you can come at the booth We have a lot of awesome people with demo that works not like us So feel free to come and to see the device. We have a few devices so Another important thing is once you have installed all those apps the one you have that by default the one you want You are going to find to found on the marketplace And Jenna spoke about the browser API for the browser application. We use the same thing In the room in the roots what we call the system application. So you can think of a guy has a web page That contains I frames that just point to your apps. So those I frames use the extended version and use the I frame was ups so What happened then is The system just show and hide I frames All of all of those I frames Are like web pages are contained into their own process Their own sandbox they use IPC to communicate to the main process and to get code to say oh I have navigator different page. I want to use such thing. I want to show such thing and Closing an application is just removing removing it from the DOM Another way to close application is those kind of funds enough does not have a lot of Of RAM so if the device was low on memory it will kill that and That will give more free RAM for them for the action you are currently doing I think we don't have we have less than 10 minutes left so let's answer some question if you have You have And if you're too shy to ask questions, I think this fun is supposed to work and Hey, this is your number No, no, no, no, okay, no, that's not the number Okay, so so is there any questions. Yeah I've got a question. I'm currently running Firefox OS on my Nexus s and So far great job there are two things that I've noticed that are missing one is that the browser doesn't seem to have Firefox sync So I can't actually sync my Bookmarks history etc as I could on Android or other device The other item is there's no card have sync contacts Sorry Is that better? Okay. Yeah running Firefox OS in the Nexus s works great for the most part two emissions is no Firefox sync the browser so no bookmarks in etc and also know what's boxing sorry Firefox sync for bookmarks and history etc. Is that yeah, so so we don't So first of all, this is this is the initial release that we're working on we didn't add for we didn't add sync support yet because It felt like we had more important things to get working first We're absolutely planning on adding sync support as soon as we can There is one thing that that makes sync a little bit tricky We as we've designed Firefox OS we've tried we really have tried to make it so that the built-in applications Aren't special in any way so we do want we don't want the Firefox browser That's the built-in browser to be more special in any way than if you install another browser And so we need to figure out how to make syncing a bookmarks work with third-party browsers Would be ideal but Yeah, so so we're absolutely planning on adding sync a once we have sort of the basics done and and be once we figure out the Model where we can allow any app to integrate with sync and I take it the same goes for Contacts sync using card out you've got how yeah Contact sync is actually we don't have it implemented But we it should be quite possible to build contact sync Using a third-party app. We have a contacts API Let which lets you You know add Basically do anything with address book you can enumerate anything that's in that just book and add or move contacts as you want so all you need to do is to to write a third-party app which Starks itself every regularly and then syncs with or downloads data from Whichever source you want and insert contacts into the contacts database So the the contacts API actually make contact syncs quite possible to implement using third-party apps Okay, thanks Hello, I have a question concerning the security one big problem on the Android platform is the huge number of malicious application and Still rising should we expect similar problem on the Firefox OS or is there some security mechanism that will avoid it? I couldn't the on the other word platform. There is a huge number of malicious application My words yeah, and all Firefox OS is ready to fight this problem So the secure model we have we've actually we started By making things very very strict So the the way that the security model works is every app is very tightly isolated from The system as well as from other apps, which means that even if you install an evil app It can't really do anything like it can't get to any data Unless the user explicitly let's stop do that There is there's actually Some trickiness to how the security model works some APIs that are extra sensitive And there's some APIs that are so sensitive like telephony, which there's even like regulations and so on around We don't expose to third-party apps for now Until we get allowed to do that and other APIs We only expose once an application has been reviewed and So certain applications will have to go through Mozilla store for now Oh, yes, so that actually worked but So But but so But in any case even in scenarios where you've gone through them and been reviewed We have we always ensure that the user is informed anytime we share private data with an app So you could write in theory an app that That you know downloads your contact address book, but you can't do it without the user getting informed like hey This this game that you just installed wants to get all your contacts and then you can maybe think like do you do? I actually want this What's also very nice in the in Firefox OS security model is that we don't ask these questions at the time of install so with Android You have to make the security decisions when you install an app Which is when you're the most eager to just go through and start playing your game or whatever you want to do And you also don't have any context like why does this app want to access my contacts? In Firefox OS you don't make any security decisions when you install Instead the first time the applications tries to use a sensitive API At that point we ask the user and the user can say yes or no you don't have to Like in Android you can't run the app at all if you want to disallow some permission in In Firefox OS you can just say no to this particular thing and then everything else continues to work Yeah Hey One question are you going to support closed source applications? We have no plans to support anything but web technologies which means like everything is going to be JavaScript and HTML and CSS so You can sort of close source in the sense that you can use nofuscator just like People do on websites today, but there's no way to run binary code like you can't You can't like deliver a x86 binary blob and have it or an arm binary blob and have that run It's all JavaScript, but we can't really prevent people from obfuscating their source. So People can and will do that Hello, I have a question regarding the power management How does Firefox OS? How does Firefox OS compares to Android in terms of battery life? Did you do any test regarding power management or power consumption? Yeah battery life is the keyword And I Don't actually know I think we do quite okay compared to Android We but I I haven't I haven't personally done any measurements. So I don't actually know how we compare But I mean one one of the things that is nice by by The way that Firefox OS works is on on Android for example You have like many different stacks like if you're running an app You first have like you have to run through the JVM if you're interacting with web pages You have to go through both the Some some Android stuff on top of On top of the browser technologies and and so on so In some cases there's that we definitely have an advantage of having like just a single runtime Which is the web runtime? But I can't say if that translates into any significantly different battery life Okay one last question Hi first of all I think it's awesome that you guys are trying to do this Really I want it to happen I think it's super important. I think it's super hard and it's awesome. Someone's trying the Question is how do you have any idea how much this phone will cost hold up the microphone more? So do you have any idea how much this phone will cost you have a target? The Firefox phones the cost so the initial release is Targeting very low end devices. So this this device that we it's kind of hard to get a sense for the performance here Because that the frame rate of the camera we're using here is very low But we have about we have like for scrolling and so on we have 60 frames per second and that's on very very low end hardware So the hard I don't know what the actual price is gonna be But it's some of the cheaper Smartphones that you can get on the market today And so that's what we've been developing against and so that's what we've optimized So we do get quite good performance on very low end hardware Of course, we are hoping that at some point we will have people selling more high-end hardware running Firefox OS But the initial release is for very low end hardware Okay, there was one very quick question that I should mention we do support do not track because someone was asking that on on the SMS there I Think we may have some sort of some form of third-party cookie blocking I know that third-party cookie blocking in general Turns to break the web. I don't think that we've solved that any better in Firefox OS than in Firefox But it's there I think you can turn it on Okay, that's all thanks everyone
 Let's get started  Hi, my name is Jonas Hicking. I'm with Mozilla. I am the tech lead for the web API team  Is it better yes much more so I again my name is Vivian Nicholas  I work for Mozilla as well and I'm the tech lead for Gaia, the front end side of the boot to Gecko projects  So we're gonna talk about Firefox OS today or as we're gonna eventually call it new Linux Firefox OS  Yeah, so these I hope you can sort of read that let me try to zoom in here  You had some last-minute slide issues  So  Firefox OS is a  Open source project  We  It's bit it's uses Gaia, which is the the front end which is entirely written in web technologies using  HTML JavaScript CSS  JPEGs and so on  Behind that is get go which is the rendering engine that we've been using for Firefox for over a decade  And then under that is a Linux kernel  We're using the same Linux kernel as Android is using and the reason for that is because a lot of hardware manufacturers are  already targeting  Android or the Android kernel  which  Means that a it's easier for us to to find partners and but be it also means that it's easier for anyone else to  Install Firefox OS on a device that already supports Android  So why are we doing this well mostly because it's cool and  Web technologies are awesome. We want to use the web in more places  but  Also because we really believe in open source  Open standards and creating a community  Community-driven operating system  We don't want to have something  Where just the source code is available  We want people we want a project where anyone can participate  The latest version of Firefox OS is available on GitHub and Mercurial  Anyone can pull and build whatever code we currently have  There's no surprises all the planning happens in the open  Anyone can participate and submit patches just like  Anyone has been able to do for Firefox  So one important point is that it's not done yet we have not shaped Firefox OS anywhere  But we are we are very close. We are gonna ship in Q2  We have hardware and and partners hardware manufacturers and partners lined up. So we're gonna have  devices  Running Firefox OS selling in stores in Q2. It's not the worldwide release though  But hopefully we'll get to that point eventually  Since Jonas so  when we started the project  one year ago, it was really  The front end parts was oh, let's do this very nice operating system. We have an ID and  The first demo was done in August 2011 I think and it was  mostly just a  version of Firefox mobile with a UI dedicated as an on-screen and  The phone code we are using the Android stack all the UI there was part of some Android UI and  It was looking really like shit. So  We spent the last year  changing this  We made a complete UI based on HTML JavaScript CSS  We reached some incredible performance we use CSS animation  Transition we reached 60 FPS on most of the transition transition  We  You can you may have heard about PDF. Yes, we can use it on desktop to read PDF  We can use it on the device. So with JavaScript we can read PDF on such a device  so  What is it so I don't know if it's  Visible so as most fun you and you start with a lot screen. Let's do some CSS  For this show animation, I don't know if the camera looks right to see the city of past so  The fun as most other is composed of a system application so you see  The black bar at the top of the screen is the only visible part of the system that is here all the time  It contains it use already some APIs to show the status of the sync card to show  the battery  So you can also so the battery is a battery API. It works already in WebKit so you can try it  There is a notification notification center  and  All those are parties on screen. It's made of moving parts and  Always your part a doc which is always here where you can add eight icons  But you can also do it's a fun so let's prove it. Let's see if Jonas can call me like  Okay, okay, send me a text message  Which number to use  Okay, yeah  Okay, there is there is no sync card on this one, sorry  So  Usually does not work without any sim card that's still a web based phone but to make phone calls  We need one so my sim card that really in the other device  So we can show it after that during the question phase  What else so you can obviously send we see this MS access your contact you can browse the web we made a new  The web browser in the  in the browser so you can and I don't have anything  I don't have access to the network. Let's see if I can connect to the Wi-Fi  Let's connect to Wi-Fi  So we have a lot of API to enable access to  Hardware capabilities of the phone  Let's see if it's  So yes, we got it. No, let's go  Nice  Hmm  So it's looking for network you can see that on the top  I  It's coming the Wi-Fi is a bit slow so it's coming so you can navigate the web you can load because  And one tab is not enough so let's open a new one and  Hope it will load faster. So  Yes, nice the same so it shows also a little detail each of those tabs leaves inside their own process  So every time you create a new tab you spawn a new process and most of the fun architecture is based on this  We will speak a bit about it later  So  One of the other thing is normally you cannot  Do a browser using regular web APIs. So we have an extended version of the iframes  That let us listen for some events on the page title change load change so we can do more stuff  so we enhance the web stack to  To be able to do such apps  So it's not one network is still coming  So let's do  Let's use some apps  You have all the basic functionality of different fun you can  Go to your gallery see your girlfriend  See the last guy work week for main contributor the best cat  It's not very visible. So let's try so you can edit picture on the fly  So we use web GL and some shader. So we have hardware to the 3d effect. Well, 3d  You can listen music directly from your phone if you don't have many music you can listen talks from other  So yeah is when Dan speaking about what to get go one year ago  Yeah  Yeah, hey, Brandon, do you have anything to say? I  Don't know if you can hear him, but he's with us. He's very happy  So  You can do much of the thing you can do with your regular phone. There is no  It works you can use it as your daily phone and if you have another proprietary  Phone you don't need to use it. You can switch and you don't care  Obviously  We you still need more stuff you want more. So what what can we do if you want to install most things into the device?  Jonas, do you have any suggestion for us?  Yeah, so any modern smartphone has to have apps right apps is cool  So we have what we we have enabled apps on Firefox OS. So we have a marketplace  Let's see if the web or if the internet connection here is good enough that  This will actually load  This is the normal issue with them I'm it doesn't seem like we are actually getting any connectivity here  But  Yeah, so we have the ability to to  So so basically all of the the applications or icon-looking things here are real apps and  if I  So what you what this is not just one giant web page that has built-in support for  For camera and for for making phone calls and so on each of these icons is actually a app  and which means that it's a it's a small package of of  Javascript HTML and and CSS and so on and  So let me  Bring up the right slide again here  So so  So apps in Firefox OS are entirely done with with web technologies  But the web as it exists exists today doesn't support apps like we just have web pages  But what really is the difference between a web page and an app?  Well, mostly or at least to start with it's it's like it's an icon on your on the home screen, right?  So how do you get an icon? Well, we need a little bit of metadata for the app  So we've introduced a JSON manifest where you can where you express what name the app should have what icon?  What URL to load and so on when when the app launches and  We also have two types of apps  We have what's called hosted apps, which is essentially just the normal website with this little extra metadata  Sprinkled on top of it so that you can get a home screen icon  and  Then we have something called packaged apps packaged apps is sort of what it sounds like it's a zip file that  Contains all of the resources so when when the user installs a packaged app  we download the zip file and  store it on the device and then anytime you use that the  You launch the app we load from the zip file  So here's what man, this is not running at all  Sorry this camera is not working out so this is supposed to be an example of  What a application manifest looks like  Yeah, I don't think that can fix that  So it basically it's it's just a little bit of metadata. It's the name  It's a list of icon sizes and which URL to use for for these icons  and  And it's some information about the developer and so on  So in and additionally to this  We need a little bit of API in particular what's been very important for us for Firefox OS is that we don't want to have a solution  Like some other operating systems have our mobile operating systems have where there's only  One store where you can get applications what we want to  Keep the web open so people shouldn't have to submit their apps to a particular store  So these API's that we've added for managing apps actually allow any websites to become a store and this is a very big deal  Because it means that anyone can set up a you just set up a normal website and then you can start selling apps  for Firefox OS and for other platforms that support the same type of web apps  Directly from your website you don't need to have any you don't need to have buy-in from the device manufacturer  You don't need to make your own device. You can simply put up your website and start selling apps  So this API both lets the store  Install applications we have it like an install function a check if this app is installed function and so on  It also manages updates so we can keep apps up to date all the time  because it's very annoying when when  and  it's very important  To have users be running the latest version of an app for security reasons  Another thing that that  We have enabled this so for packaged apps. It's obvious that they will work if the user is not online  But we want to keep packaged apps aren't pretty aren't very webby  We wanted to keep the the nice things about the web  Which is that you just put a bunch of files on your web server and then anyone can use it  So how do we make that work together with?  This expectation you have for for something you've downloaded and installed which is that it should work even if you don't connect to the internet  We've integrated with the app cache  It is a feature of HTML 5 which allows a website to  Enumerate the set of URLs that should be cached  And then these are our cache that they're reliably available  So when you launch your app, we don't even have to hit the network. We can immediately load these cache resources from the device  So offline even though this is based on the web offline will work just fine  And the experience that the user has is no different just because it's web. It's no slower  There's no not like this incremental rendering like you don't see that images like slowly load  It everything is instant. We're just loading resources locally  Assuming that is set up correctly  So in addition to  To having these API's to manage applications  We also expect that applications can do more than the web can do  Right now on the web you sort of it's it's everything is very  safe because  You know the web or web technologies don't have access to very many things  Which means that it's it's safe to go to any website  Well for apps or for for for an entirely web-based operating system. We have to expand extend those capabilities  so what we did was we  added the  We tried to find a small set of capabilities that we had to add to the web and then we wrote specifications  For this that we have submitted to W3C and we're now working with W3C to standardize  For adding the set of things that that you would want to able to do  But we've always kept the the sort of the mindset of the web. So everything is standardized everything is JavaScript friendly  It it basically it feels like just like developing a web app even though you're interacting with for example a telephone API  There should be some example code there, but it's sort of washed out in this camera  So  So we've added so basically  The device can do anything that normal apps that you would expect of a normal upper mobile operating system  Even though it's based on web technologies  and  so we also saw  The the gallery  This the gallery uses  Another API that we added which is device storage API the device storage API  Is that I mean the gallery is essentially just rendering images  We've always been able to render images on the web the little piece  We're missing is the ability to go to your images folder and  Enumerate all the images that are there. So we've added the device API  and the device storage API which lets you ask for  The pictures folder or the the music folder then you can enumerate all the files that are there and  Just and treat them just like an enormal file. So like we it  You can just point an image tag at one of these  These files or you can point a audio tag if you want to play music and so on  So so there's only a very small set of capabilities. We've had to add and in general the web has a  Tremendous set of functionality already  We've also added a browser API you can sort of make out a little bit there and  Because of course we needed to have a web browser, right? So  What we did was we extended the iframe element with a couple of things  We have the remote equals true attributes which says  Run the contents of this iframe in a separate process. This is what allows us to do a multiprocess  Browser application even though it's entirely based on HTML and JavaScript  So you just set an attribute which causes get code to to create a new process  And then and then run the contents of that iframe in a separate process  And we also added a must browser attribute which makes this iframe element behave slightly differently  The page that's rendered inside of this iframe doesn't see that it's inside of an iframe  It it just sees what it normally what a web page normally sees it looks like it's the top level browsing context  so  We've had to add small changes to  Two web technologies, but in general we've kept with what's there and tried to use as much as possible  And and then just add APIs that sort of look and feel like not normal JavaScript and web APIs  So let's try a demo we so  One thing that we we kind of looked at Android for some inspiration Android has  These web these intent system which allows applications to talk to each other  In Firefox West we've actually sandboxed applications very very strongly  There's no way for applications to interact with each other. We've done this for security reasons  So installing an app is very safe just because you have like a bank app  And doesn't mean that if you install some evil app that the evil app can get to the contents of the bank app  But we still want to enable  applications to talk to each other and through dedicated channels  So let's see if I can  Get this demo running  And so what we what we have is we have a something called web activities web activities  Let's a website or an app say I want to perform a particular action and then  Gecko will look through or Firefox West will look through all the applications you have installed and see our which applications can handle this action  so if I launched the  Get image or pick activity. I get a list of all the apps  That support this activity and then I can choose the camera up here  And this will render  Not so great  Well this launched the camera, but the camera app is not very happy if you don't have a memory card in  Sorry, we switched last minute switch of device here  That's a bummer actually I wonder if I can make it work now  Okay, so but web activities is basically a subset of intents and and lets applications  use  Use the system to perform certain actions and this allows by installing additional applications  You can sort of expand the capabilities of your phone and the capability exposed to other web applications  This also allows any apps that you install to integrate with your phone  So this use the pick activities any apps that you install  So for example, if you install a flicker app the flicker app can then  And integrate and let you choose pictures from your flicker account and so on  and again, this is just like a small addition we've done to  The set of web APIs that already exist in order to integrate and allow this richer ecosystem of apps  So let me switch I  Think that that might be  Yes, that's all I had  So if you also want to see it working you can come at the booth  We have a lot of awesome people with demo that works not like us  So feel free to come and to see the device. We have a few devices  so  Another important thing is once you have installed all those apps the one you have that by default the one you want  You are going to find to found on the marketplace  And Jenna spoke about the browser API for the browser application. We use the same thing  In the room in the roots what we call the system application. So you can think of a guy has a web page  That contains I frames that just point to your apps. So those I frames use the extended version  and use the I frame was ups so  What happened then is  The system just show and hide I frames  All of all of those I frames  Are like web pages are contained into their own  process  Their own sandbox they use IPC to communicate to the main process and to get code to say oh  I have navigator different page. I want to use such thing. I want to show such thing and  Closing an application is just removing removing it from the DOM  Another way to close application is those kind of funds enough does not have a lot of  Of RAM so if the device was low on memory it will kill that and  That will give more free RAM for them for the action you are currently doing  I think we don't have we have less than 10 minutes left so let's answer some question if you have  You have  And if you're too shy to ask questions, I think this fun is supposed to work and  Hey, this is your number  No, no, no, no, okay, no, that's not the number  Okay, so so is there any questions. Yeah  I've got a question. I'm currently running Firefox OS on my Nexus s  and  So far great job  there are two  things that I've noticed that are  missing one  is that the browser doesn't seem to have Firefox sync  So I can't actually sync my  Bookmarks history etc as I could on Android or other device  The other item is there's no card have sync contacts  Sorry  Is that better? Okay. Yeah running  Firefox OS in the Nexus s works great for the most part  two emissions is no  Firefox sync the browser so no bookmarks in etc and also know what's boxing  sorry  Firefox sync for bookmarks and history etc. Is that yeah, so so we don't  So first of all, this is this is the initial release that we're working on  we didn't add for we didn't add sync support yet because  It felt like we had more important things to get working first  We're absolutely planning on adding sync support as soon as we can  There is one thing that that makes sync a little bit tricky  We as we've designed Firefox OS we've tried we really have tried to make it so that the built-in applications  Aren't special in any way so we do want we don't want the Firefox browser  That's the built-in browser to be more special in any way than if you install another browser  And so we need to figure out how to make  syncing a bookmarks work with third-party browsers  Would be ideal but  Yeah, so so we're absolutely planning on adding sync  a once we have sort of the basics done and and be once we figure out the  Model where we can allow any app to integrate with sync and I take it the same goes for  Contacts sync using card out you've got how yeah  Contact sync is actually we don't have it implemented  But we it should be quite possible to build contact sync  Using a third-party app. We have a contacts API  Let which lets you  You know add  Basically do anything with address book you can enumerate anything that's in that just book and add or move contacts as you want  so all you need to do is to to write a third-party app which  Starks itself every regularly and then syncs with or downloads data from  Whichever source you want and insert contacts into the contacts database  So the the contacts API actually make contact syncs quite possible to implement using third-party apps  Okay, thanks  Hello, I have a question concerning the security  one big problem on the Android platform is the  huge number of malicious application and  Still rising should we expect similar problem on the Firefox OS or is there some security mechanism that will avoid it?  I couldn't the on the other word platform. There is a huge number of malicious application  My words yeah, and all Firefox OS is ready to fight this problem  So the secure model we have we've actually we started  By making things very very strict  So the the way that the security model works is every app is very tightly isolated from  The system as well as from other apps, which means that even if you install an evil app  It can't really do anything like it can't get to any data  Unless the user explicitly let's stop do that  There is there's actually  Some trickiness to how the security model works some APIs that are extra sensitive  And there's some APIs that are so sensitive like telephony, which there's even like regulations and so on around  We don't expose to third-party apps for now  Until we get allowed to do that and other APIs  We only expose once an application has been reviewed and  So certain applications will have to go through Mozilla store for now  Oh, yes, so that actually worked but  So  But but so  But in any case even in scenarios where you've gone through them and been reviewed  We have we always ensure that the user is informed anytime we share private data with an app  So you could write in theory an app that  That you know downloads your contact address book, but you can't do it without the user getting informed like hey  This this game that you just installed wants to get all your contacts and then you can maybe think like do you do?  I actually want this  What's also very nice in the in Firefox OS security model is that we don't ask these questions at the time of install so with Android  You have to make the security decisions when you install an app  Which is when you're the most eager to just go through and start playing your game or whatever you want to do  And you also don't have any context like why does this app want to access my contacts?  In Firefox OS you don't make any security decisions when you install  Instead the first time the applications tries to use a sensitive API  At that point we ask the user and the user can say yes or no you don't have to  Like in Android you can't run the app at all if you want to disallow some permission in  In Firefox OS you can just say no to this particular thing and then everything else continues to work  Yeah  Hey  One question are you going to support closed source applications?  We have no plans to support anything but web technologies which means like everything is going to be JavaScript and  HTML and CSS so  You can sort of close source in the sense that you can use nofuscator just like  People do on websites today, but there's no way to run binary code like you can't  You can't like deliver a x86 binary blob and have it or an arm binary blob and have that run  It's all JavaScript, but we can't really prevent people from obfuscating their source. So  People can and will do that  Hello, I have a question regarding the power management  How does Firefox OS?  How does Firefox OS compares to Android in terms of battery life? Did you do any test regarding power management or power consumption?  Yeah battery life is the keyword  And I  Don't actually know I think we do quite okay compared to Android  We but I I haven't I haven't personally done any measurements. So I don't actually know how we compare  But I mean one one of the things that is nice by by  The way that Firefox OS works is on on Android for example  You have like many different stacks like if you're running an app  You first have like you have to run through the JVM if you're interacting with web pages  You have to go through both the  Some some Android stuff on top of  On top of the browser technologies and and so on so  In some cases there's that we definitely have an advantage of having like just a single runtime  Which is the web runtime?  But I can't say if that translates into any significantly different battery life  Okay one last question  Hi first of all I think it's awesome that you guys are trying to do this  Really  I want it to happen  I think it's super important. I think it's super hard and it's awesome. Someone's trying the  Question is how do you have any idea how much this phone will cost hold up the microphone more?  So do you have any idea how much this phone will cost you have a target?  The Firefox phones the cost so the initial release is  Targeting very low end devices. So this this device that we it's kind of hard to get a sense for the performance here  Because that the frame rate of the camera we're using here is very low  But we have about we have like for scrolling and so on we have 60 frames per second and that's on very very low end hardware  So the hard I don't know what the actual price is gonna be  But it's some of the cheaper  Smartphones that you can get on the market today  And so that's what we've been developing against and so that's what we've optimized  So we do get quite good performance on very low end hardware  Of course, we are hoping that at some point we will have people selling more high-end hardware running Firefox OS  But the initial release is for very low end hardware  Okay, there was one very quick question that I should mention we do support do not track because someone was asking that on on the SMS there  I  Think we may have some sort of some form of third-party cookie blocking  I know that third-party cookie blocking in general  Turns to break the web. I don't think that we've solved that any better in Firefox OS than in Firefox  But it's there I think you can turn it on  Okay, that's all thanks everyone
Firefox_OS_kBuPT7FHaEc_2_0_1475.png Firefox_OS_kBuPT7FHaEc_2_1476_1547.png Firefox_OS_kBuPT7FHaEc_2_1548_2267.png Firefox_OS_kBuPT7FHaEc_2_2268_5819.png Firefox_OS_kBuPT7FHaEc_2_5820_11747.png Firefox_OS_kBuPT7FHaEc_2_11748_12923.png Firefox_OS_kBuPT7FHaEc_2_12924_14627.png Firefox_OS_kBuPT7FHaEc_2_14628_19391.png Firefox_OS_kBuPT7FHaEc_2_19392_36179.png Firefox_OS_kBuPT7FHaEc_2_36180_37499.png Firefox_OS_kBuPT7FHaEc_2_37500_39263.png Firefox_OS_kBuPT7FHaEc_2_39264_39995.png Firefox_OS_kBuPT7FHaEc_2_39996_41363.png Firefox_OS_kBuPT7FHaEc_2_41364_41747.png Firefox_OS_kBuPT7FHaEc_2_41748_41939.png Firefox_OS_kBuPT7FHaEc_2_41940_43271.png Firefox_OS_kBuPT7FHaEc_2_43272_43355.png Firefox_OS_kBuPT7FHaEc_2_43356_43703.png Firefox_OS_kBuPT7FHaEc_2_43704_43751.png Firefox_OS_kBuPT7FHaEc_2_43752_46295.png Firefox_OS_kBuPT7FHaEc_2_46296_46535.png Firefox_OS_kBuPT7FHaEc_2_46536_46583.png Firefox_OS_kBuPT7FHaEc_2_46584_47147.png Firefox_OS_kBuPT7FHaEc_2_47148_47207.png Firefox_OS_kBuPT7FHaEc_2_47208_47423.png Firefox_OS_kBuPT7FHaEc_2_47424_48839.png Firefox_OS_kBuPT7FHaEc_2_48840_50459.png Firefox_OS_kBuPT7FHaEc_2_50460_50735.png Firefox_OS_kBuPT7FHaEc_2_50736_51395.png Firefox_OS_kBuPT7FHaEc_2_51396_51839.png Firefox_OS_kBuPT7FHaEc_2_51840_51947.png Firefox_OS_kBuPT7FHaEc_2_51948_52187.png Firefox_OS_kBuPT7FHaEc_2_52188_52367.png Firefox_OS_kBuPT7FHaEc_2_52368_52427.png Firefox_OS_kBuPT7FHaEc_2_52428_52499.png Firefox_OS_kBuPT7FHaEc_2_52500_52703.png Firefox_OS_kBuPT7FHaEc_2_52704_52955.png Firefox_OS_kBuPT7FHaEc_2_52956_53003.png Firefox_OS_kBuPT7FHaEc_2_53004_53051.png Firefox_OS_kBuPT7FHaEc_2_53052_54779.png Firefox_OS_kBuPT7FHaEc_2_54780_54923.png Firefox_OS_kBuPT7FHaEc_2_54924_54971.png Firefox_OS_kBuPT7FHaEc_2_54972_55091.png Firefox_OS_kBuPT7FHaEc_2_55092_55175.png Firefox_OS_kBuPT7FHaEc_2_55176_55499.png Firefox_OS_kBuPT7FHaEc_2_55500_55595.png Firefox_OS_kBuPT7FHaEc_2_55596_56771.png Firefox_OS_kBuPT7FHaEc_2_56772_57455.png Firefox_OS_kBuPT7FHaEc_2_57456_57779.png Firefox_OS_kBuPT7FHaEc_2_57780_57784.png