The diagram used to illustrate the GII model is shown below. In the former case, the source code reflects the specification of the API, but after compilation portability is usually lost and the resulting binary is specific to the particular platform for which it is compiled. In the latter case, the binary itself is portable between a number of platforms.
Binary portability is the basis of the considerable variety of shrink-wrapped PC applications.
However, in so far as binary portable applications are often restricted to a particular processor, binary APIs do not in general meet the openness requirement of application portability between platforms with different multi-processor architectures. Hence, standards bodies tend to focus on source code portability. Such APIs form an important subset of the complete set of APIs. This kind of independence is necessary if people are to be able to write applications that do not need to know where the information used is located. This specification should cover exchange of data values between different languages where it is expected that implementations will support bindings to multiple services for a single programming language, any requirements on compatibility between these bindings should be specified, including requirements on coordination of name spaces.