Patent attributes
An improved system and method for providing software is described. The system, upon receiving a software request from a user device, obtains metadata about the user device. Based on the metadata and the software requested, a template of the software is obtained. The template specifies a list of categories, where each category is associated with component(s) in a component database. Based on the metadata and eligibility attributes of the respective components, one component from each category is selected for inclusion in the software. From the selected components and the template, the requested software is constructed and sent to the user device. In some embodiments, for popular user devices, a previously stored selection of components can be accessed. In some embodiments, an updated version of the software is provided if the metadata of the user device changes or if there is a change in the available components or software templates.