Juce 8 Transition Feedback

Hi all, congrats on the release of juce 8. Hoping to check out the Direct2D renderer in testing very soon.

I know this won’t be the same for all juce users but I just wanted to share my experience in updating to juce 8.
It’s taken me a day and a half to migrate with something approaching 500 uses of juce::Font that needed updating.

Whilst this change was straightforward, we have ~20 products and we can’t transition them all to juce 8 overnight. I specifically wanted to get Waveform working first so I could give some feedback to Matt. We don’t have a monolithic repo so Waveform has 9 git submodules that use juce, 3 of which are 3rd party (gin and 2 melatonin ones). Our shared/utility modules are used by our other products so they need to be compatible with juce 8 and 7 until we can transition them. If we don’t do it this way, we can’t make changes to those shared repos and use the changes in both sets of products.

In order to do this we ifdef using JUCE_MAJOR_VERSION >= 8 to maintain support for both versions. I know this seems like a small change but means making each of those 500 edits takes about 10x longer. I had to fork the melatonin repos in order to add compatibility whereas before we were only using the main repo.

It might be worth it in future to pre-empt things like this, you could have added juce::FontOptions to juce 7, even if it just passed on the arguments. That would have made almost all of those changes much much quicker.

Hope this feedback is received in the spirit it was sent and thanks for all your hard work!

10 Likes

Thanks @dave96 that is useful feedback, we were concerned about the migration of Font, I don’t think we considered having FontOptions in JUCE 7. It’s a shame it didn’t come up before we merged.

I know it’s not ideal but could you ignore the deprecations until you can fully transition? that way both the code and the behaviour can remain identical between JUCE 7 and JUCE 8. When you’re ready to transition you could enable the deprecation warning again and make the required changes without having to concern yourself with lots of ifdef statements?

1 Like

Thanks, I did start by doing that but then thought I’d just dive on in and update. The tricky thing with these updates is you don’t really know how many there are before you’ve done them all. The more you do, the more pop up and there were just a lot more than I anticipated.

1 Like