As I mentioned in #16 (review), Turing's default chain backend is now FlexiChains.jl rather than MCMCChains.jl. There are many reasons for this -- I am biased because I wrote FlexiChains ;) but I do think it's better.
There is absolutely no obligation for you to follow suit of course. I think it would be good to ensure that the package does work with FlexiChains, but whether you want it to be a default or not is a stronger question, and that is completely up to you. I see three possible pathways that ParallelMCMC could take:
-
Keep MCMCChains as the default, and make things work with FlexiChains. This would just entail adding a FlexiChainsExt, and probably also a DynamicPPLFlexiChainsExt. (We'd need two different extensions unfortunately to deal with the different cases where people sample either an arbitrary LogDensityProblems.jl-compatible model, or a DynamicPPL model.)
-
Make FlexiChains the default, and move the MCMCChains code to an MCMCChainsExt + DynamicPPLMCMCChainsExt.
-
Be completely agnostic, and have a zoo of extensions for each chains backend! This sounds silly, and it is probably a bit silly, but it does mean that your dependency chain will be slimmer. Both MCMCChains and FlexiChains will pull in some deps that you probably don't care about.
As mentioned I am biased and I would say my order of preference is (2) > (1) > (3), but it is very much up to you :)
As I mentioned in #16 (review), Turing's default chain backend is now FlexiChains.jl rather than MCMCChains.jl. There are many reasons for this -- I am biased because I wrote FlexiChains ;) but I do think it's better.
There is absolutely no obligation for you to follow suit of course. I think it would be good to ensure that the package does work with FlexiChains, but whether you want it to be a default or not is a stronger question, and that is completely up to you. I see three possible pathways that ParallelMCMC could take:
Keep MCMCChains as the default, and make things work with FlexiChains. This would just entail adding a FlexiChainsExt, and probably also a DynamicPPLFlexiChainsExt. (We'd need two different extensions unfortunately to deal with the different cases where people sample either an arbitrary LogDensityProblems.jl-compatible model, or a DynamicPPL model.)
Make FlexiChains the default, and move the MCMCChains code to an MCMCChainsExt + DynamicPPLMCMCChainsExt.
Be completely agnostic, and have a zoo of extensions for each chains backend! This sounds silly, and it is probably a bit silly, but it does mean that your dependency chain will be slimmer. Both MCMCChains and FlexiChains will pull in some deps that you probably don't care about.
As mentioned I am biased and I would say my order of preference is (2) > (1) > (3), but it is very much up to you :)