Turing 1.0.0, AD: Where to put the testing functionality? #2412
Replies: 1 comment 2 replies
-
I'd actually like to suggest a third option, which is in-between these two:
DynamicPPL would then be a dependency of DynamicPPLTest. Then, DynamicPPLTest would then be a test dependency of both DynamicPPL as well as other packages (like Turing, or any AD backend interested in testing against DPPL models). This is mainly inspired by DifferentiationInterface, which has exactly the same setup: https://github.com/JuliaDiff/DifferentiationInterface.jl. It contains: (1) the main package DifferentiationInterface, which contains the actual functionality for performing AD; and (2) the test package DifferentiationInterfaceTest, which contains testing and benchmarking functionalities that build on the main package and allows users to test their own backends against the main package. Notice that this exactly mirrors our situation here! This way, we get to avoid shoving everything inside DynamicPPL itself (which I'm not a fan of simply based on principle); and hopefully, by keeping both packages within the same repo, we can use CI/CD + other tools to synchronise feature development + releases. That 'hopefully' is carrying some weight here though. I have never investigated how well the Julia ecosystem supports monorepos, and I've not yet studied the setup that DifferentiationInterface uses very carefully. But, if there isn't a serious technical reason against this, I strongly believe that this setup would be the cleanest, especially in the long term. |
Beta Was this translation helpful? Give feedback.
-
Spin-off from #2411, please see that for more context
Introduction
As work towards Turing 1.0.0 we would like to have:
I did some very preliminary work sketching out what this might look like here: https://github.com/penelopeysm/ModelTests.jl
The question here is: where should this functionality live? The two major options are:
Beta Was this translation helpful? Give feedback.
All reactions