Firefox OS - The Web goes Native
A theory I share with many people is, that natively compiled code will lose many advantages and also the significance of advantages, compared to interpreted, JIT-compiled code. Here are my 800-something words on what I expect of Firefox OS and app/platform development in the future.
The kickoff in my head
I want to point some of the things out, that I was thinking about when I listened to Linux Outlaws 301. It's a great linux podcast, that Lennart recommended to me a while ago and I've been keeping up to date with Fab and Dan ever since.
In their episode Fab questions why he would have a web app compared to a native app on his phone. Overall he is positive towards Mozilla's initiative and their work on Firefox OS, but this skepticism towards web-apps struck me.
This probably is, because I've been playing with node.js, which is JavaScript in amazingly fast. The talks I've heard from within the node.js community mostly have a bottom line like:
If you write your JavaScript right and run it through V8, you'll maybe get better performance with C, with most other things, not so much.
So obviously node.js runs on Google's V8 JavaScript engine, but Mozilla is catching up with a series of monkey named iterations of their own engine, which is part of the Firefox on desktops.
Right now Firefox runs IonMonkey, which shows some perfomance improvement, compared to previous versions.
Digging through some of the developer information on Firefox OS, I've even found a recommendation for node.js as backend infrastructure.
The Web going Native
To me some of this feels like the web going (almost) native, in terms of performance and capabilities. You've got growing support for 3D-technologies and the platforms, which with Firefox OS kind of is a browser, deliver APIs for native functionalities to your environment, which is a JavaScript dominated and JIT-compiled script.
An interesting talk on why things like PhoneGap are not fast enough for facebook and what kind of features are needed in mobile browsers can be found here:
Facebook State of Mobile | PhoneGap Day EU 2012
Now with environments like node.js, WebGL, Firefox improving JS engine, maybe we can cut the middle man and focus on making it all fast enough. Devices are getting much beefier and I can do nothing but bet, that the API's to sensors like the accelerometer or GPS that are considered "native" will be very easy to access for developers.
When is JavaScript going to kill .net, Java and Objective-C on the smartphone?
Like with browsers, there is a variety of clients. Many apps have different requirements. Games like Angry Birds and ToDo list apps are entirely different things, but I'm expecting a lot of apps go JavaScript without being compiled to native apps, either by the respective cross platform build tools or directly written specifically for one platform.
Mozilla has a nice chart how the architecture looks for Firefox OS at the moment.
I'm looking forward to actually develop for this, because it seems like the smartest thing to build on in the future. We have many projects that show incredible performance of JavaScript, even if it can't beat everything.
If the Firefox OS simulation plugin for Firefox is not fitting your needs, you can apply for a Firefox OS developer device on their site geekphone.com.
Less Specificity and more Modules
I believe that less specificity and more modules are going to be a future trend. Looking at npmjs, it seems like we're going to build smarter ecosystems for development, where many small building blocks are available, that depend on each other meaningfully and that the way we write software becomes less diverse, even if the amount of mobile platforms will increase.
Where now developers have to tie in API's of their respective cloud services into multiple native apps or lose performance, we'll have a more compatible way of accessing native functionality.
Package Managers for Smartphones
Expecting less binary applications for phones, we can also draw from experience with package managers in the Linux world or even for node.js or ruby on rails. Just patching files, maybe handled through git all become much more possible when we don't have to boil it all down to megabytes, that have to be downloaded in bulk, every time an update for one of our apps is rolled out.
The Next Level
Mozilla is really attempting to take the mobile web to the next level, even though it seems ironic to launch another platform for that purpose. It, like Firefox, is an open platform and not as many of the core parts are restricted, like on Android.
I'm very curious to see this all evolve and gain momentum, to see mobile developer stacks and restrictions shrink in amount of languages/steps involved and hope to see more people get involved with this way of thinking and liberating web technology, close to the consumers.
Mozilla, in my eyes moved from they guys who broke IE's dominance and then started lagging behind webkit, to a quite serious, awesome bunch again.