The main reason for using NDF data structures as a standard method of storing astronomical data is to simplify the exchange of information between separate applications packages. In principle, this should make it possible for a software user to process the same data using software drawn from any package.
In practice, previous attempts to define a standard data format for this purpose have met with two serious obstacles. First, different authors of software have interpreted the meaning of data items differently, so that although several software packages might be capable of reading the same data files, the different packages actually performed incompatible operations on the data. Secondly, many software authors have found a pre-defined data format to be too restrictive, and have simply chosen not to use it.
The NDF data structure has therefore had to satisfy two apparently quite contradictory requirements:
The solution to this problem has been to introduce the concept of extensibility, and to divide the NDF data structure into two parts - a set of standard components and a set of extensions - each of which individually satisfies one of these two requirements. An NDF data structure therefore consists of a central ``core'' of information, whose interpretation is well-defined and for which general-purpose software can be written with wide applicability, together with an arbitrary number of extensions which may be used by specialist software but whose interpretation is not otherwise defined. Those who wish to know more of the background to this philosophy can find a detailed discussion in SGP/38.
Most of the present document is concerned with the facilities provided by the fixed ``core'' of standard components, although a few general routines for handling extensions are also included.