interesting to see the comparison between ESP8266 and CC3200. However, on a quick glance it is hard what Smart.js is about and what platform it supports best. This might be interesting to know in the context of a book that I am working on, see http://embeddednodejs.com/chapters.html

Have a look at our GitHub page: https://github.com/cesanta/smart.js Smart.js is open source and works with ESP8266, CC3200 and POSIX.

so, it works with X, Y and Z, but what does it do? Is is a dashboard for data from IoT? Is it a web server/protocol ? Is it some other kind of control layer? What data does it deal with, etc. ? Not clear from the first glance.

Thanks for the feedback! We'll try to make it easier to figure out what it is.

The full docs are https://www.cesanta.com/developer/smartjs (linked from the github repo).

TL;DR: two pieces: multiplatform firmware focusing very small embedded devices + hosted services that help you build your IoT solution.

---

The Smart.js firmware implements a bunch of networking protocols and a JavaScript interpreter that fits in <1KB of ram.

> Is it a web server/protocol ? Is it some other kind of control layer We do provide a JSON+WebSocket based protocol and some tooling around it that help you build applications. It's designed to play nicely with devices that are not always online (e.g. power saving) and that might often change network.

However Smart.js it's not only that. You can use plain HTTP and plain WebSockets and (soon) MQTT and connect your device with whatever is the rest of your stack.

> What data does it deal with, etc. We also offer a hosted service that can collect metrics, store logs, do pubsub messaging and perform unattended OTA updates of your firmware.

if Smart.js contains a new kind of JavaScript runtime for embedded devices, that might be interesting to put more into focus (and compare e.g. with Tessel or Espruino projects).

The protocols: HTTP, WebSockets, MQTT are pretty standard now. What is their relationship with Smart.js? Why e.g. are Arduino libs not used?

For high-level system design, Node-Red seems to gain traction, what is the difference between Node-Red and Smart.js ?

Smart.js is based on two projects:

- V7: a small portable JS VM (https://github.com/cesanta/v7) - mongoose: a portable async multiprotocol networking library (https://github.com/cesanta/mongoose)

Both of those projects are independent and have some traction on their own; but you're right that we should make it more explicit. Mongoose is out there since 2004 and is a quite popular embedded http server. We added many other protocols to it, including also COAP and DNS.

Arduino libs are not used because they are not async and not portable.

Honestly I don't know about node-red, sounds interesting; however node's V8 VM is too heavyweight for the smallest devices we aim to support. Smart.js does expose a nodejs-compatible core API wherever possible, so it might be possible to port node-red to it.