standards: Compatibility

1 
1 3.2 Compatibility with Other Implementations
1 ============================================
1 
1 With occasional exceptions, utility programs and libraries for GNU
1 should be upward compatible with those in Berkeley Unix, and upward
1 compatible with Standard C if Standard C specifies their behavior, and
1 upward compatible with POSIX if POSIX specifies their behavior.
1 
1    When these standards conflict, it is useful to offer compatibility
1 modes for each of them.
1 
1    Standard C and POSIX prohibit many kinds of extensions.  Feel free to
1 make the extensions anyway, and include a '--ansi', '--posix', or
1 '--compatible' option to turn them off.  However, if the extension has a
1 significant chance of breaking any real programs or scripts, then it is
1 not really upward compatible.  So you should try to redesign its
1 interface to make it upward compatible.
1 
1    Many GNU programs suppress extensions that conflict with POSIX if the
1 environment variable 'POSIXLY_CORRECT' is defined (even if it is defined
1 with a null value).  Please make your program recognize this variable if
1 appropriate.
1 
1    When a feature is used only by users (not by programs or command
1 files), and it is done poorly in Unix, feel free to replace it
1 completely with something totally different and better.  (For example,
1 'vi' is replaced with Emacs.)  But it is nice to offer a compatible
1 feature as well.  (There is a free 'vi' clone, so we offer it.)
1 
1    Additional useful features are welcome regardless of whether there is
1 any precedent for them.
1