TuringLang / AdvancedHMC.jl

Robust, modular and efficient implementation of advanced Hamiltonian Monte Carlo algorithms
https://turinglang.org/AdvancedHMC.jl/
MIT License
237 stars 41 forks source link

Moved all experimental code including tests into research folder. #304

Closed yebai closed 1 year ago

xukai92 commented 1 year ago

@yebai If we want to do this setup, we will need to carefully using internal names from AHMC. The CI is broken because of this; see more at https://github.com/TuringLang/AdvancedHMC.jl/pull/304#discussion_r1036362118.

xukai92 commented 1 year ago

Just to add my preference here: I feel this setup makes experimenting a bit hard as we need to do those extra management. In fact, if we want to separate the code like this, we may well just keep the research code in a separate repo. The main benefit of having it here is that we can change AHMC itself more in an invasive manner with an implementation that could be easily cherry picked into the main branch.

yebai commented 1 year ago

Just to add my preference here: I feel this setup makes experimenting a bit hard as we need to do those extra management. In fact, if we want to separate the code like this, we may well just keep the research code in a separate repo. The main benefit of having it here is that we can change AHMC itself more in an invasive manner with an implementation that could be easily cherry picked into the main branch.

The idea is to use a standalone Julia environment (project) fro each experimental project. These environments manage their own dependencies like the tests folder. In addition, we can work with one branch master for research code too, since the algorithms in the research folder is not loaded by default: users have to explicitly instantiate them.

yebai commented 1 year ago

FYI: https://github.com/JuliaLang/julia/pull/47695 will make it possible to have conditional dependency soon, so keeping everything on the master branch will be possible without separate environments for the research folder -- it also means we can load the research folder by default. So having a clear separation is now only for clarity rather than avoiding unnecessary dependencies needed by research code in the stable releases.