Well, I’m the only one managing coding, repos etc…all the coder freelancers I’ve hired during the years just worked on the classes that I needed, never on the actual plugin. Plus, all build systems are local, so it’s easier to keep the same version I need across all the platforms.
And while I try to keep all plugins updated, I rarely update JUCE, perhaps twice a year unless there’s a bug I need fixed. And as mentioned, I have patched JUCE, so having one JUCE folder that I can also mirror between macOS, Windows, and Linux, it’s just easier for me. If there’s a breaking change, it forces me to update all the plugins in one go, which is a good thing for my customers and for the business.
After all these different answers it seems like the best practice is dependent on your priorities and the way you like to work.
If you don’t mind updating all your plugins when Juce is updated then go for a global Juce folder or a mono-repo to keep it all together.
If you don’t want to update all your plugins when Juce changes then go for Juce as a submodule in each plugin project and apply discretionary updates. As has been suggested you could also have a global Juce but just change to the right version before building your project.
Personally I’d pick a configuration where your plugin repo is in a valid state when you clone it.
My 5c: Maintaining multiple versions of JUCE in multiple plugins can be highly confusing. I try to update juce in all my plugins at once (at least those still in business) so they share the same forked juce repo.
Simple. Just create forked repo from juce and make your team share that repo. Merge the source juce repo into the forked repo only when it is strictly necessary and let the others of team know when that happens.
It’s a fair point but the idea is that when you update Juce to the latest for one plugin, you can do it for the others when you need to or have time etc. That is, when you update Juce at all, you don’t have to commit to fixing, testing and launching all other plugins.
It doesn’t imply that you keep working with lots of different Juce versions. Just that you have full control of when you update.
Of course, if your policy is to commit to updating all plugins on updating Juce then it doesn’t matter.