Migrating to a Git version of Juce


I have always used to last released version of Juce, but now I’ve decided that I need the new functionality offered by the Git version.
I guess there’s this usual tread-off between stability and functionality so I’m asking for your advice regarding to how to use the Git version.

One idea I have in mind is to always pull up to the HEAD - 10 last commits, that way I may have a better stability.

I know having the last Juce classes will help me a lot, But I also know that debugging my app for a few hours only to find out it was because I used
the last committed files may impact my mental state…

I’m in no way implying anything about the Git version stability, never used it.

What is your advice?

You should consider those hours of debugging as your contribution to improving Juce, rather than go mental about it. If you provide Julian with the information he needs to fix the bugs, he will. If you take the trouble to debug his code and find out exactly what is wrong, he will fix it quite fast.

Staying N commits behind gives you absolutely no protection from anything at all! If anything, it makes you less likely to have a stable base, as fixes may have been reported and checked in that you’re ignoring.

If you’re getting from the repository, always get the latest. You don’t have to update it every single day, but when you do, get the tip.

Ole: That’s my pro too in moving to the Git, but I’m concerned with the negative impacts .
Haydxn: You’re totally right when thinking about it… there’s no point of lagging behind the tip.

I guess I’ll go for the tip.

Thanks for your tips guys :slight_smile:

I have never had any negative results from using the tip.

If I had a continuous integration system that would have been perfect:
Each time you update the Git you just wait a minute to see if you CI starts shouting, and if not, then you know you’re OK.

But I’m not there yet…

I’ve used the tip on and off for about a year now and I’ve had a generally good experience with it.

Once there was a new, small problem that Jules fixed almost immediately. But several times I’ve had to stop development and change things because some part of Juce changed and I needed to change my code. The worst was I think when the leak detector came in - I had several leaks of Juce things from non-obvious causes and had to stop and spend some time tracking it down but this overall improved my code quality (it was only singletons being leaked but it’s really good to make sure you have kept track of every item).

I was away for months and at some point there was a serious change to the model of String. That was also somewhat eventful, since I convert quite a bit back and forth from String to std::string due to my other libraries but this convinced me to bring all that out into a single routine that really makes it much better for me anyway.

I have a reasonably large app that touches on lots of parts of Juce so I might be “impacted” (as they say around here) more than most by changes. All of these were changes for the better, there’s no question.

So yes, if you stay on the tip you can expect that occasionally when you update you’ll have to make changes to your code to get it to compile, and very rarely, there will be some small bug that Jules will fix expeditiously given enough information to isolate it (and since you have all the code to look at, you can just tell him what’s wrong :-D)/

I would much rather be “forced” into accepting many small changes over a long period of time by staying on the tip, than waiting a year or two until Jules puts out a new official version and then being faced with making all the necessary changes to upgrade all at once.

I agree!

I think this is a poor strategy with many third-party packages, because you die a death of a thousand cuts, but Juce’s tip has been pretty stable for me.

I’d recommend updating every few weeks, myself.


I have moved to the Git tip, everything works great, but now I need to generate the Doxygen files myself.
Does anybody have a configuration template I can use? or some tips on how do to that? will be much appreciated.