1. A method for selecting modules for an application update, comprising operations of: initializing a set modules for an application with their most updated versions; and iterating through operations of: obtaining specification attributes for an updated version of the application; obtaining specification attributes for each module; comparing the specification attributes of the modules with the specification attributes of the application to identify incompatible specification attributes; identifying the least compatible module; and replacing the least compatible module with a version of the module that results from decrementing a version number for the module, until there are no more incompatible specification attributes, wherein the operations are executed by one or more processors.