﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
177	Port to use ECMWF BUFR library	Dave Offiler	Dave Offiler	"ROPP-3 (and all previous releases) interface with the Met Office ('MetDB') BUFR library. This was chosen mainly because it was already in use for several similar internal and export applications (and was therefore well-known to the author); was/is (reasonably) well supported on a variety of platforms/compilers; was/is well validated since the same code is used operationally for the MetDB.

The downsides are:

    * the code is not open source, but has a restrictive licence, and it is not encouraged to be 'given away' except to registered users. We do distribute the package as a stand-alone dependency of ROPP via the GARF website, which at least audits user downloads. 

    * while the MetDB decoder function handles BUFR Edition 4, the encoder does not (yet) support this edition, which has been in use since 2005; edition 3 is supposed not to be used after November 2012.

    * with the MetDB Replacement project (potentially being replaced for NWP use by ECMWF's ODB system), the continued long-term support and development of the MetDB library is not guaranteed (though certain to be continued for a few more years yet).

    * the MetDB interface has only a 32-bit float argument to the encoder & decoder. With GPSRO Impact Parameter values requiring high precision (80km to nearest 0.1m), we experience truncation errors at the 0.5m level.

    * the MetDB encoder crashes when attempting to encode  particularly long (but within WMO guidelines) BUFR messages. (The decoder works ok with long messages, though). Not an issue for GPSRO unless there is a requirement to encode many full-resolution profiles into one BUFR message; our continued policy is 'one profile is one message'.

At the time that the MetDB package was selected for ROPP development, other implementations were available (notably ECMWF's) but with even more restrictive conditions, with an unknown interface and dubious support prospects. Several of the downsides for the MetDB package noted above were also yet to surface...

In the last couple of years, the ECMWF library has been available under a GPL licence, is demonstrably supported, and is already being used for NWP SAF  deliverable code (AAPP). The latest release (000380) also fully supports BUFR Edition 4 (to meet WMO FM94-XIII regulations).

So ROPP-4 would be a good opportunity to port the ropp2bufr & bufr2ropp tools to use the ECMWF API library. As a period of backward compatibility will be required, as users may not initially wish to change their dependency libraries, we need to be able to interface to either library (at build time). This should be possible by extending the existing ropp_io configure script which detects if the (MetBD) BUFR library is present or not (and skips the encoder/decoder builds if not. The application code will need two parallel API-level interfaces to be chosen at build time."	enhancement	closed	normal	5.0	ropp_io	3.0	fixed	BUFR, library encoder, decoder	
