An entire Mobile OS built using HTML, CSS and JS - by Mozilla
mobile.dzone.com
mobile.dzone.com
Just imagine ....
- writing just one app that runs on every desktop and mobile phone out there.
- apps which update entirely automatically, without any extra line of code, because they are basically just cached versions of a website.
- a designer, who just knows CSS & HTML, can make an entirely new GUI for your phone.
- an eco-system where the development of the interface (HTML) is completely separate from the kernel/browser and you can choose which kernels/rendering engine to run on your phone, independent of the user interface and vice versa.
- etc. etc.
Kudos to Mozilla for their vision and for not just developing the technology, but making a good looking prototype to demonstrate it.
However, I am a little bit skeptical that a web-based OS will perform the same as a native OS, especially in terms of battery consumption. But smartphones only get more powerful and html rendering engines only faster, so it can only be a matter of time. Also a little nitpick with respect to the title: the OS not entirely build using HTML, CSS and JS, it's just the user interface, which is just small part of the OS (compared to the kernel, etc.).
EDIT: I know most of this is already possible in principle, but the user / developer experience would be completely different.
Apps which will update automatically? That's just as possible with native apps but you have the option to turn that off - because it's a bad idea for a lot of applications. In general if you don't respect that as a developer I don't want to use your apps.
You can make an entirely new GUI for android right now if you wanted to. But for the same reason as in my first paragraph, you really don't wan't to fragment your userbase. The GUI guidelines are very important for apps to integrate well, as an app developer you would now have to support all those third party interfaces that will change every five minutes... I wouldn't call that a bright future.
Designing a good GUI is hard and if you have managed to make it easy it is going to be really bad.
No, but seriously, who does that today? (aside from one-man operations) And how is this going to help?
As to a third party GUI, I'm fond of the idea in for instance the android world. Instead of manufacturer-specific user interfaces, why not a third party interface developed by an independent company that doesn't produce phones. As it is now manufacturers care more about being unique than good and google doesn't put enough effort in it because everyone will change it eiterway.
But there are serious obstacles to succeeding with that and I don't see why that has anything to do with the development-side of it.
People used to write code in assembly and interface directly with the hardware. Then OSes and compilers came and made everything easier for everyone involved. Only a few highly specialized hackers know how to write device drivers and assembly anymore.
I am convinced that in a few years from now (remember I was talking about the future) the majority of developers will be "frontend developers" who know HTML/CSS/JS (or hopefully JS replaced with something more productive). Right now that thought might suck, but imagine how many tools and libraries will be available by then.
> But there are serious obstacles to succeeding with that and I don't see why that has anything to do with the development-side of it.
I am not sure what you are talking about. I am talking about completely decoupling the user interface from the rest of the OS, a little bit like it is the case on the desktop with Linux / BSD and KDE / Gnome. Only that making user interfaces does not require a lot of technical knowledge.
EDIT: Just to clarify. I am talking about a hypothetical future mobile OS not Android or iOS. The way I am seeing this is a little bit like WordPress plugins. There would be a default GUI, but most people would download a custom one. A large number of UIs would be free, but if you want to be hip you need to pay for the latest one. There will be an entire new class of UI designers, just like since a while ago there is a new class of mobile app developers.
EDIT2: The OS itself would be FOSS and the hardware would dead cheap, because it is just a commodity. Eventually it will replace desktops, for instance with a special javascript API to run a virtual machine, which can run a desktop OS on your phone, if you need one, e.g. for development.
I also thought of *nix as an example, and that is in my eyes a perfect example of how you do not want it to be (the result at least).
I don't get the need for many different interfaces. You do realize that as an app developer you have to constantly adjust your app for different interfaces, and people complain they have to make high-resolution interfaces for the ipad3 - that's nothing compared to trying to adapt to different user interfaces.
A user interface is an investment, a whole ecosystem that many generations of applications depend upon. You don't just change it at will, think about all the inconsistencies you'd have to deal with.
There is no consensus. It's like there is no consensus on static vs. dynamically typed languages. Both are good for different things, both have an important place.
On the one hand, without multiplatform apps, new platforms have a problem. The original iPhone had no apps, but it ran the web and everything on it. Likewise, without multiplatform apps, people on minority platforms - Linux, OS X, etc. - have far fewer choices.
On the other hand, without platform-specific apps, you miss out on a level of customization and tailoring that isn't possible in a multiplatform app.
- One terrible interface for everything
- Apps that update to broken versions without asking you and can't be reverted
- A web designer, who knows nothing about UI design for an app let alone the specific UI conventions of each device pumping out apps
- An ecosystem where it's a complete free for all. That always works out right?
Yeah I think I'm going to stop imagining now.
- The better companies will minimize this. We still depend on cloud services like Gmail, github et.. on a day to day basis. And they still mess it up occasionally.
- There are ready designers who know nothing about UI design for each particular device pumping out apps.
- Look at the linux ecosystem. I think its working out.
* I rely on those services via clients that beat the hell out of the native web offering. Cloud services are an inbuilt way of life, cloud or web-based apps can go die in a fire as far as I'm concerned. They have two benefits: Developer simplicity and access from anywhere. Everything else is just downsides.
* Of course, but making it easier doesn't help. Just like with all fields, most programmers and software designers are amateur and lazy. IMO making even easier for these people to create terrible apps and making it the cornerstone of a mobile OS is a really bad idea.
* ...You're joking right? I don't even know where to begin with that one, except to look at Linux on the desktop numbers and then come back to me.
Once you run software on your computer, if that software can connect to the internet, it can update itself!
chrome is the exception not the rule
* Except for in the case of iOS. Apple has a policy that apps are not allowed to update themselves. But there's still no technical limitation.
For the apps and GUIs there would be a marketplace (or ideally several), where people/companies can sell or give away for free their software. Most GUIs and apps would suck (just like most apps suck today). But there would be a few ones, which are truly great, much better than Google or even Apple could ever make them. And these would not be made by big companies, but by small startups consisting of creative people.
P.S. You might want to take a look at the Enyo framework, the one aspect of webOS that has a chance of fulfilling its potential.
enyojs.com
I believe the idea is that it will be native on ALL devices, thereby eliminating the need to convert one application for multiple devices. An application written in HTML5/CSS/JavaScript for the web should function the same way on a mobile device OS that is essentially a web browser. Am I wrong?
This makes absolutely no sense. This is borderline an insult to system developers -- because system software is what the device is running directly.
I'm all for people to state a bit of sensationalist statements so they can sell there shit and be understood by the general public and so over, but this is going way too far. Being proud of an intrinsically limited product (this is a linux that runs only one program by design, so this is less capable than an android or whatever) for the improvements it can brings as side effects is one thing, but a statement like "this is running the web directly" is misleading because it will be understood as the real stuff by less knowledgeable people who will believe in some kind of incredibly innovative magic, like a magical processor "running the web" or i don't know what idiotic fantasm, instead of taking the thing for what it is: a system that can do less, with maybe some advantages as a side effects, but of course some inconveniences too.
It's ok. We're used to it. From the desktop to the laptop to the netbook to the phone, Mozilla and Google have been trying to exterminate us for years.
I highly recommend you take a look at PNaCl: portable LLVM binaries run in the NaCl sandbox. Since LLVM bitcode can be JITed (or even offline compiled before execution), you would be looking at optimized code for whichever target you're running on. Very exciting stuff.
http://www.chromium.org/nativeclient/pnacl/building-and-test...
Lots more info: https://wiki.mozilla.org/B2G
I love that the mozilla guys have done the legwork of figuring out what APIs were missing in order to do that. That is a nice piece of work.
I lean to the former definition but I'll be the first to agree that I come from an earlier time. When 'windows' came out it really was a user interface on top of MS/PC-DOS (and it still is IMO) however now several generations of folks have been brought up saying that Windows was the OS.
Aside from games, rendering a markup language is one the most taxing things we do on our mobile devices. When I get handed a new phone to play with, the first thing I do is load a non-mobile optimized website and see how it scrolls. This worst-case scenario is a good indicator for how laggy and jittery a mobile OS will be at sporadic times throughout the day.
Now a mobile OS built entirely on the worst-case of rendering HTML, CSS, and JS for every interaction? Sure, devices will keep getting faster as time goes on. But keep in mind that as device performance over the years increases, so do our expectations. I am skeptical that this will ever deliver a sufficient user experience when compared side by side to other mobile OSes.
Wasn't the same sort of thing said about the desktop vs the web? Sufficient is the key word here. If the experience is good enough, where users are willing to overlook design quality for the sake of not having to worry about constantly installing and updating apps, then this should do the job. Convenience is king.
Similarly there's also been an underestimation about the cost and nature of systems software, any one remember Oracle's 'Raw Iron' (http://www.infoworld.com/t/platforms/techs-all-time-top-25-f...).
At the same time, isn't it striking how users embrace mobile apps as opposed to paywalls on the web? I wonder how this OS would address this problem?
But that rule doesn't seem to be holding true for the mobile market.
I don't really understand it. Maybe simplicity, affordance, and marketing are now the important factors, given the kinds of users we are now reaching.
Or, maybe it's Apple's ability to deliver key hardware innovations, years ahead of the competition. (http://www.quora.com/Apple-Inc-2/What-would-be-a-good-use-of...). One would think this trend couldn't last, but they do it over and over again.
The point here though is that you have less overhead by focusing just on the web. Running a web browser on a normal mobile OS, as you mentioned, runs a browser stack on top of the normal OS. There is additional work there, for example, on Android to run the browser you also run the Dalvik VM, etc. And the underlying OS and userspace is optimized for native apps for that platform, not just for the browser.
B2G purposefully has just one VM - JavaScript - and just one native app - a web browser, and the underlying OS is optimized for running exactly that, not native Android apps or native iOS apps in addition to a web browser.
It's too early to say how the final result will be. But the approach makes sense and is worth trying.
That's misleading. Sure, you might need fewer resources to pull something like a simple web page. But try using web apps that are the equivalent of native apps on Android or iOS, and you'll need a lot better hardware to run those just as well.
Anyway you spin it the low end that can't manage android will never in a million years be able to run an "OS" in javascript. There is a reason they demo it on a SGSII ;)
Also: "You can run on less expensive hardware, because you've got less technology going on under the covers."
You can't really call a full HTML5 stack light-weight. Sure, you save some libraries, but that's mostly a space issue. I sincerely doubt that a JS-based "Angry Birds" would use fewer resources than a native app.
Having said that, I'm really looking forward to this. Hope there's a way to get it on older Android phones soon, my Nexus One is waiting for new life…
And then we have Javascript, a simple, not terribly complex language. OK. But we also have tons of APIs for it. The Document Object Model API. The XMLHttpRequest API. The Canvas API - a complete 2d rendering context AND full OpenGL ES 2.0. WebSockets. Local storage and session storage. IndexedDB. Game controller API. Page visibility API. Audio composition API (forgot proper name). Touch events. BlobBuilder. Geolocation. History API.
Just to name a bit of it.
I think there is a new class of "apps" that are emerging as web based, but they are creating a new segment as opposed to crushing an existing one.
I just don't get the argument at all that this would enable it to run on a cheaper platform, i.e. somewhere where a native app wouldn't run. You're slicing away a tiny bit of overhead (once a kernel+browser is loaded), but adding more than that.
Someday they'll try and download the hardware as FPGA over a RESTful web API, too.
* Kernel
* Dalvik
* WebKit
The middle one is in fact a big memory and CPU pig for real workloads. Take it out, and B2G fits with room to spare on the 256MB QualComm phone we demo'ed at MWC -- ~128M used by kernel, Gecko, Gaia and apps at most.
Android does not even fit on this phone.
Your assumption that native-app framework and VM code loaded in practice is a "tiny bit of overhead" is false.
Good work Mozilla and keep Pushing the "Open Web". A walled garden despite its many advantages, is still a Gilded Prison for some.
About ease of development being a gateway to shovelware, yeah right as if the artificially high and expensive barrier to iOS is keeping all the fart apps away. The fact is if there's money to be made then everyone will try to get in, even the wantrepreneurs hiring cheap coders to copy some old game and repackage it as something new (for more information check Harvest Moon).
If Android has more freemium shovelware is simply because it became the dominant OS in that industry, so wantrepreneurs are targeting that market instead, same as it happened with Windows and MacOS.
I've been waiting to see something like this for a long time.
Perhaps they should take the opportunity to work on the newly open sources WebOS which is likely to be able to grab more market share than an entirely new Gecko OS.
Unfortunately I own this Tegra2 based POS thing and I'm quite positive that I'll never see even a glimpse of the B2G experience on this device.
Still, this is remarkably close to the WebOS approach and - I like the idea very much.
Mozilla has apparently been working on multi-touch in browser as one can see in these two links:
Want and interface that's just command line. Somebody will make it.
What about an interface for Grandma that just has really big fonts in just a dialer, contacts and photo album.
I feel like I got burnt when I bought my 7" Samsung Tablet because Samsung is not supporting it anymore and it has some really clunky interfaces.
I would love to see and ecosystem where I have full and easy control to install and remove apps from my phone easily. Fingers crossed.
What is different about this other than Mozilla making it?
Appreciate any insights.
I don't mind the concept of making cross-platform apps. My limited knowledge of HTML/CSS has shown me that while it is extemely difficult to make robust content look good across multiple browsers/platforms, it IS possible... but will developers really have the access to multiple platforms to test their UI on?
With the likes of HTML5, jQuery, WebGL, AWS everyone could be making their own OS on the web.
It is really not that hard or revolutionary it's just using existing services effectively.. Let's carry on this way.
+rep for mozilla (gone up in my estimates)
http://www.urbandictionary.com/define.php?term=fat%20finger has a definition from 2005 but I think I had heard it as early as 1997.
The development group is VERY active on IRC and there was some chatter at the time about that. Some of the slight lags in the demo were actually parts of the CSS transition they use (originally intended to avoid accidental swipes when they wanted taps) and was tweeked to be much better not long afterwards.
More recently there have been significant improvements in the actual CSS animation on the gecko side (improvements which will hit firefox in the future) which means everything feels even faster and more natural.
At this point B2G is making significant progress _every day_ so about the only real way to get an up to date idea of how it runs is to either read the github commit log frequently or put it on a device (and currently that means a GSII)
Otoh, what about security here? Having JS from a web site dial the phone or taking pics? How will they make sure that lazy I-don't-read-popups-but-just-click-okay users will not get pwned?
Potential security concerns would be akin to the Chrome-extension snoop and inject issue where a random app or web-page could potentially try to read/write the data of other apps if the security model isn't setup right. But these are problems fixable in the short-term. On the plus side, as the phone owner, I might be able to redesign the OS dialer by changing some CSS and finally have a phone pad that goes 7-8-9/4-5-6/1-2-3 like a num-pad instead of 1-2-3/4-5-6/7-8-9.
Though, WebOS didn't take the API idea nearly this far.
Further, apps will be able to request "trusted app" status to run with less cross domain restrictions.
Imagine the $50 smartphone!!
Mozilla will to have sell an awful lot of these phones for their organization to be viable in the future.
Someone please notify my entire computer setup of its impending death. Also, my wife, my mother, my brother, my stepfather, my father, and everyone else I know.
Hey, everyone, your computers are dead! It's time to convert to WebSmartiPhonePadTablets running nothing but web-browsers! Sure, you don't want to because they run like crap compared to actually writing native programs, but they're a growth market for corporate behemoths!
(not a direct quotation)
That said, this isn't the same as WebOS. WebOS ran javascript apps, but they ran on the device itself. From what I can gather, B2G is running everything on the actual web. It's very different.
--
Edit: I may have been wrong there. Apparently it is running locally. This quote from the web page through me off:
"You don't have to pay the penalty of a big smart phone operating system if you're running directly on the web"
That's a bit misleading.