Oops, I sent this to the wrong platform list :)

Moving to [email protected]

On 15 December 2016 at 11:57, Benjamin Francis <[email protected]> wrote:

> Hi,
>
> In the last platform meeting
> <https://docs.google.com/document/d/1yo1AtuozukgfkZwzO745LdEsB1fdZrEWoIYr8F9eydo/edit?usp=sharing>
> we talked about kicking off the implementation of some of the key
> components of the platform, one of which is the WoT gateway implementation.
> As HomeWeb will initially be the main (only) consumer of this component, I
> wanted to make a suggestion about its implementation.
>
> We already have the fxbox <https://github.com/fxbox> source code to use
> as a starting point, but before we just go ahead and fork all those
> repositories under http://github.com/moziot/ (the new home of the
> platform source code?) I'd like to suggest that we use the right tools for
> the right jobs:
>
>    - Protocol adaptors - Rust
>    - WoT API - NodeJS
>
> Reasons for using Rust for Protocol Adaptors:
>
>    - Protocol adaptors (or whatever we end up calling them) are
>    essentially hardware drivers that talk to an underlying hardware component
>    (e.g. a ZigBee/ZWave/Bluetooth radio over a UART connection). This is
>    exactly the type of systems programming use cases that Rust was designed
>    for.
>    - This low level work is particularly performance and timing sensitive
>    and these requirements justify the overhead of using/learning and
>    cross-compiling a low level language.
>    - Rust is a modern and safe programming language which happens to be
>    maintained by Mozilla, which means we can add features that are missing and
>    improve it where necessary (we already added support for a new ARM chipset
>    on the HomeWeb project).
>
> Reasons for using Node for WoT APIs:
>
>    - NodeJS is now a very popular language for server side web
>    development and has a huge existing community and collection of modules to
>    draw from. Using NodeJS will help attract community contribution from web
>    developers who can easily add their own modules when hacking on the 
> project.
>    - By comparison Rust is still relatively immature as a language for
>    web development as you can read about here
>    <http://www.arewewebyet.org/>. It's likely that our platform will need
>    to interact with a large range of existing software and services,
>    especially once third parties start to use it for their own projects. Rust
>    may hold us back here while we wait for it to mature.
>    - SensorWeb already started implementing the SensorThings API in
>    NodeJS. I'd suggest we will eventually want to share code between the cloud
>    and gateway WoT API <https://moziot.github.io/wot/> implementations.
>
> Using Rust for low level components and NodeJS for the WoT API seems to me
> like a good compromise and has a parallel in Gecko where we use both
> C++/Rust and JavaScript for different jobs.
>
> However, using two separate languages comes at a cost (both cognitive and
> complexity-wise). I personally have zero experience of writing Rust and
> while I know it's possible
> <https://blog.risingstack.com/how-to-use-rust-with-node-when-performance-matters/>
> to call Rust components from NodeJS I've never actually done it. I'm
> interested to hear other peoples' views on this (without descending into
> needless bikeshedding or a holy war!), particularly if anyone has
> experience of using these two languages together. How feasible is this?
>
> Ben
>
_______________________________________________
dev-platform mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to