The propagation of extensions is necessarily different from the propagation of standard NDF components, because only certain pieces of software may recognise any particular extension. There is therefore no way in which other applications can judge whether the processing they are performing will render the information in the extension invalid. This is an unavoidable consequence of extensibility.
Rather than taking a pessimistic view and automatically deleting all unrecognised extensions, propagation of extensions proceeds along more optimistic lines, as follows:
For instance, an application in a software package which recognised an `IRAS' extension should always check for the existence of such an extension and ensure that its contents were not invalidated by the processing it performs, making changes to the extension to achieve this if necessary.
For instance, an application may recognise an extension but be unable to
ensure its continued validity after processing, either due to a limited
implementation or more fundamental causes.
In either event, the application should suppress propagation of that
extension so that it is lost from the output data structure.
There may be any number of extensions present in an NDF which a particular
application does not recognise.
These should be ignored, and the default action of the NDF_ system will
then be to propagate (i.e. copy) them to the output NDF.
The purpose of these rules is to ensure that extension information is always
retained unless it is certain that it will no longer be valid.
This contrasts with the rules for processing standard NDF components
(§) which are retained only if it is certain that they
will still be valid.
Of course, the rules for propagating extensions carry the risk that an application which does not recognise an extension will inadvertently render it invalid. However, if all applications within a software package recognise the same extension(s), then this can only happen if software from several packages is intermixed. It then becomes the user's responsibility to check the validity of information held in extensions.