The Stone Soup project will be the core this working group, as approved at the ISIF Board of Directors meeting at Fusion 2018. The Stone soup code will be available on GitHub in April 2019. Stone Soup has six component types: framework, data, algorithms, metrics, simulators, and sensor models.
The framework is the core of the project. This is the software infrastructure necessary to construct appropriate combinations of components from a repository. The framework is designed to mirror the mathematics in the components and be extensible to incorporate new algorithms developed by the research community, as well as data sets from different fields of interest, thus providing the ability to evaluate new algorithms on different problems more efficiently. Evaluation takes place via the (interchangeable) metric module. Algorithms can also be evaluated against simulations that are generated by the interchangeable simulator module. However, algorithms are not treated as monolithic code blocks in Stone Soup. Subcomponents of the algorithm can be interchanged for other functionally equivalent approaches (as an example a simple tracker is shown below). This makes a very powerful engine that can be used to understand exactly what part of a proposed algorithm is driving its performance.
This is achieved by constructing a standard interface between subcomponents, using inheritance where necessary, such that the calling routine is agnostic to the approach within the code block. The framework is coded in Python 3.0. Python’s class-based, object-oriented, duck-typed paradigm elegantly enables this approach.
Please see Stone Soup’s documentation for more detail.
Stone Soup is an old European folklore story, with many versions told in several countries. Here is the authors’ version, capturing the essence of all the versions but not corresponding exactly with any particular one.
A traveller arrives in a village seeking food and shelter. Upon arrival, he discovers all the inns and shops are closed and there is no food at the market. The villagers tell him there is no food in this village and he should move on. Undeterred, the traveller produces a large pot from his backpack and proceeds to fill it with water from the stream. He then drops several large stones in it and places the pot over a fire in the market square. The villagers become curious and gather round, asking what he is doing. The traveller announces that Stone Soup is being made and that it is very nutritious, although it needs some time to develop its full potential.
By this time most of the village has gathered round, thinking our traveller to be mad, and he’s playing the crowd, “nothing better than stone soup” he says; “except perhaps stone soup with herbs”. One of the villagers doesn’t mind parting with a few stalks of thyme from the garden. “Could do with a little bit of body” says the traveller and another villager finds some old potatoes from the larder. “Still needs a little bit of garnish to improve the flavour” he says and an old cabbage and some salt beef is found by the villagers. Eventually more and more villagers make contributions and a delicious soup is produced. Finally, the traveller removes stones from the pot, and the nourishing soup is shared around the village.
Moral: By working together, with everyone contributing what they can, a greater good is achieved.
Of course, in the case of the original story the soup is consumed. However in the case of a software project, the output from the collaboration will remain to benefit everyone into the future!