OpenSPARKL Core Engine
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Build Status License

OpenSPARKL Core Sequencing Engine

OpenSPARKL Project Home

OpenSPARKL is a framework which unifies orchestration with application logical flow.

It allows you to define, execute and trace pure tree-based devops and business workflows that unify lambda, microservice, containerized and traditional environments.

The core sequencing engine (sse) uses tree-based configuration to drive workflows and automate provisioning, while producing unified event logs and audit trails.

Building SPARKL

These dependencies must be present on the dev machine you use to build SPARKL:

  • Erlang OTP 20

To get the code and get everything downloaded and built (but not a distro):

git clone
cd sse_core
make all

YAWS Compile Error?

If there's an error compiling YAWS you may need to get the libpam_dev package, e.g. in Ubuntu:

sudo apt-get install libpam-dev

On the Mac, you get an error about missing pam_appl.h. To fix this, you need to put that header file in the place YAWS compile expects it so as to reference it as #include <pam_appl.h>:

  • Open terminal
  • cd /Applications/
  • cd Developer/SDKs/MacOSX10.10.sdk/usr/include
  • sudo ln -s ./security/pam_appl.h pam_appl.h undefined symbol: EC_GROUP_new_curve_GF2m

If crypto:start() fails with this error, it's because the Erlang has been compiled expecting a particular encryption capability that isn't enabled in e.g. Centos 6.4. If that's a packaged Erlang you're using, then you'll need to remove it and compile your own from sources (this is reliable, don't worry).

The packaged Centos 17.4 release doesn't show this behaviour, but if you can't get around it then you need to recompile OTP with new environment variable set during configuration phase:

  • CFLAGS="-DOPENSSL_NO_EC=1 -O2 -g" ./configure
  • make
  • make install

I have noticed that ./configure only works once. Completely erase the Erlang source directory and recreate it from the downloaded source.tar.gz file before doing the above.

ossp_uuid Fails to compile (e.g. uuid.h missing)?

If ossp_uuid doesn't compile, it could be that the script they provide is invoking cc with a flag -m32. It does this if the wordsize is 4, that is to say it's a 32-bit machine such as ARM7/Raspberry Pi etc. The solution is to remove the CFLAGS=$CFLAGS and the LDFLAGS=$LDFLAGS environment variable assignments from the last line of this file, which otherwise take effect for the invocation of ./configure.

Erlang Multiple Module Declaration Error?

If you get an error where 2 Erlang apps import the same module (I got this with appmon and runtime_tools both wanting to import appmon_info) then you could be suffering from a new version of Erlang moving a module from one app to another. Try wiping all Erlang from your dev machine, including /usr/local/lib/erlang if any is left over, then re-install from the Erlang Solutions download.

Now you can fire up an sse instance with console:

make node

or to fire up a second node:

make node DIR=nodes/sse2

Now you'll have:

  • http://localhost:8000 and
  • https://localhost:9000
as the sse URL. Navigate to the sse_dc to fire up the Developer Console. Note that the https uses a self-signed cert which causes an initial error on e.g. Chrome. The dev console app uses CORS and you'll need to click past the warning using the above link before you can point the app at the https port.

When developing, you don't need to generate a release, just do

make debug

Generated Docs

The generated edocs are the authoritative repository of how SPARKL works. Make sure you know how to write, generate and read them.

The docs are generated when you do an initial make all. This target includes the make docs step that builds the edocs, so when coding make sure you write the docs and regularly do make docs to ensure the docs build right and format correctly.


Run only unit tests with

make eunit

Run only common tests with

make ct