Thursday, August 6, 2015

A FirefoxOS powered internet of things

I've been meaning to write this post for a long time now. It is about the topic of a series of talks I gave at the beginning of the summer. The last one was at #devtalks was also recorded so you can enjoy it here + slides.

A few days ago, one of my favourite kickstarter projects, Matchstick, announced that they were unable to complete the project, and refunding everyone's pledges. I am very saddened by this decision, considering this was a
project I really believed in. The founders suggest that this occurred because it was unable to implement DRM in time for a release. Why they couldn't ship it without DRM and update it later, or just forget the DRM and deliver what they promised is a question they haven't answered. This of course hasn't stopped Panasonic from launching their FirefoxOS powered TV.

However, this post isn't about DRM, or about Matchstick. It's about the potential of Firefox OS powered devices.

Firefox OS has had a bumpy ride during the past few years. It only started as a concept in 2011, so you could say it's still pretty early for the project. The first version of the OS came out in 2013, but in the mobile industry 2 years is a lifetime (the lifetime of your average phone at least).

As both user and developer, my impression of Firefox OS phones is that they're pretty nice. They're not missing any relevant features, performance is quite good, and its hackability is amazing. The only reason everyone is not using it is that almost everyone is using something else. Inertia is very difficult to overcome.

Still, hackability is an immensely powerful feature, and it makes Firefox OS great for prototyping new devices. That prototyping can turn into a marketable device very easily, and it allows you to quickly ship new features on top of an existing platform.

This is where JanOS - the main topic in my talks - comes in. It's a Firefox OS distro, with no apps. The entire app management that Firefox OS does is a burden for you when you want to have full control of the device. So what Jan OS gives you is a system app, with all of the permissions, none of the restrictions, and a blank canvas on which to implement whatever functionality you want.

A few weeks ago I had the great opportunity of meeting the man behind JanOS, +Jan Jongboom, at a recent Mozilla meeting. You can watch his talk about the project here.

On top of freeing you from all of the restrictions imposed by the operating system (app permissions, resource management), JanOS also provides some cool APIs you might like in some circumstances, such as raw access to the filesystem, or executing binary applications (non-JavaScript) using a JS API. What more could you want?

I am curious to see how many devices running Firefox OS come out in the following years. But I'm more interested in what people can do with it. It's awesome for wearable devices, things with a limited amount of RAM, things with sensors that you feel should be webby. It's awesome for building a surveillance camera, or a phone answering machine, or a GPS tracker using an old phone you just had lying around.

I am also excited about Google's Weave protocol (part of project Brillo). It's essentially a JSON based protocol you can use to communicate between IoT devices. The project is just getting started, but the fact that it's webby is really great. Only good things can come of that. And it means that you can use Firefox OS to build devices that play together well with Google's ecosystem.

There's a lot to be said about IoT, Firefox OS, JanOS and everything else in that group, but words are cheap. I've been meaning for a while to build an answering machine/call forwarder, but hadn't had the time to. I'll try to do so in the next 2 months and put the code on github. That should be fun!