1. A method for generating a distributable software package, comprising: loading a template from a distributed library of binaries, the distributed library of binaries being available over a network; loading a number of modules from the distributed library of binaries; receiving configuration options over the network, the configurations options defining options for the distributable software package and the modules within the distributable software package; and assembling a distributable software package according to the template, module, and the configuration options, if the distributable software package is derived from a template version of the distributable software package, and the template version of the distributable software package is modified, then modifying the distributable software package when the template version of the distributable software package is modified, in which the distributed library of binaries comprises template versions of binaries and modified versions of the template versions of the binaries.