In our software project, we are quickly gaining a number of small, external programs which are not part of the main program. Each of them has a specific, but limited functionality. We're having trouble coming up with a descriptive, evocative name for them.
What all of these "things" have in common:
- They have a strictly delineated functionality.
- They are completely decoupled from the main program, but are rather useless without it.
- They usually run in their own process, or as a thread in a larger "container" program.
- They run in the background, typically listening for specific kinds of events and notifying the main program.
- The main program can start/stop these at will. The main program will typically start one of these, have them run for a while, and then shut them down again once it's no longer needed.
- The main program communicates with and controls them through some form of RPC or socket-based communication.
- They do not necessarily need to run on the same host as the main program.
We're looking for a word that denotes a small thing spawned by a larger thing, for the benefit and use of that larger thing. The obvious words with which I can come up (e.g., component, module, service, task, agent, stub, ...) already have defined meanings within the context of our project. Additionally, generic terms such as process, child, or daemon may cause confusion when used to refer to things which are not part of our application.
Any component (e.g., a service or task module), may require an ________ to be spawned. This can be done either directly by the agent, if on the same host, or by a stub on a remote host.