1. A method, implemented at least in part by a computing device, of distributing tasks over a heterogeneous system using task and consumer categories, the method comprising: receiving a task, the task comprising at least one or more task attributes and a task description, wherein the one or more task attributes are one or both of hardware configuration attributes and software configuration attributes for matching with consumer device configurations; creating a task category for the task based on the one or more task attributes; determining whether an entry for the task category exists in a data store, the entry being identified using the task category; when an entry for the task category exists in the data store, storing the task description in the identified entry in the data store; when an entry for the task category does not exist in the data store, creating a new entry in the data store for the task category based on the one or more task attributes, wherein the one or more task attributes are one or both of hardware configuration attributes and software configuration attributes for matching with consumer device configurations, the task description being stored in the new entry for the task category in the data store; receiving a task request from a consumer device; creating a consumer category for the consumer device based on consumer attributes, wherein the consumer attributes are one or both of hardware configuration attributes and software configuration attributes of the consumer device; searching for a matching entry in the data store between the consumer category and task categories in the data store; and when a matching entry for the consumer category is found in the data store, sending a stored task description from the matching entry to the consumer device.