Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iris Core + Plugins #4798

Open
trexfeathers opened this issue Jun 14, 2022 · 7 comments
Open

Iris Core + Plugins #4798

trexfeathers opened this issue Jun 14, 2022 · 7 comments
Labels
Dragon 🐉 https://github.com/orgs/SciTools/projects/19?pane=info Experience: High Release: Major Type: Enhancement Type: Infrastructure

Comments

@trexfeathers
Copy link
Contributor

trexfeathers commented Jun 14, 2022

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
@tkknight
Copy link
Contributor

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

@bjlittle
Copy link
Member

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

@rcomer
Copy link
Member

rcomer commented Jul 8, 2022

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.

@trexfeathers trexfeathers added the Dragon 🐉 https://github.com/orgs/SciTools/projects/19?pane=info label Jul 10, 2023
@pp-mo
Copy link
Member

pp-mo commented Aug 3, 2023

@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)

@trexfeathers trexfeathers moved this to 📌 Prioritised in 🐉 Dragon Taming Aug 3, 2023
@trexfeathers
Copy link
Contributor Author

trexfeathers commented Sep 26, 2023

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
Copy link
Contributor Author

An important consideration:

@trexfeathers
Copy link
Contributor Author

Something not well captured above:

Iris-grib and iris-esmf-regrid have benefitted from being separated from the release cadence of Iris itself. This may be an opportunity for other areas of Iris too.

If any part of Iris is unlikely to reap this benefit (e.g. our plotting capabilities do not evolve very frequently) then I am still keen to explore optional Conda dependencies rather than full blown repo separation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Dragon 🐉 https://github.com/orgs/SciTools/projects/19?pane=info Experience: High Release: Major Type: Enhancement Type: Infrastructure
Projects
Status: 📌 Prioritised
Status: No status
Development

No branches or pull requests

5 participants