I think the integration of iris.fileformats.grib to assist in development of the dask interface was motivated by concern around the circular dependency between iris and iris-grib and the problems this caused in development and testing. There are a set of challenging design questions for iris-grib to answer, which were brought into sharp relief by the development of the dask interface; integration made the answers to a set of design questions simple and clear.
Having nearly completed this work, there is a proposal to adopt these code changes into the iris-grib module instead of keeping them on master. This re-raises design questions, which I have not seen explicitly addressed. It is hard to compare the concrete implementation on iris master to an iris-grib proposal which does not address these questions.
Questions include
* iris.load is dependent on iris-grib, iris-grib is dependent on iris, this is a circular dependency.
* Are there aspirations to alter this? What are the implications for the iris API?
* iris-grib is opaque to many users, it is very often installed and in use via the iris API and iris.load as part of a managed installation. The impression is that GRIB support is a core capability of the iris API.
* given the aspirations to cut iris v2.0 soon, I expect that an iris2 that works with iris-grib will not deliver any change to this relationship. I appreciate conversations are occurring in this space, but they are immature
* how are iris and iris-grib versions handled at irisv2?
* which versions of iris are compatible with which versions of iris-grib
* how is this documented for users
* how is this presented in installation instructions and installation tools:
* for conda users?
* for non-conda users?
* what is the future plan for versioning of two libraries?
* is this in lock step?
* is this iris documentation, iris-grib documentation, both?
* what are the implications of a proposed future plan
* what is the approach for continuous integration testing of iris, which requires iris-grib; and iris-grib, which requires iris?
* the previous implementation was that:
* iris master testing only used the latest released version of iris-grib from conda-forge
* iris-grib master only used iris v1.10 and iris master, directly from github
* what is the proposed test environment approach for iris and iris-grib for the master of each of these libraries
* what are the implications of this for managing releases and for having confidence in statements made about compatibility between versions?
* how is ECCodes adoption proposed to be handled?
I feel it is important that questions including these are answered definitively as part of a concrete proposal. At present there is uncertainty in my mind about what is being signed up to if a package of work to bounce iris.fileformats.grib back out of master is pursued to deliver in time for the iris 2.0 release. This presents risks of complication and overrun
ECCodes adoption is an important factor, given the deprecation of GRIBAPI. Independent of decisions on the future of iris.fileformats.grib and iris-grib, I would like to see
https://github.com/SciTools/iris/pull/2607reviewed and merged onto master (note: some questions have been raised, and commented on, but this does not feel like it is about to be merged).
There are material questions on that PR regarding ECCodes behaviour changes and implications for maintaining iris behaviour that have not been agreed. I do not want this PR to be left to atrophy and be closed unmerged.
I think this is small but tangible activity that should happen now, and will be useful and necessary work whatever course of action is implemented for iris 2.0
Is someone prepared to assign themself to #2607 and review those changes with a view to merging, in the knowledge that such an act is not prejudging this ongoing discussion?