The COSE initiative and CDE project will surely aid these issues, but due to legacy systems they will not be on every target machine for several years to come. Version Control Obviously version control is a must for all serious projects. Other companies or organizations will always use other systems. Ideally not a single line of source should ever be duplicated, and functions should be placed in internal libraries so they can more easily be shared between major versions and different products. In the real world though there is no ideal solution.
Projects grow out of early prototypes adapted from other code.
Use the best tools you can get or afford. Plan time for reviewing and if necessary replacing or updating internal tools. Since programmers like to code there is a danger that code will be duplicated rather than systems reorganized to minimize maintenance. One project I worked on had three separate trees based on the same core code. Needless to say they evolved to be incompatible with each other and bug fixing was scaled up by a factor of three.