Software Servers

Repository: https://opensource.ncsa.illinois.edu/stash/scm/pol/polyglot.git
Documentation: Web | PDF
Bug Reporting: Jira
License: NCSA Open Source
Status: Active

Software Servers re-introduce an API on compiled software so that it can once again be called within new code. The current implementation uses a RESTful interface as the API, allowing any programming/scripting language that supports accessing URLs to access the functionality.

Software servers are founded on a notion of “imposed code reuse” or “software reuse”. Analogous to traditional code reuse, software reuse involves re-using functionality within compiled code. This involves re-imposing an API on the software so that the functionality can be called and used within new code. Software servers provide such an interface. Through the use of wrapper scripts written in a variety of languages (AutoHotKey, Sikuli, AppleScript, and Python) we automate interactions within arbitrary 3rd party software in order to capture operations that can be shared as functions within a uniform software server API. The software servers, written in Java, provide a Java interface as well as a restlet based RESTful interface to the utilized software. The RESTful interface encodes functionality as URLs of the form:

http://<host>:8182/software/<SoftwareAlias>/<Task>/<OutputFormat>/<Input...

One can use this interface to call this functionality within their code (treating the software as the implementation of a black box function).

Videos

Demonstration of functionality being shared within GUI driven software. Sharing
Accessing
Accessing
Execution on Server
Demonstration of functionality being shared from several GUI driven applications. Sharing
Accessing
Execution on Server
Accessing
Execution on Server
Using Software Servers to harvest open/save capabilities within 3rd party software to create an extensible conversion service. Converting Files
Previewing Files
Listening for Software
Monitoring Software