We used OpenGL because it is available on all four platforms that we render UI on. The only other option that meets this constraint is a web browser. Web rendering is just starting to get fast enough to support our style of UI, and it still isn’t good enough for people with 2-3yr old devices. Remember–to release this product in 2015, we had to start developing the more basic pieces back in 2011-2012. Back then, doing something like this with web technology was in “forget about it” territory, but OpenGL could already perform just fine.
If we went the “traditional” route with native UI frameworks, we would have a different UI on each platform, development of new features would take 2-3x longer, things would be constantly out of step or feeling inconsistent when moving between devices. We feel really, really strongly about this “same UI everywhere” approach and it has served us really well.
Besides…it would have taken over a year longer to launch Roon. Because of this choice, we were able to produce tablet apps only 3-4mos after desktop-only release, and phone apps about 6 months later. Those timescales would have been measured in years if we went the native route. Actually, Roon probably wouldn’t have survived financially if we moved that slowly.
As fun as it may be for you to back-seat-drive architecture decisions, I don’t think this would make people happier than the road we have chosen…
We are contemplating other options for the future…we are keeping a watchful eye on webrender to become mature/complete enough for us to port over our user interface toolkit. Right now, it is still missing some stuff we need, but the direction + performance it can achieve looks promising. We have also considered switching to Metal for iOS/Mac. Neither would be justified just to solve a minor cosmetic issue like this…we would need to see benefits proportional to the multi-month effort that either change would require.
We would not be where we are without OpenGL as a layer to standardize rendering across the platforms. If there was a better option available at the points where we made these decisions, we’d have used it. There is still not a clear better option now. You can keep being “really disappointed”, but those are the facts.