A method for processing data, the method comprising: receiving, by a computing device, one or more discovery messages from one or more networked devices, each discovery message including services found on a networked device, the services for the networked device provided in a framework for the networked device, the framework allowing parallel processing of tasks for a project using modules compatible with the framework; determining, by the computing device, a project in which data should be processed, wherein the project is made up of tasks that need to be performed where each task processes at least part of the data for the project; determining, by the computing device, one of the networked devices that has processing resources to perform a service for the project, the service determined to be able to perform a task in processing at least a part of the data for the project; distributing, by the computing device, a module from the framework for the computing device to the one of the networked devices for performing the service for the project; and distributing, by the computing device, data for the task to the one of the networked devices, the one of the networked devices processing the data using the module for the project, wherein the determining the one of the networked devices that has processing resources to perform the service for the project comprises polling the one or more network devices dynamically to determine available processing resources; analyzing the project to determine the one of the networked devices to perform the task based on the dynamically determined available processing resources; and selecting the one of the networked devices based on capabilities included in the one of the networked devices. receiving, by a computing device, one or more discovery messages from one or more networked devices, each discovery message including services found on a networked device, the services for the networked device provided in a framework for the networked device, the framework allowing parallel processing of tasks for a project using modules compatible with the framework; determining, by the computing device, a project in which data should be processed, wherein the project is made up of tasks that need to be performed where each task processes at least part of the data for the project; determining, by the computing device, one of the networked devices that has processing resources to perform a service for the project, the service determined to be able to perform a task in processing at least a part of the data for the project; distributing, by the computing device, a module from the framework for the computing device to the one of the networked devices for performing the service for the project; and distributing, by the computing device, data for the task to the one of the networked devices, the one of the networked devices processing the data using the module for the project, wherein the determining the one of the networked devices that has processing resources to perform the service for the project comprises polling the one or more network devices dynamically to determine available processing resources; analyzing the project to determine the one of the networked devices to perform the task based on the dynamically determined available processing resources; and selecting the one of the networked devices based on capabilities included in the one of the networked devices.