Schrödinger's Firefox OS
elioqoshi.me
elioqoshi.me
I actually think FFOS is an amazing choice for connected devices, and I really want to use it on an IoT project (of course, that project is stuck behind at least 3 others, one of which is an app for FFOS).
To expand on why I think it's an amazing choice:
- As FOSS as you can get, with mobile OSes
- Easy to reason about architecture
- Will evolve with the web (as well as the web's capabilities)
- Galaxy-level ecosystem for HTML/CSS/JS
Most IoT devices will be headless. The will act as sensors, actors or gateways, but information will be displayed on other devices (your PC, Tablet, Smartphone, and probably a very limited number of control center things which actually embed a display).
For headless devices I can't yet see the benefit of Firefox OS over the Linux distribution of your choice (or even a custom one, e.g. with Yocto) plus Node.js (if you wan't to program in JS) or any other programming language of your choice. I would for sure prefer to use Node APIs (where the ecosystem is in the meantime really big and development and prototyping can be done on most platforms) against some other FFOS APIs (which I don't know - so it might be not a problem if porting node libraries is easy - but it could also be a big problem if FFOS specific BSPs are needed).
For devices with displays: Well, here comes the question again where the benefit of FFOS is against existing platforms for that solution. Of course, iOS is out there, but you still have the choice between Linux + Browser or a classical GUI toolkit (GTK, QT), an Android based device and now also Windows 10 for IoT.
If portability is a concern then I would create the fronted simply as a web app which can run on any of those OSes with a decent browser. And the actual system runs in $programming_language_of_choice and exposes HTTP/WS APIs.
FFOS is definitely just about useless for IoT applications if it doesn't have a screen -- I completely agree with your point, it's just a fork of AOSP at that point.
If mozilla can get to manufacturers and IoT companies fast enough, and integration is easy enough, it might catch on.
Let me make it simpler: While it is unlikely that every vendor will instantly switch to FirefoxOS for IoT devices, it is likely that more than zero will find it useful.
Is it, though? It's pivoting from being an OS for mobile phones, which is something that billions of people use and understand, to being an OS for "internet of things" devices, which are… uh… internet-connected thermostats and refrigerators and stuff? I guess?
But even if smart fridges are really going to become a thing, are we not not anticipating Firefox OS not facing the same challenges it did in the phone market? That is, if I'm gonna make a smart fridge, why would I choose FFOS over Android, especially since devs for the latter are far more common?
I think that flexibility is what lets them avoid calling this a failed project, and more of a pivot. By the way, FFOS hasn't become any LESS of a phone OS just because they're focusing on applying it to IoT stuff -- It still runs great, and you can flash it to a lot of flagship phones without any problems.
The best thing about FFOS is that it doesn't require buy in to some closed platform. Your connected fridge apps and your connected microwave apps are just going to be webapps, which take advantage of an in-browser (knowing the devs at mozilla, most likely well documented, open an reasonable) API.
While I definitely don't know what manufacturers actually go through (I'm not one), I might choose FFOS over android because of ease of app creation, lack of having to deal with Google, and more thoroughly open OS. If I want to spin my own version of gaia (the frontend for FFOS), it's incredibly easy (and of course, styling HTML/CSS, and adding some JS is in my opinion, easier than dealing with the Android ecosystem)
I'm confused by this claim.
Doesn't Firefox OS use the Linux kernel, like Android does?
Doesn't Firefox OS incorporate part of the Android HAL into Gonk?
And how does Gecko really differ that much from Blink in this scenario?
I find it strange to think that Android isn't suitable for this use, but somehow Firefox OS is, although they're so similar.
Imagine if your web app could directly talk to hardware sensors, disk and phone features if the user gave it permission.
The difference is that blink does not offer such APIs not this tight integration with the OS to the point where gecko is the OS. It used to be called "boot 2 gecko" for a reason
I think recently there was an apk released that allows you to try out the UI part of FFOS as an Android launcher.
https://www.mozilla.org/en-US/firefox/os/2.5/
2.5 allows you to download an Android app and try out FirefoxOS
What I wanted to convey was that with the flexibility in layout/design that HTML/CSS brings, along with the relative simplicity of the FFOS code base, I think it would be easier for someone writing custom UI to do it on FFOS (like a custom fridge UI) than it would be on Android.
What I'm assuming is that whoever is writing something like a fridge UI might have a tendency to go outside what android allows you to do is going to want to go outside what Android lets you do in a view. But I dunno, a case could be made that they're just equivalent but different troubles.
There's also the case of qualifying for gapps and what not, there are less strings attached to FFOS.
Updating JS apps is a bit less tricky than updating Android apps perhaps?
The primary problem with the IOT though is updating the firmware/OS and/or apps on all the devices in an ongoing and secure way. Neither Android or FFOS solve that.
Except that FFOS already has a worse fragmentation than Android, because no hardware vendor ever bothered to properly support their FFOS phones. It's been dead on arrival as far as the mobile market is concerned.
And if we're talking about the UI on say the front of your fridge, isn't there a squillion other toolkits out there already for that?
I just can't see this working.
- JS can achieve some serious speed with the enormous amount of work and JIT smarts that have gone into the various JS engines.
- Size/memory constaints on embedded devices are only going to get looser, and I think the kind of IoT devices that the FFOS is targeting are the type to have more than a simple microcontroller
- I'm not sure what you meant by toolkits out there for fridges... Do you mean the OSes that run on the smart-fridges? If so, in my other comment I noted how FFOS's web-apps-are-apps approach is fantastic -- exposing a simple, unified, easy to use javascript API is an extremely easy way for people to write webapps that target things like fridges, without having to learn some random new platform.
I think your average embedded systems engineer might be very surprised to hear that Javascript is "good enough" for their microcontroller...
Also, the numerous choices in the embedded marketplace also imply numerous specialized choices for display, sandboxing model, API conventions, etc. I think FFOS has an edge in this area because it just reuses the work people have already done pushing the web forward.
So why is JavaScript critical for this?
C, C++, Go, and pretty much every other language out there seeing use today is capable of working with JSON, making HTTP requests, and so on, in addition to supporting communication far beyond those technologies.
How are they any less capable than JavaScript in this case?
Mozila doesn't have to reinvent wheels (though they will of course have to extend what we think of as the web) to handle mechanisms that have already been discussed/implemented/proven on the web.
I think if you wanted to do stuff with those other languages, you'd have to build up a little bit of tooling, libraries, and other odds and ends, and you can skip at least a little of that by using JS+HTML+CSS
Also, the web as a platform is obviously very very well-known and popular. Mozilla just has to craft and expose the right APIs, and support the right devices (and handle the fragmentation), and they could have a great easy-to-use, robust platform almost overnight.
Let me introduce you to my friend, WebAssembly.
Why did Mozilla give up so quickly? Did they really expect to take the market by storm overnight? I don't get it.
Now think of Firefox OS, it's even younger and even less mature than Windows Phone with no real benefit for your average users. I doubt I could sell a Firefox OS to a normal user on the street
I don't think it can be blamed on Google if phone manufacturers don't update their devices fast enough and if Google would take stronger stance in OS updates and manufacturers would jump ship wouldn't Microsoft face same issues?
Or did I miss completely what you meant?
In Android world, just like in the old days of Symbian, Series OS and other OSes, updating means getting a new phone.
You aren't even safe with Nexus if the manufacturer jumps out (TI).
Google apparently didn't had any contract in place for forcing TI to keep doing the updates in case of such situation would occur.
Neither they thought it was worth to spend some Google resources doing the updates themselves.
So they went to third option, letting their Nexus customers that they aren't any special and better buy a new Nexus.
You are correct about the selling points though. Thats something that we did wrong. We had lots of reasons cathering to the volunteers and OEMs but not many for the end user.
I have yet to figure out how easily, if at all, one can get in and "hack" on the UI on those Panasonic TVs that supposedly run FFOS.