Quality of life improvements for ModelingToolkit/DiffEq/SciML ecosystem

I’m applying for funding for a research software engineer to do some quality-of-life improvements for the ModelingToolkit/DiffEq/SciML ecosystem from one of the research councils in the UK (specifically the EPSRC Software for research communities call). As part of the application, I need to demonstrate evidence of a “user pull” for these improvements rather than a “developer push” - i.e., not just saying that these extra features will be fantastic (which of course they will be, whatever they are :grin:).

So, those of you who use the ModelingToolkit/DiffEq/SciML ecosystem for research, what would enable you to be more effective in your research?

This could be new features (do mention them) but I’m wanting to focus on aspects that are more mundane (i.e., maybe less interesting for a spare time developer) but provide real benefits, e.g., the painstaking work on invalidations to improve loading/reduce repeated compiles or documentation improvements. Note that while I’ve mentioned the SciML ecosystem, I don’t want to dig too much into the Flux/ML side of things just to limit the scope a bit.

The remit of this proposal is Engineering and Physical Sciences but evidence from a wider user community will still be useful. Even if you don’t have any suggestions, a sentence about how you use the ecosystem would be helpful to demonstrate the potential impact of improvements.

Thanks for any suggestions!


I DM’d you a list of people to contact. But in public, I think it would be cool to hone the potential list of “small but nice” improvements. Some of these small things that come to my mind are:

  • Compile times and precompilation improvements
  • Small solve overhead handling
  • More benchmark cases (more ODEs, but also covering more parameter estimation)
  • More argument warnings and clean error messages for cases which should error but currently throw a messy error
  • Makie.jl recipe support
  • More documentation of IMEX methods
  • Integrating the extended tutorials into the documentation (somehow, without overwhelming it)
  • Wrapping more optimizers into GalacticOptim’s interface

These are the little things that just about anyone can pick up and do, but need to get done. I’m curious what other people have been thinking about in this realm. For reference, the following are the SciML-related JuliaCon 2021 talks whom you may want to get in touch with:

  • Adaptive and extendable numerical simulations with Trixi.jl
  • Airborne Magnetic Navigation Enhanced with Neural Networks
  • AlgebraicDynamics: Compositional dynamical systems
  • An individual-based model to simulate Coffee Leaf Rust epidemics
  • Bayesian Neural Ordinary Differential Equations
  • BifurcationKit.jl: bifurcation analysis of large scale systems
  • Chaotic time series predictions with ReservoirComputing.jl
  • ClimaCore.jl: Tools for building spatial discretizations
  • Designing ecologically optimized vaccines
  • Designing Spacecraft Trajectories with Julia
  • Easy and Customizable PINN PDE Solving with NeuralPDE.jl
  • Generative Models with Latent Differential Equations in Julia
  • Global Sensitivity Analysis for SciML models in Julia
  • Going to Jupiter with Julia
  • JuliaSim: Machine Learning Accelerated Modeling and Simulation
  • JuliaSPICE: A Composable ML Accelerated Analog Circuit Simulator
  • Learning during the pandemic
  • Modeling Marine Ecosystems At Multiple Scales Using Julia
  • Modia – Modeling Multidomain Engineering Systems with Julia
  • PhyloNetworks: a Julia package for phylogenetic networks
  • Physics-Informed ML Simulator for Wildfire Propagation
  • Scalable Power System Modeling and Analaysis
  • SciML for Structures: Predicting Bridge Behavior
  • Simulating Big Models in Julia with ModelingToolkit
  • Simulating Chemical Kinetics with ReactionMechanismSimulator.jl
  • Single-cell resolved cell-cell communication modeling in Julia
  • Space Engineering in Julia
  • Symbolics.jl - fast and flexible symbolic programming
  • Systems Biology in ModelingToolkit