The Fey engine is the dataflow runtime for iota. The Fey engine is a scalable fault-tolerant computation engine (based on Akka) that enables the orchestration of iot computation. We all have some form of mobile device (iOS, Android, or Windows) perhaps a phone or a tablet. These devices would have very limited usage where it not for the Apps that run on them. Imagine you mobile device without Apps - not very interesting. The Fey engine is like a mobile device in that it has limited scope. Like mobile devices the Fey engine becomes very powerful when there are a significant number of Apps that can be used to drive computation. We call these Fey engine Apps performers. Unlike mobile devices in which Apps typically have standalone functionality, performers are designed to be able to interact with each other using Akka messages. We would like to encourage the community to develop a rich set of performers that can be shared with others to build powerful iot orchestrations. This is a step-by-step guide to building a performer.  Performers can directly interact with each other via message passing or they can indirectly interact with each other through an external 'service' for example a database. A set of performers that interact with each other directly is called an ensemble. One performer that doesn't interact with others is a solo. Ensembles and solos can be gathered together in an orchestration. The Fey engine can run one or more orchestrations in a fault-tolerant manner.

The rest of this document is a step-by-step guide to writing a performer. Performers are typically written in Scala but can include Java functionality.

Prerequisites - Ability to program in Scala  and familiarity with SBT.  If you have programmed in Python, Java or other object oriented languages you will be able to follow the guide without any difficulty.

Step-by-step guide

  1. These steps build upon one another so don't skip a step.
  2. Install Scala version 2.11.4 or higher on your development environment

    Verify that Scala is installed correctly
    $ scala -version
    Scala code runner version 2.11.4 -- Copyright 2002-2013, LAMP/EPFL 
  3. Choose the dev option that best suits you
    1. install Jetbrains Intellij community edition (free)
    2. or install Eclipse (free) 
    3. or use a text editor and command line tools.
  4. To verify you have installed Scala and your IDE correctly write and run a basic hello world Scala program
  5. Clone the Performers directory in the Apache iota repository