As we mention in our discussion of MultiInterface Computing, a platform is a combination of a particular architecture of computer and operating system. Portable software can be recompiled to run on multiple platforms. Usually this involves factoring the software into pieces that depend on platform features, and using conditional compilation techniques to use the appropriate features.
Ideally, we could automate the process of testing for features. We discuss this in more detail in our papers proposing a system we called SapCat, and a final proposal we created for the Software Carpentry design competition.
A related concept is outfitting a platform with suitable applications for intended purposes. We explored this in our SESSION/SETUP system. We discussed techniques for doing this on a larger scale in a 1993 talk Using Package for the AFS User’s Group, and in a 1994 talk at SHARE called Organizing Chaos.