New Developer Onboarding

Hi…

It looks like there are already a couple of threads here this year about folks working towards trying to get Natron development environments up and running.

I’m a professional open source developer. My day job has me working on high performance network overlay products in golang:

(amongst others)

But I’m also a filmmaker and an artist. I’ve really been working on my VFX skills over the last year or so, and I’m desperately trying to find a compositor that can do the things I need. Natron seems like a good choice. I love that it’s open source. I love that it’s a great complement to what I’m already doing with Blender.

I’m a little concerned of the state of the development effort… there’s the big “maintainer wanted” sign on the main Natron site, and it seems like there are a decent number of bugs that I’ve run across in my usage of Natron that seem like the kind of thing that should be fairly easy to tackle for folks trying to ramp up onto Natron development. I’d love to knock out a bunch of low-hanging fruit.

I’ve got a lot going on in my world… but I could probably allocate some time to try and contribute to Natron.

To that end, I followed the instructions here:

…and I was able to get a Natron.exe built. Not quite sure how to assemble that into a working tree that I can execute out of (did not try to get the OFX plugins built yet, would just use binaries to start). Ideally, it’d be great if I were able to run Natron right out of the development tree… I’d like to start trying to dig into the internals and see if I can answer some of my own questions about what’s happening with some of the issues that I’m running into.

When you folks are working on Natron, how are you managing the build/test cycle? Are you building Natron in the tree and copying the binary to another location to test?

I did find the tools/jenkins tree, and it looks like there is another set of conflicting instructions and trails there. If we’re using Jenkins for automation, then I’d guess those scripts are probably more authoritative than the instructions in INSTALL_WINDOWS.md? Those docs are also obviously targeted at CI and automated installer builds, not so much at what a developer would want to have a functional Natron development environment.

If it were helpful at all, I’d certainly be willing to try and pull together a PR to straighten up some of the docs and help arrive at a single set of instructions to get a working Natron development environment. Would that be useful?

Do the developers here hang out on a Slack or a Discord server, or somewhere else where realtime communication is possible? I’d love to try and help out… maybe some realtime communication where I could work through issues as they come up would be useful?

Michael

4 Likes

I’m not involved in Natron at all, but I just want to say, welcome! This is a great introduction and I hope you find what you’re looking for in starting development for a great piece of software :smile:

2 Likes
2 Likes

Hi,

At the moment we are two developers/maintainers with help from the community, we work on Natron in our very limited spare time.

That would be great :slight_smile:

You should be able to just run Natron.exe as-is, remember to set
PYTHONHOME=/mingw64 before running.

I use Qt Creator for everything. Frédéric uses XCode.

The scripts in tools/jenkins are used to build the official binaries, note that we do not use the Jenkins service anymore, I build Natron for Windows on a dedicated machine using a clean install of Windows 8.1 Pro. Linux is built in docker (on CentOS6) and macOS is built in VBox if I’m not mistaken (Frédéric can correct me if I’m wrong).

I can also document the Windows stuff a bit better if needed, I’m a bit slack when it comes to documentation (will try to improve).

I’m available on the Discord server and our Facebook group.

2 Likes

Hey Michael! Here’s a link to the Discord :slight_smile:

1 Like

Am I a joke to you :v

Whoop, didn’t see you sent the link to the topic haha

1 Like

I would think that an area in need of focus would be getting Natron into a place where it’s easiest for new developers to ramp up to contribute. I completely understand that we’re talking about complicated image processing, and that there are a lot of complexities to the core of Natron… but I would think we’d want to demystify as much as possible the internals of the system, to give new contributors the best possible chance to be successful?

That was a useful tip. I ended up copying the Plugins and Resources trees from my installed copy of 2.3.15 into my Natron/App/ folder to get things working. I ended up needing Resources in addition to Plugins because Natron complained about missing OCIO configurations. Maybe there is a way to point Natron at Plugins and Resources folders to a different location through an environment variable or a command-line switch?

I wasn’t so much asking about the IDE… more about what I’m describing above… how are you guys setting up your filesystem structure so that you can run a development build without having to shuffle around Plugins and Resources and other supporting artifacts to make the build work? Ideally, I’d like to be able to make changes to the source, recompile, and run the build right from where it sits in order to have tight compile/test cycles.

Again, this might be an area where I can help. I’ve done a lot of C++ development, a lot of Qt development, and I’ve worked on cross-platform node-graph processing systems in other domains outside of image compositing. I’m also pretty good at cutting through cruft to simplify systems and code. I’m also a decent writer. Maybe it would make sense to ramp myself up on what exists today in Natron, and then help to try and explain the domain and internals in a way that new developers could be effective?

Otherwise, it’s just going to be you and a couple of other developers putting in an hour here and there? :slight_smile: Or, someone will come along and fork Natron. Or… they won’t and the world will just be left with commercial options?

It’s probably an ambitious pipe dream, but I’d really like to see if there’s a way that we can position what we’ve got with Natron 2 in such a place that we could start talking with the greater development community about where we could go for a Natron 3 (or 4… I believe there may be a non-viable “3” version already).

I know you guys have been working on this for a long time. That’s part of why it might be good to get some fresh blood involved. I’ve been a professional software developer for over 25 years… I definitely understand what it means to have worked on a project for a long time, and have a bit of burnout. It can help to start handing it over to new people.

I avoid Facebook with a seething passion… but I’ve signed up on the Discord. Maybe you could mark me as a developer there?

I do have a question for you… I’ve got a working local Natron build, but it doesn’t seem like the fr.inria.built-in.Read node is working properly. I keep getting the message Error while creating node fr.inria.built-in.Read: Could not find a decoder to read tif file format. I tried both tif and exr with the same result. Any advice there?

FWIW, I’m on the RB-2.3 branch:

Michael@zero Fri Sep 25 12:40:05 ~/Sandbox/Natron
$ git branch
* RB-2.3

Thanks! Looking forward to seeing how I might be able to contribute!

4 Likes

I’m the admin of the Discord server… I’ve already assigned you a Developer (green color) role there so the Developer Channels should be accessible to you now.

1 Like

Awesome! Thank you so much.

1 Like

I ended up putting the bin folder from my installed copy of Natron 2.3.15 last in my PATH, and this got it working. Looks like it probably was just missing some DLLs for TIFF and EXR handling and such.

I believe I’ve got a viable development environment. Will do some compositing work with it and see what else I run into.

Once I’ve validated I’ve got a viable development environment for the core app, I will start looking at the openfx builds.

1 Like