This has been on my mind for a while, but recent discussions prodded me to throw the idea out there to see if it sparks anything.
If I were developing a new raw processor (how I wish I had the time!), I would try to implement a plugin architecture. Basically, a plugin takes as input image data (in some format, encoding, color space, etc) and a mask, and it outputs a new set of image data.
In addition, plugins could be written in different languages (Python, Julia, Rust, etc); this allows for quick testing of new ideas and opens up development to people who donât know C++.
Benefits:
- Anyone can develop a plugin and publish it. Thereâs no need to decide which ones go into the canonical set of modules of any given program.
- Knowledgeable people can still review and recommend sets of plugins and workflows.
- Photographers pick and choose the best set of plugins to develop a given picture.
- There would be no need, for example, for Carlo to re-implement sharpening or noise reduction in Filmulator â in fact, Filmulator could be just a set of plugins that are compatible with already existing plugins. The same for capture sharpening, etc.
- I think this approach would lead to a large and vibrant ecosystem of plugins and would result in much better tools. New ideas could be easily and quickly tested, etc.
- Last but not least, this would help breaking the monolithic approach necessary for the current generation of raw developers, by making it possible to separate the UI from the processing.
Of course the challenges are not trivial. Without writing a single line of code I can see:
- Developing the specification for the plugin input and output formats will require work and experimentation.
- Sometimes processing is not a linear, independent sequence of steps (e.g. distortion correction requires the raw data), potentially leading to âhackyâ cross-plugin coupling.
- Each plugin must also be able to specify its user interface somehow.
- How to specify masks?
While difficult, I think all of these challenges have clean technical solutions.
In this utopian future, I see UI developers working on amazing, fast interfaces that integrate any number of plugins, which each photographer picks and chooses according to their needs and preferences. Thereâs plenty of room for different approaches to coexist. People implement new and innovative plugins all the time and the community puts them to the test.
This is just a glimpse of an idea; I hope it inspires someone. If not, whenever I find myself less busy than I am now, I might follow in Glennâs footsteps and implement it myselfâŚ