AcademySoftwareFoundation / AcademySoftwareFoundation/OpenImageIO

Consider switching GUI toolkits for iv

Open
#4,897 12 comments 0 reactions 0 assignees View on GitHub
help wanted iv roadmap strategic
Dominant language
C++
Stars
2.4k
Forks
698
Avg merge
3d 4h
Merged PRs (30d)
47

Description

The `iv` viewer is the only part of OIIO that uses Qt, which is an *extremely* heavy dependency, especially considering the tiny sliver of its functionality that we use. I didn't pick Qt for any special reason -- it just seemed to be a safe choice for a popular, dependable, cross-platform GUI toolkit when I wrote the first version of OIIO's iv in 2008.

We have talked before about maybe switching to something that would be a much simpler dependency to build and use. We've mentioned [Dear Imgui](https://github.com/ocornut/imgui) or [Nanogui](https://github.com/mitsuba-renderer/nanogui) as possibilities.

Let's use this issue to discuss, offer suggestions and debate the pros/cons, and track progress of the work.

As a reminder, when evaluating which toolkit to switch to, I think the considerations should include:

* **Fuctionality**: It must do the things iv needs now and potentially in the future, and not come with too much expensive baggage that we will never need.
* **Cross-platform**: It should be a given that we want it to work on Linux, MacOS, and Windows with as uniform an API as possible.
* **Appropriately licensed**: It needs to have an open source license that is compatible with our Apache-2.0 for the way we build and distribute OIIO.
* **Widely available**: As a dependency, it should be something that is easy to install, available in all the major package managers, or even easily "vendored" into our project.
* **Easy to build**: It should not be overly expensive to build from scratch.
* **Dependable**: It should be robust, polished, with an active development team. We don't want somebody's hobby project that has not been used on real products, or something supported by a single person whose availability to do continued support and development may vary.
* **Known or worth knowing**: It would be great if the toolkit was somewhat widely used so there are many people who already know it, or that people who don't know it would consider making the effort to learn it to have a positive ROI for them.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the iv viewer, which is the only OIIO component identified as using Qt. Compare Dear Imgui and Nanogui against iv's current and future functionality, cross-platform support, licensing, availability, build cost, dependability, and adoption. Done would require selecting a toolkit and tracking the migration work.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.