iris icon indicating copy to clipboard operation
iris copied to clipboard

Iris Core + Plugins

Open trexfeathers opened this issue 3 years ago • 7 comments

Separating Iris API into 'core' API and multiple 'plugins' is a popular ambition offline, so deserves to be recorded publicly, especially for voting purposes 😉 .

Benefits:

  • Smaller package(s)
  • Quicker to install - fewer core dependencies
  • Can run on Iris on smaller machines e.g. AWS lambda
  • Faster testing - plugins (with accompanying dependencies) get their own separate testing routines
  • Clearer development philosophy

Examples of elements that could be plugins:

  • Plotting
  • Regridding
  • File loaders/savers

trexfeathers avatar Jun 14 '22 12:06 trexfeathers

Having some specific user requirements/scenarios for this would help.

tkknight avatar Jun 14 '22 13:06 tkknight

Regardless, it begs the fundamental Iris developer question: What is the core functionality of Iris?

bjlittle avatar Jun 17 '22 13:06 bjlittle

There are various small packages out there that do specific things that are useful for scientists. For example, I am currently having a go with xeofs which currently has interfaces for pandas, xarray and numpy types. If one were to think about adding an Iris interface to such a package, it would be useful (for testing) to have an Iris flavour that knows about the cube class and probably not much else.

rcomer avatar Jul 08 '22 09:07 rcomer

@HGWright pointed out : The big cost of this, not just the effort of doing it but the ongoing extra repo maintenance (e.g. multiple dependabot hits)

pp-mo avatar Aug 03 '23 09:08 pp-mo

I am still in favour of establishing a core 'concept' - defining Iris core determines Iris' core dependencies - but I don't think plugins would be worth the hassle. We can instead cut the Conda recipe down to the core dependencies and introduce errors/warnings for when a user needs a core dependency but has not yet installed it.

We can also use the core concept to structure our tests such that we don't have enormous environments everywhere. Perhaps only our core is tested against multiple Python versions, while anything involving optional dependencies is only tested against latest Python.

trexfeathers avatar Sep 26 '23 11:09 trexfeathers