1. A process of programming and compiling computer-executable code, the process comprising: receiving a new or modified version of a software module; publishing the new or modified version of the software module to a central repository to permit access of the software module version by a plurality of clients; receiving, during a computer programming process for a software program, a specification of a software module having a defined functionality for use by the software program, wherein the software module is stored in the central repository, the central repository storing different published versions of the software module; compiling the software program, compilation initiating steps comprising querying the central repository to identify a plurality of versions of the software module and filtering versions of the software module that do not meet the specification, wherein the specification corresponds to more than one version of the software module; selecting, from versions that have not been filtered out, a selected version of the software module, wherein selection is based on one or more predetermined rules that compare the versions that have not been filtered out; and returning the selected version of the software module from the central repository for local storage with the software program.