The Soletta project was initiated by Intel, inside the Open Source Technology Centre. The aim of the project is to make development of embedded applications and devices simpler, by providing a consistent abstraction which works across many hardware layers.
Soletta consists of a runtime, installed on a device, which can load a program defined as a graph: a set of nodes representing data operations, and connections between those nodes describing the flow of data between them. The underlying syntax for these graphs is (broadly-speaking) FBP, as used by NoFlo.
The Soletta Visual Editor (SLV) helps developers create these graph structures in a browser-based application. One output from SLV is an FBP-like file which can be loaded into the Soletta runtime.
You'll need bower and npm first.
From the root of the project:
npm install grunt build
This will install all the dependencies and build the-graph (one of the bower dependencies).
Then you can either:
- Open app/index.html in Chrome. For this to work, you
should be using the
--allow-file-access-from-filesflag for Chrome (see http://peter.sh/experiments/chromium-command-line-switches/).
Serve the root directory from a web server, e.g.
Then navigate to http://localhost:8282/app/index.html in your browser. (You have to use this approach if you want to run SLV in Firefox, as Firefox security policies won't allow file:// URIs to be loaded via Ajax.)
Note that SLV has only been tested on the following browsers:
- Chrome (version 45)
- Firefox (version 35)
It is known to have bugs on Internet Explorer, and has not been tested extensively on Safari.
Building with a proxy
Note that the build uses npm, so if you are behind a web proxy, you will need to configure npm to use that proxy, e.g.
npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080
(The host and port settings are dependent on your proxy.)
However, even with the proxy set, the installation of the
web-component-tester package may fail
(see this bug).
You can try the workarounds in that bug; or if you just want to use
the application and don't need to run the tests, you can remove the
web-component-tester line from the
package.json file. Then run
git clean -fxd to clean any cached files before running the
build again (
npm install; grunt build etc.).
To produce a self-contained version of the app for distribution :
This will run vulcanize on the built app and copy all files required
by the app to the
dist/ directory. That directory can then be copied
to a web server.
Please ensure code is linted before it is submitted by running:
Run the unit tests with:
The unit tests exercise the "back end" code in SLV.
Run all the tests (unit and browser-based):
The browser-based (Selenium) tests exercise the Polymer elements in SLV.
If you've already done a build (e.g. by running
you can skip the build step and run the tests with:
If you need to debug the browser-based tests (e.g. they are failing but you need to use the console to find out why), you can run them in persistent mode. This keeps the browser open after the tests complete:
SLV_PAUSE=true grunt _test
You can also choose which browsers to use for testing ("chrome" and/or "firefox"; default is "chrome,firefox"). This can be useful for speeding up debugging, as the tests will only run in the chosen browser. For example:
SLV_BROWSERS=chrome SLV_PAUSE=true grunt _test
NB If you have problems with the Selenium tests in
Firefox, make sure
ping localhost resolves to
127.0.0.1. If it doesn't the Firefox driver won't work - see
Using SLV with Soletta
As stated above, SLV produces FBP output files for use with Soletta.
However, it is also possible to import Soletta FBP files into SLV for editing (though support for this is still tentative). One caveat, though, is that, by default, SLV doesn't have definitions for all of the node types used by Soletta.
To add definitions for more Soletta node types, you can upload
additional data files. Sample files for the Soletta node types can
be found in the
app/data directory; they can be loaded via
SLV's Upload to library menu option.
The contributors from Intel who worked directly on SLV are:
- Elliot Smith (engineering)
- Max Waterman (engineering)
- Fabricio Novak (design)
- Sandro Fogaccio (design)
- Daniel Chaves (design)
- David Esparza (QA)
SLV uses one of the jQuery easing functions for animation (see app/elements/slv-component-select.html). jQuery is released under an MIT licence (see https://github.com/jquery/jquery/blob/master/LICENSE.txt)
SLV itself is released under an MIT licence.