Open collaborative design/Vast libraries of machines and components
As in software, it would be useful for components and assemblies to be as 're-usable' as possible in the sense of being able to be incorporated in many different machine designs. To aid this it should be possible to specify the vital dynamic functions of a component or assembly in the CAD software, so that it can easily be modified in shape and scale so it can be incorporated into a new design while ensuring it still works correctly.
This will enable a huge reduction in duplication of effort and allow people to focus their efforts on creating new machines of increasing complexity and building on the work of others.
One interesting side-effect of open collaboration is that it tends to lead to highly modular design. FireFox and Linux are examples of this. Modularity also leads to a high degree of reusability; someone designing a new piece of hardware or software can pick-and-mix parts of existing projects. This works well in software, but may have to be abstracted somewhat to work in physical systems where dimensions are obviously important to fit with other components.