1. A method comprising: storing, in a storage device, a list of applications that can perform a task, the list referencing at least one primary application and a plurality of secondary applications used to perform the task; maintaining priority data representing a history of executing the task with the secondary applications, the history including one or more of application execution speed, application reliability, grid compute node reliability, or application accuracy; executing the task with the primary application in response to a request to perform the task; and executing the task with one or more of the secondary applications according to grid resource availability, the task being executed by the one or more secondary applications according to the priority data, wherein the execution of the task by the one or more secondary applications is limited in accordance with a time limit.