[Nexus] NAPI future

Koennecke Mark (PSI) mark.koennecke at psi.ch
Thu Oct 22 15:08:40 BST 2020

Dear NeXus-API users,

The NeXus International Advisory Committee (NIAC) is contemplating dropping support for the NeXus-API (NAPI, https://manual.nexusformat.org/napi.html?highlight=napi ),
his is a library for accessing NeXus data files. Before we make a decision, we would like to determine how many people are still using it. If you still rely on this API, 
please let the NIAC know! In order to focus our efforts better, we would also like to have some information about which parts of NAPI are still used.

But first some history: The NeXus-API was conceived shortly after the inception of NeXus as a means to simplify the access to files in the then prevalent HDF4 format. The HDF4 API is very complex and NAPI abstracted a lot of that complexity away. At that time the NAPI was a major selling point for NeXus.

Years later the HDF group presented HDF-5 and it was felt that the NAPI should support HDF-5 too. And this being a transition period, it should support both HDF4 and HDF5 transparently. Consequently the NAPI was refactored to allow other file formats and HDF5 was integrated.

Some more years later, the community wished to have a human readable ASCII version of the NeXus file format. XML was in favour at the time and thus NAPI was extended to support an XML version of NeXus using the mxml library.

Moving to the current day, the simpler HDF5 native interface and python packages such as h5py means many people are writing NeXus format files directly with these interfaces rather than using NAPI. This lead to the decision by the NIAC to place the NAPI in maintenance only mode.

The NAPI now requires some attention, most notably to make it work with newer versions of the underlying libraries such as mxml-3.x which introduced a breaking API change and is now present on many recent linux distributions. We are preparing a new NAPI release to address this. But the NIAC as an organization is relying on volunteers to get its work done and is hard pressed to maintain NAPI, so we wish to determine where best to divert our efforts.

To help the NIAC make the most informed decisions, please could you answer a few questions. Please place an X between the square brackets in order to mark statements which apply.

## Questions

Abandoning the support for NAPI for bugfix or compatibility with future linux/library/compiler versions will cause me problems at the following level:

[] Critical: I am using NAPI in critical data acquisition or data reduction/analysis software
[] Major: important applications may not be usable at some future date
[] Minor: inconvenience, I have alternatives/can live with this
[] None: either i am not using NAPI, or I have copies of all the dependencies that I build/maintain myself

[] I want the NIAC to continue developing NAPI and make it support more HDF5 features. Please list the
  HDF5 feature you miss in NAPI.

Which of the NAPI file format bindings do you use:

[] HDF4
[] HDF5
[] XML

Which of the NAPI language bindings do you use?

[] Fortran
[] C++
[] Java
[] IDL
[] Swig generated bindings to Tcl, perl, ...

Which of the NAPI utilities do you use?

[] NXbrowse
[] NXingest
[] NXtranslate
[] NXconvert
[] NXdump
[] NXsummary


[] I am willing to help maintain NAPI

The NeXus validator: cnxvalidate, is missing in this list. This is a separate product to NAPI and the NIAC is committed to maintaining it. It uses the HDF5 API directly rather than NAPI.

Thank you for your time filling in this questionnaire!

Please send replies to  nexus-committee at nexusformat.org

If you have further concerns or comments regarding the NAPI, please inform your NIAC representative - these are listed at  https://www.nexusformat.org/NIAC.html

If your facility is using NeXus, but has no representation on the NIAC, please consider joining the NIAC.

Best Regards,

   Freddie Akeroyd
   Mark Koennecke
   on behalf of the NIAC

More information about the NeXus mailing list