[fitsbits] Proposed Changes to the FITS Standard

Mark Calabretta mcalabre at atnf.CSIRO.AU
Tue Aug 21 22:41:55 EDT 2007


On Tue 2007/08/21 17:56:49 -0400, William Pence wrote
in a message to: FITSBITS <fitsbits at nrao.edu>

>The difference here is that I was quoting the revised definition in the 
>new draft standard, which doesn't allow for the possibility that EXTEND 
>= F.  Given that there are existing FITS files with EXTEND = F, the 
>definition should probably be revised to at least not prohibit this usage.

The text describing EXTEND was moved from one section to another (old
text in red on p34, new in blue on p36) so it is not immediately clear
in differences.pdf that this change was made in FITS 3.0 nor does
summary.pdf mention it explicitly.  (BTW, EXTEND does not appear in the
index.)

In answer to Steve's question, FITS is permissive in the sense that
anything that is not disallowed is allowed so

  Anything ever explicitly allowed can never be disallowed

and

  Anything not explicitly disallowed must always remain allowed

say the same thing, i.e. what was once allowed can never be disallowed.

There are two sides to the FITS 3.0 spec:

  1) How it is used by writers.  In this respect it may make sense to
     deprecate some usage (e.g. the ill-defined CROTAn, or EXTEND=F,
     or EXTEND itself) typically because it's replaced by a better
     alternative (e.g. PCi_ja) or is now considered redundant (e.g.
     EXTEND).

     However deprecated usage must remain legal because
     
     a) FITS 2.0 & 1.0 writers might not have been updated to FITS 3.0
        (and may never be) so will carry on using it,
     
     b) FITS 3.0 writers may want to help FITS 2.0 & 1.0 readers, which
        is why existing usage should not be deprecated without good
        reason.

  2) How it is used by readers.  In this respect what was once allowed
     can never be be disallowed.  If the EXTEND keyword was to be
     deprecated (it can't be disallowed) then a FITS 3.0 reader should
     not expect to find it, but it if did it should know what to do with
     it.
     
     In order to be complete and self-contained the FITS 3.0 spec must
     make it clear what was allowed in FITS 2.0 and 1.0 (e.g. EXTEND=F)
     because a generic reader that conforms to the FITS 3.0 spec may
     have to parse a FITS 2.0 or 1.0 file.

     Likewise, the FITS 2.0 spec should have stated explicitly that it
     had deprecated keyrecord comments without a "/" delimiter.

In concrete terms, if FITS 3.0 attempted to invalidate EXTEND=F without
warning that it was valid in FITS 2.0 then a new parser written in
conformance with FITS 3.0 would incorrectly conclude that files written
with EXTEND=F in conformance with FITS 2.0 were invalid.  The effect on
their operation would be implementation-dependent.

Mark Calabretta




More information about the fitsbits mailing list