An application development framework for creating robust, reliable interactive installations.
Like twisted, Sparked is a python library and an application runner in once. Some of its features follow here:
Sparked was created out of frustration with current projects: over the past few years I have developed and helped others developing various interactive installations and artpieces, but I kept switching between different code bases and techniques on how to do things. In my work at Mediamatic, over the last year these technologies converged somewhat in the use of Python+Twisted and the linux application stack, as I developed IkCam, an RFID-enabled photo booth.
As IkCam was not open source, I decided to generalize the ideas that emerged there and combine them into a generic application runner on which it would be easy to build various interactive installations; with or without webcams, with or without displays, etc.
A spark is the beginning of something. Literally, as in the start of a fire, but also the start of something new, something with "inspiration". To spark means to set in motion, to rouse to action. The spark program is used to launch installations, artworks, and so in that sense its name can be taken quite literally.
Sparked is the past participle of the verb spark, and is named like that because in its architecture it shares similarities to Twisted: the famous asynchrounous network programming library for Python.
If you have Ubuntu, it's dead easy:
sudo add-apt-repository ppa:arjan-scherpenisse/spark sudo apt-get update sudo apt-get install python-sparked
that should give you the 'sparkd' executable.
You start sparkd, the runner application for Sparked, and give it the "application" argument of your app. The sparked application is started as follows:
~# sparkd --help sparkd [options] <application> [app_options] Options: -d, --debug Debug mode -N, --no-subprocess Do not start a subprocess for crash prevention --id= Application id (defaults to the sparked module name) --pidfile= Pidfile location (defaults to /tmp/<app-id>/sparkd.pid) --logfile= Pidfile location (defaults to /tmp/<app-id>/sparkd.log) --version --help Display this help and exit. The <application> argument specifies a Python module which is executed as the main sparked class. To see which options hold for an application, start: # sparkd <application> --help
In the source distribution of spark, the example.py contains the following:
# Copyright (c) 2010 Arjan Scherpenisse # See LICENSE for details. """ Example runner class for sparked. """ from sparked import application class Options(application.Options): optFlags = [["fast", "f", "Run fast"]] __version__ = "0.1.0" class Application(application.Application): title = "Sparked example" def startService(self): application.Application.startService(self) if self.appOpts['fast']: self.delay = 1 else: self.delay = 10 def enter_start(self): self.state.setAfter("ping", self.delay) def enter_ping(self): self.state.setAfter("start", self.delay) def createStage(self): return False