From ec78b90d00f717b4720b8b45699aa6e5d5b290a0 Mon Sep 17 00:00:00 2001 From: Jonah Maxwell Miller Date: Wed, 17 Apr 2024 15:35:04 -0600 Subject: [PATCH] Add discussion of plugins per Christoph --- joss-paper/paper.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/joss-paper/paper.md b/joss-paper/paper.md index 35c4638b52..92a18d3588 100644 --- a/joss-paper/paper.md +++ b/joss-paper/paper.md @@ -235,6 +235,24 @@ are, however, expensive operations and the performance of lookups can suffer. We instead use the not-quite-transcendental lookups described in [@NQT] to significantly enhance performance of log-like lookups. +## Extensibility via modular parts and plugins + +Singularity-EOS is designed to be extensible. The +``std::variant``-based polymorphism, combined with modifiers, as +described above, already provides significant flexibility. However, +downstream codes may wish to add functionality to the library. This +may be implemented in several ways. **First**, as Singularity-EOS is +open source, contributions from downstream developers are +welcome. **Second**, a C++ code that depends on Singularity-EOS may +implement their own models and include them in a local variant +object. Singularity-EOS provides tooling to build variants up +iteratively. **Finally**, Singularity-EOS provides a flexible plugin +infrastructure that allows downstream users to add capability to the +core library locally by telling the build system to include a locally +downloaded plugin. This final capability allows downstream users to +share code with each other, even when committing that code to +Singularity-EOS proper is not possible due to, e.g., licensing issues. + # Acknowledgements This work was supported through the Laboratory Directed Research and