HDF4 proposed changes

Hi all,

I’ve added a bunch of discussions concerning some HDF4 changes I’d like to make in the coming year or two. Many of these are potentially breaking, mostly in the build system, but others in what we consider the public API.

Topics:

  • Define a public interface for HDF4 and stop deploying “internal” headers
  • Drop the ancient netCDF 2.3.2 interface and tools
  • Drop Fortran 77 and require Fortran 95
  • Remove or modify the unsafe Fortran wrappers that jam pointers into 32-bit integers
  • Bring the library and tool names into alignment between CMake and the Autotools
  • Replace XDR with a stripped-down I/O scheme

They are all listed in the Discussion section of the HDF4 GitHub repo, but discussions could also take place here as well. If anyone wants to discuss here instead of on GitHub, I can create a separate pinned post for the topic.

I plan to keep these open for discussion into the fall. I’ll be at the summer ESIP in Vermont in July if anyone wants to track me down.

Some of these ideas are more important than others, of course. I despise XDR and it’s quirks and want to get rid of it ASAP. Declaring a “public API” as also going to happen in the next release, because otherwise HDF4 is essentially unmaintainable. I could be convinced to keep Fortran 77, but I think the community will be a lot happier if we move to modern Fortran. Ditching netCDF would be great, but I’d be very worried about breakage, so I wouldn’t do that without a lot of community involvement.