Hey all,
First, it's clear that the core task (pushing sensor data to the cloud)
is relatively simple and can be implemented with a bunch of different
languages (bash+curl anyone? micropython?).
From an ecosystem point of view, both Rust and Node have more than
enough to offer, so it's hardly a deal breaker, with maybe one
exception: among the things we'll need at some point is crash reporting.
I could not find much for Node itself (though there seem to be something
for Electron, so there's hope). For Rust there's enough interest from
Rust-in-Gecko and Servo to be sure this will happen.
Testability and tooling in general are good for both.
Rust has stable releases every 6 weeks so you don't have to be on the
unstable nightlies. The Rust team takes great care to not break
compatibility between versions and I would actually trust them more on
that point than the Node people.
Team familiarity with the language is also good for both. Maybe Aus
hasn't done that much Rust, and Dave that much JS but does that really
matter? Learning is fun and we'll have to break down tasks (there's more
to do than just the data gathering on device).
It's quite clear that resource usage would be lower with Rust, but I
can't pretend that Node would not run even if we choose a single core
SOC (we got Gecko to run on lower specs than what we'll have for
sensorweb). However, robust system software is exactly what Rust was
designed for. I have no experience with node running unattended 24/7 for
very long periods, but I was running Link 24/7 on a RPi and it was rock
solid.
Also, I think it would be nice to eat our own dogfood and support the
work of the Rust team by showing how usable it is in the IoT space.
It's a personal matter, but I like the "peace of mind" feeling I get
from writing Rust code. I never got that with C, C++ or JS.
So my vote goes to Rust.
On 09/15/2016 04:45 PM, Dylan Oliver wrote:
> Thanks for starting the conversation Aus. Let's have the discussion and
> make our choice by next Wednesday along with our hardware selection.
>
> For me, our familiarity with javascript and the maturity of the node
> ecosystem would make me feel more comfortable going that direction. We
> did use Rust on the metrics team earlier this year and ran into a number
> of speedbumps along the way due to the learning curve and frequent
> language updates. There is going to be time pressure on this project --
> other things being equal we should use the tools which enable the team
> to be most productive.
>
> On Thu, Sep 15, 2016 at 11:20 AM, Aus Lacroix <
a...@mozilla.com
> <mailto:
a...@mozilla.com>> wrote:
>
> Hi All,
>
> It would seem that the major options that we are considering as far
> as language are Rust and C/C++ but I think that it would be ideal to
> use node.js on device, especially if we're already running linux.
>
> * Node provides TLS support (including TLS sockets!).
> * There is a very robust Hawk module available.
> (
https://github.com/hueniverse/hawk
> <
https://github.com/hueniverse/hawk>)
> <
https://github.com/nodejs/LTS#lts_schedule>).
> <
https://nodejs.org/dist/latest-v6.x/docs/api/crypto.html>)
> <
https://github.com/kelly/node-i2c>)
> * We all know JavaScript already which will definitely speed up
> development and iterating.
> * It's stable, unlike Rust which changes weekly.
> * If we were hoping for strong type checking, for example, as a
> motivation for Rust, we can use Flow (
https://flowtype.org/) to
> provide this in JavaScript. We also have TypeScript
> (
https://www.typescriptlang.org/ <
https://www.typescriptlang.org/>)
> <
https://blog.risingstack.com/getting-started-with-nodejs-and-mqtt/>).
>
> I could list more but I feel I may sounds like a broken record. ;)
> What are the actual, real world advantages, of using rust? Seeing as
> this isn't a high performance device and our hardware options are
> fairly beefy I'm really having trouble convincing myself that it
> makes sense. It think we would not be stacking the odds in our favor
> for a successful launch of this product by using Rust.
>
> --aus
>
> _______________________________________________
> mozilla-dev-sensorweb mailing list
>
mozilla-de...@lists.mozilla.org
> <mailto:
mozilla-de...@lists.mozilla.org>
>
https://lists.mozilla.org/listinfo/mozilla-dev-sensorweb
> <
https://lists.mozilla.org/listinfo/mozilla-dev-sensorweb>
>
>
>
>
> _______________________________________________
> mozilla-dev-sensorweb mailing list
>
mozilla-de...@lists.mozilla.org
>
https://lists.mozilla.org/listinfo/mozilla-dev-sensorweb
>
--
Fabrice Desré
Connected Devices
Mozilla Corporation