Skip to content

Commit 7e5eb04

Browse files
committed
admin: Add a ROADMAP document (AcademySoftwareFoundation#4161)
Signed-off-by: Larry Gritz <lg@larrygritz.com>
1 parent 9e9082b commit 7e5eb04

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ pull request (PR) mechanism.
137137

138138
* [CONTRIBUTING](CONTRIBUTING.md) has detailed instructions about the
139139
development process.
140+
* [ROADMAP](docs/ROADMAP.md) is a high-level overview of the current
141+
development priorities for the next annual release, expected in September,
142+
2024.
140143
* [RELEASING](RELEASING.md) explains our policies and procedures for making
141144
releases. We have a major, possibly-compatibility-breaking, release annually
142145
in September/October, and minor bug fix and safe feature addition release at

docs/ROADMAP.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
2+
<!-- Copyright Contributors to the OpenImageIO Project. -->
3+
4+
# OpenImageIO Roadmap
5+
6+
This describes the major tasks we hope to accomplish on the road to
7+
OpenImageIO 3.0, which should be released circa September 2024. Where there
8+
are links to issue, please read the issue for more extensive description and
9+
discussion about the modifications required.
10+
11+
OpenImageIO is fairly mature and one could argue that its being used
12+
extensively in production for 15 years puts an empirical limit on the
13+
criticality of any "missing" feature. So while we welcome new features, those
14+
that don't break old APIs can be added in any release, so there are no "must
15+
have features" that are required to be completed for this release.
16+
17+
However, 2.x -> 3.0 is one of the rare opportunities for things that might
18+
break backward compatibility, i.e., that might require actual source code
19+
changes to software that calls OIIO. Since this happens only every 5 years or
20+
so, this means that for many such changes (including removing previously
21+
deprecated API calls), it is a matter of doing in now or waiting several
22+
years.
23+
24+
25+
26+
## Dependency modernization ([project](https://github.com/orgs/AcademySoftwareFoundation/projects/28))
27+
28+
We would like to pull forward a whole lot of other dependencies so that their
29+
minimums are somewhere in the "released 3-5 years ago" range. The full list of
30+
our dependencies [can be found
31+
here](https://github.com/AcademySoftwareFoundation/OpenImageIO/discussions/4151).
32+
33+
See the [Dependency proposal wiki page](https://github.com/AcademySoftwareFoundation/OpenImageIO/discussions/4151)
34+
35+
* [ ] Big required upgrades with potentially widespread impact on the code base
36+
- [ ] C++17 [#4155](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4155)
37+
- [ ] Python 3.7 [#4157](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4157)
38+
- [ ] OpenEXR/Imath 3.1 [#4156](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4156)
39+
40+
* [ ] Miscellaneous optional upgrades whose changes will be very localized
41+
42+
This isn't a complete list, nor do we need to do all of these, but the
43+
highest priorities are:
44+
45+
- [ ] CMake 3.18 (from 3.15). Or possibly newer if there's a good reason? (3.19 or 3.20 are also reasonable.)
46+
- [ ] OpenColorIO 2.0, or possibly 2.1 (from 1.1). Open for debate: should it be a required dependency rather than optional?
47+
- [ ] fmt 8.0 (from 7.0), which has many improvements.
48+
- [ ] GIFlib 5.0 (from 4.0), which adds thread safety.
49+
- [ ] libheif 1.11 (from 1.3), which supports many additional features of that format.
50+
- [ ] WebP 1.2 (from 0.6) which lets us use their exported CMake configs and retire FindWebP.cmake.
51+
- [ ] pybind11 2.6 or 2.7 (from 2.4).
52+
53+
54+
- [ ] [#4156](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4156) Eliminate the last few places where we use Boost and eliminate it as a dependency.
55+
56+
<br>
57+
58+
59+
## API Modernization
60+
61+
- [ ] [#4159](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4159) Using span and string_view instead of raw pointers
62+
63+
Scrub the APIs to find where we have API calls that take a pointer and size
64+
(or worse -- just a pointer and an assumption about the size), and instead
65+
use `span<T>` / `cspan<T>` for things that are like arrays, and
66+
`string_view` for things that are like strings.
67+
68+
- [ ] [#4160](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4160)
69+
Using named keyword/value lists more extensively in imagebufalgo.h
70+
71+
- [ ] Deprecate as much as possible of the old printf-style string formatting we use internally, instead using the fmt/std::format style everywhere. This includes changing Strutil::format to alias to Strutil::fmt::format (currently it aliases to Strutil::old::format, which uses printf style).
72+
73+
- [ ] Remove deprecated API elements
74+
75+
Hunt for things marked DEPRECATED and try to get rid of them where possible.
76+
If we can't remove them, at least make sure they are marked as
77+
`OIIO_DEPRECATED` (or `[[deprecated]]` in modern C++).
78+
79+
80+
## The rest
81+
82+
Other initiatives we hope to have completed by the time of this next
83+
major release:
84+
85+
- [ ] [#4164](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4164) Better color management
86+
87+
Regardless of OCIO availability, version, or contents of any configs, have universal support for the [canonical color spaces](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.Specification.md#color-spaces-and-color-management-systems) that seem to be the common consensus of ACES, MaterialX, and USD.
88+
- [ ] Preliminary Rust bindings for most of the OpenImageIO APIs.
89+
- [ ] Python wheel construction so `pip install openimageio` will be an easy way
90+
for users to install the whole banana.
91+
92+
If there is something you think should be on the roadmap for the next major
93+
release but is not, please open an issue or discussion to propose it, or
94+
bring it up at a TSC meeting, or on the mail list or Slack channel.
95+
96+
97+
## Parking
98+
99+
Here is where we will put things that definitely should be on the roadmap, but
100+
that need not be completed in time for the fall 2024 release of OIIO 3.0.
101+
102+
...

0 commit comments

Comments
 (0)