I am kind of disappointed in the naming of this. There's another project named Node-WebKit: https://github.com/nwjs/nw.js/tree/master It allows you to build a native app using node and webkit.
Reading the name of this project got my hopes up, thinking I was going to have the option of using Firefox instead of Webkit as my rendering engine. Oh well.
That would be node-gecko (if it existed), wouldn't it? But yes, it's a bit misleading, by node-firefox I was expecting the full blown browser written in javascript myself.
Or some thing like node-js but using SpiderMonkey instead of V8. Name really does not fit and blows up expectations. node-firefox-simulator would be more apt.
>That would be node-gecko (if it existed), wouldn't it?
Only if it followed exactly the same naming logic down to a t.
But it didn't have to, node-firefox would also be a perfectly apt name for something like node-webkit based on gecko too -- and not suitable at all for what it actually is now.
It's worth pointing out that Node-WebKit got renamed recently to NW.js (as it's now based on io.js and Chromium).
You are right though, I also expected to see a similar project to NW.js but coming from Mozilla. Another shot at packaging offline web apps would have been interesting, especially since I don't know of good alternatives to NW.js.
As things stand, it's difficult to get excited about anything FirefoxOS since it has such a small number of users.
A bit off topic, but how easy is it to set up NW.js to just go looking for a index.html in a specific location? Say sitting next to an exe in windows in the the app folder in OSX.
I was thinking I'd like to try and get my web app in Steam but don't really want to mess around with building Chromium ect ect.
Couldn't agree more. I got butterflies when thinking about node-webkit with gecko instead of webkit, but reading through the post just made me really disappointed.
The reason I really want something like node-firefox is the build process for firefox is so much easier than webkit, and if I make a desktop app that I want people to be able to build from source node-webkit is such a huge beast to compile. I'm basically stuck with the binary versions, which is not the way to go for software that does crypto.
Does anyone know how hard it would be to make a real node-firefox (as in, FF version of node-webkit)? Why is chrome the go-to for all the web-app-as-desktop-app frameworks?
In the case of node-webkit they give you access to both the Web platform and node APIs. That's possible because both projects use V8, so with a bit of twisting they can be relatively easily integrated into one. (Incidentally, this is why they're using io.js, the outdated V8 version in node made things more difficult)
If you wanted node-gecko you'd either need to fuse V8 to gecko or reimplement or create a wrapper around spidermonkey emulating the V8 API. That's a lot of work.
Is this part of a ridiculous trend where major software developers pick whatever name they want for their language, tool, library, what-have-you without caring if there are other projects with that name, if the name is confusing, if the name is too generic (and thus hard to do a web search for), etc.?
This might be some sort of bias on my part but I seem to see this more and more often. Programmers are known to be bad at naming but these days it seems they don't even try. How about just following a simple rule: pick a word that doesn't exist in the dictionary or on the web at all. Just make up a combination of letters. Please.
If they plan on doing that as well, it would be better to wait for the more secure and much higher performance Servo anyway. At which point they can just call it Node-Servo.
It's actually somewhat of a theme in the node community to prefix your project name with 'node-', e.g. [1]. In this case, however, Mozilla is still going against that custom by also prefixing the package name itself with 'node-', which is a bit redundant.
I was hoping (sadly) that based on the name, this meant there was a port of node.js to spidermonkey by the Mozilla team. Other posters have mentioned this as well.
This is sort of a "lazy web" request, but does anyone know why node.js needs v8 specifically? Would it really be that hard to support node.js on spidermonkey?
I believe it fizzled out partly due to lack of contributor time and partly because the mainstream Node maintainers were wary of fragmenting the Node.js ecosystem/community.
In the name of competition and architectural flexibility, perhaps the io.js team will be more receptive. :)
AFAIK, though, V8 is so tightly integrated into Node core that a third-party library, NaN ("Native Abstractions for Node.js"), was created to improve API compatibility for Node binary addons:
It's a command-line / programmatic interface for deploying FirefoxOS apps to your test environment. Before the easiest way to deploy an app was clicking a button in a piece of software called WebIDE, but now you can do that from the command-line, inside your test-case script or where ever you want it.
Maybe this isn't the best place to ask, but how is the performance of Firefox OS? Its mostly marketed for low-cost devices, how well do apps based on web tech actually run on these relatively slow SoCs? Firefox for android performs admirably for webpages on my nexus 5, but I have yet to find an interactive web app, whether in Firefox or packaged as a Cordova app (and therefore WebKit+v8), that doesn't feel very sluggish.
I love the concept and philosophy of Firefox OS, but none of that matters if its too slow to use.
If performance is actually acceptable on these devices, then what tricks are they using to make it faster than on higher end android devices?
I work on Firefox OS so probably worth taking bias into account.
On low end devices fxos runs reasonably well but with noticeable lag, we have put in huge amounts of effort on the low end to make that possible. On high end devices the 'native' fxos application are incredibly snappy and there has been very little done to improve performance on high end devices.
Most of the stuff we have done is common sense, some you will see a lot of people doing, some almost no people do.
1. Shorten the path to rendering first screen, dont block on reading some data, load all scripts async etc.
2. Never animate top / left, use CSS transitions for everything.
4. Offline assets, in fxos we use packaged apps for various reasons, however one of the benefits is that reading from the filesystem is faster than reading over the network.
If I had one performance tip for web developers, look into how far you can use appcache to store resources offline (or if your feeling fancy, service workers). Offline capable web apps have a night and day difference.
> look into how far you can use appcache to store resources offline
Maybe this question isn't specific to firefox OS, but... what is the benefit of using appcache -- doesn't the browser already cache assets that it has loaded?
It tries to, but browsers generally load a lot of assets meaning high chances of eviction etc along with the problems in dealing how servers / browser deal with cache directives.
I mean try it against 2 fairly comparable static sites - http://backbonejs.org/ + http://pouchdb.com/, keep on refreshing them, that case is gonna give you the highest cache hit rate you can get and its still noticeable.
I've owned two FirefoxOS phones, both from Geeksphone - the Keon and the Revolution.
When I first purchased the Keon, running FirefoxOS v1.1 (I think, it was a very early version anyway), the experiment only lasted a couple of months before I returned to Android. The phone crashed a lot. Subsequently, I've upgraded for FFOS v2.1 on the Keon and it's a much, much nicer experience. Everything feels smoother and the phone/applications crash very infrequently.
A few months ago I decided I wanted a big fat screen, so purchased the Geeksphone Revolution. In all honesty, I'm running Cyanogenmod 11 on it, and waiting for Geeksphone to make a FFOS v2.x available, as there's no way I'm going to run v1.3 again.
Even with the 2.x versions of FirefoxOS, I'm still held back by lack of SIP client. I know there are some WebRTC apps, but as far as I know none of these allow calls to landlines or mobile phones. With CM11, I have it set to ask me every time I make a phone call whether I want to use the mobile network or the Internet (WiFi or mobile data, depending on how I'm connected). I make a lot of overseas phone calls for business and personally. I only have a cheap pay-as-you-go calling plan in the country I'm living in at the moment, because I don't know how long I will be here and I didn't want to be locked into a 24 month contract. I don't even need a dedicated SIP app with CM11 on the Revolution. Simply enter my SIP account details in the Settings and I'm prompted each call I make. I make cheap calls, over data networks, very easily.
I also use Telegram for 90% of my messaging requirements. It's reached the point now where I'm quite annoyed replying to an SMS, as it costs me money!
When FirefoxOS supports SIP calling, or there's a WebRTC client which allows me to call actual telephone numbers, then I'm ready to switch permanently. The FFOS user experience is really quite good. I'm not a big app user - email, Telegram, OSMaps and a few GPS tracking apps is about all. FirefoxOS is just missing that one killer feature for me.
I'm the owner of a flame, which is arguably on the higher end of the scale for FxOS devices.
The OS feels snappy, comparable to Android on a decent device. Applications vary and obviously you won't run most of the things you run on Android anyway - they just don't exist.
Some things are still rough atm, but there seems to be a very recent announcement [1] about upcoming and freshly landed improvements similar to Project Butter on Android.
The performance feels really good enough in the 2.2 builds I'm running.
That said: The _general_ user experience isn't there yet. I carry the Flame with me most of the time, but I won't replace my 'Android for mails and IM' less-then-smart-phone setup just yet. Keyboard, copy&paste, basic applications like a mail client - all of that still requires quite some compromises.
I want to ditch Android for FxOS, but so far the drop in productivity isn't worth it. For me.
The performance is very acceptable for what I saw (basic usage of all of the provided apps).
I am no expert, but the FirefoxOS stack is really lean and simple compared to the Android stack. Some would say that Android is an huge undocumented bloat with all the layers added during its lifetime (just check the AOSP build system to understand this opinion).
As I see it, FirefoxOS, by being ten years younger and less used, is doing million things less than Android (from the system point of view), and that's how things can get reasonably fast and responsive (that, and the blazing fast SpiderMonkey vm).
I haven't used Firefox on Android in quite a few months but last I checked I hated the rendering performance compared to Opera Classic or Chrome. I would double tap or zoom in and it would still take a second or two to render that zoomed-in image. It was quite frustrating. Granted, it happened on a lower-end phone then, but wouldn't happen on the other browsers.
Firefox with Servo looks fantastic, though, and from their roadmap it seems Servo will be coming to mobile first, this year. I'm really hoping for a multi-process highly parallel completely rewritten in Rust Firefox within the next two years.
I used to have a very early FF phone that had super-low spec, yet all of the standard FF apps ran real well. Not sure if it was the phone or nature of FF OS, but I got amazing battery life on that phone, way better than any smartphone that I am familiar with. The shitty hardware failed pretty quickly though.
As it's just a webapp and it doesn't use any phone specific API's you can also run it in any browser. Here I just hosted is as a website so you can try it out if you don't have a Firefox OS phone:
... IIRC , there is a node-spidermonkey version,but Mozilla doesn't seem to be interested in working seriously on that project. Which is crazy because one would expect Mozilla to do exactly that.
Last I heard, the node guys were quite adverse at maintaining both node-v8 and node-spidermonkey. I don't blame them ;)
And that doesn't help that the people who started node-spidermonkey left Mozilla and afaik can't contribute to open source projects that are not explicitly vetted by their current employer.
> Also, support on platforms other than Mac OS is largely lacking.
I realize you have to start somewhere, but for a foundation which claims to value freedom first, it seems like first targeting a fully open platform like Linux with a cross-platform toolkit like Gtk or Qt would make more sense.
TLDR: Not going to spend $1000+ to get a new machine which runs a lesser free Unix just to run Mozilla-tools.
Reading the name of this project got my hopes up, thinking I was going to have the option of using Firefox instead of Webkit as my rendering engine. Oh well.