Open source
Open Negative Initiative is free and open source, under GPL-3.0. The code is written in a public repository, the source of every version is published with it, and this site explains how the app works, down to the research behind each stage.
Where the source is.
In a public repository, and beside the downloads of every version. The code is written in the open on GitHub, and each release carries its complete source as one archive, named after the version.
In the working repository. open-negative-initiative-rs on GitHub is where the app is written, day to day, with the history of every change.
In the latest release. The latest release has it beside the Mac and Windows downloads. Take the file with -source in its name.
And in every earlier one. Every release keeps its own, and the changelog lists them with their notes.
The repository or the archive?
The repository moves every day, work in progress included. The archive is exactly what one version was built from: take it to read or rebuild the version you run.
What about the “Source code (zip)” GitHub adds?
It archives the release repository, which holds the builds and the update feeds, not the app's code. The app's source is the file named OpenNegative-<version>-source.zip.
How it works, explained in the open.
The code is half of it; why it does what it does is written here. Nothing the app does to your negative depends on a secret.
What the licence gives you.
The rights come with the download. GPL-3.0 covers the code, for anyone who has the app.
Use it for anything. Your own rolls or paid work, with no account and no trial limit.
Read it and change it. The source of the version you run is attached to it, so the code you read is the code you run.
Share it, changed or not. Under the same licence, GPL-3.0, with its source. A fork needs nobody's permission.
Building it.
A Rust workspace, built with Cargo. The published versions are built this way on a Mac and on Windows.
What do I need?
The stable Rust toolchain, and the C and C++ compiler of your system's developer tools: LibRaw, which decodes camera RAW files, is in the source and compiles with the app.
The repository's README has the rest: the workspace, the build profiles and the checks.
Which command?
cargo build --release -p oni-app --bin oni, from the root of the repository or of the archive. The app lands intarget/release/oni, or oni.exe on Windows.
The published builds also set ONI_VERSION, the version the app names, and ONI_BUILD, the number its update check compares.
How do I run the checks?
cargo test --release --workspace runs every check. The ones that need RAW files read them fromONI_RAW_DIR, and say they are skipped when it is not set.
Does it build on Linux?
The checks run there, not the app: its dialogs, its double-click interval and its Trash are the Mac's and Windows' own. Nothing promises a build anywhere else than the two systems the app ships for.
Code from others.
What the app is built on, and under which licence. Every other Rust crate is named, with its version, in the archive's Cargo.lock.
| Component | What it does | Licence |
|---|---|---|
| wgpu | Runs the image pipeline on your graphics card, Metal on a Mac and DirectX 12 on Windows, with kernels this project writes itself. | Permissive |
| Slint | Draws the interface; its renderer, femtovg, travels patched in the source. | GPL-3.0 (femtovg: permissive) |
| LibRaw | Decodes camera RAW files, compiled from its own source inside the archive. | LGPL-2.1 or CDDL-1.0 |
| Trinil | The icons. | Permissive, its licence in the source |
| Inter, Enriqueta | The typefaces of the app and of this site. | SIL Open Font License |
| spektrafilm | By Andrea Volpato: its per-layer dye spectra are what the five dye separation matrices derive from. | CC BY-SA 4.0 |
Is any of it taken from another converter?
No. darktable's negadoctor is the best public reference on the physics of C-41 inversion, and it was read as one: no code is derived from it, nor from any other negative converter.
Reporting something.
Bugs, decoding problems and the files that reproduce them help most. The issue list is public.
From the app, with no account. Press FEEDBACKS in the bar: your message and the app's version become a public issue.
With your file, on GitHub. Open an issue with the RAW file attached, which needs a free account. Reading the list does not.
Questions.
About the code you can read. And what you may do with it.
Where is the development history?
In the public working repository, open-negative-initiative-rs on GitHub, with every change since the Rust rewrite began. Each release also publishes the complete source it was built from, and the versions up to 1.3.1, the earlier Swift app, carry theirs the same way.
Can I contribute?
Bug reports and the RAW files that reproduce them help most, through the FEEDBACKS key in the app or the issue list. The code is public, and a fork under the same licence needs nobody's permission.
If I fork it, can I keep the name and the icon?
The licence covers the code. The name and the application icon are not code and do not travel with it, so a fork takes a name and a mark of its own.
Convert your first roll tonight.
Add your folder, prepare the roll once, export. Free, and nothing else to install.
- Mac
- macOS 13 or later on Apple Silicon or Intel
- Windows
- Windows 10 or 11 (64-bit)

Snow night. Kodak Gold, converted in Open Negative Initiative.