JIVE is a bundle of JUCE modules centered around the desire to have a more modern approach to UI development.
This approach is inspired by web front-ends where we write declarative markup (HTML) to define what components we have, style those components using style sheets (CSS), and then dynamically update those components at runtime using imperitive code (JavaScript). With JIVE however, all three of these layers are done using tools already available in JUCE - juce::ValueTree for markup, juce::var/juce::DynamicObject for style sheets, and regular old C++ for dynamically updating.
🧑💻 Improved Developer Experience
- Write less UI code than in a typical JUCE project.
- Write better UI code that's more declarative and uses common terminology with other UI frameworks.
- Build ideas faster, with much shorter iterations between one design to another.
- No additional dependencies - built purely from the tools provided by JUCE.
- Less boilerplate and therefore less time wasted (and maybe even fewer bugs) when developing UI features.
- Easier onboarding for any team members unfamiliar with the querks and complexities of developing GUIs in JUCE.
👷 Improved Architecture
- Encourages the separation of the UI from the business logic that controls it.
- Encapsulates the JUCE backend enabling applications to interact with the UI through common data structures like value-trees and JSON documents.
- Specifically built to fit the Model-view-presenter pattern - although flexible enough to suit any architecture.
- Inspired by front-end web libraries to more easily build design systems and share components.