Guide for Algorithm Module Developers
IMPORTANT! This developer guide is deprecated! The new Developer Guide will be published in end of 2014. The new way to integrate algorithms into the Cloud'N'Sci.fi marketplace is much simpler than what is presented below. New version will be published in GitHub soon...
This guide is targeted for software developers interested in creating algorithm modules to Cloud'N'Sci.fi. Each algorithm module should implement a data processing step which has well-specified input and output and does something useful to the data. Moreover, algorithm modules should be as general-purpose as possible to maximize applicability in algorithm architectures aiming to solve real-world data refining needs.
Cloud'N'Sci.fi algorithm modules can be practically anything from a short script to some really complex data processing method. Their common properties are:
- Modules read input data from a given directory
- Modules write output data into a given directory
- Output data is somehow refined from the input data
- Both input and output data are well-specified
Although modules may implement some really sophisticated algorithms (as understood by the academic world), they do not satisfy the Cloud'N'Sci.fi definition of an algorithm due to lack of direct benefit to customers. Therefore, in Cloud'N'Sci.fi terminology they are just 'modules' which are used to build 'algorithms'. In practice, algorithm modules and data flows are managed by a Cloud'N'Sci.fi system component called the Scilego Server.
One of the key design goals of the Cloud'N'Sci.fi system has been to make development and integration of algorithm modules as easy and flexible as possible. We believe that minimal development overhead maximizes the number of developers joining the fun which brings the best modules into the system. The more modules we have, the more solutions can be built of them. Each practical solution makes the system more attractive to customers and application developers which directly increases algorithm developer incomes.
In order to ease module development, we have defined a set of simple rules that each algorithm module must satisfy. Obey those rules to make your module compatible with the Cloud'N'Sci.fi system.
The rules for algorithm module developers.
- Rule 1: Operating System
- Rule 2: Naming
- Rule 3: Packaging
- Rule 4: Installing
- Rule 5: Executables
- Rule 6: Documentation
- Rule 7: Configuration
- Rule 8: Source Code
- Rule 9: Resources
- Rule 10: Dependencies
- Rule 11: Test cases
- Rule 12: Summary
- Rule 13: Building
- Rule 14: Launching
- Rule 15: Working Directory
- Rule 16: Ready
- Rule 17: New Request
- Rule 18: Started
- Rule 19: Initialized
- Rule 20: Processing
- Rule 21: Output
- Rule 22: Logging
- Rule 23: Completed
- Rule 24: Failure
- Rule 25: Stateless
- Rule 26: Confidentiality
Complete algorithm module integration example with Java source code can be found on the the WonderSorting algorithm pages.
Algorithm Module Packaging
As defined in rules 3-14, algorithm modules should be packaged and delivered to Cloud'N'Sci as a single zip-file. The image below shows the file structure of a proper algorithm module.