Development Environment

Hey there!

We’re wanting to understand how to properly setup a development environment for all sides of ayon, including docker, frontend, backend, api, addons etc

We’d like to start being able to debug code properly with breakpoints.

We’ve noticed that not every exception gives us a legible stacktrace in the event logs server side and we’d also like to move away from making blind changes to addons to see if we can ‘fix’ an issue by bumping the version, uploading to the website and then restarting it

So far we’re trying to get docker with remote debug working with not much luck.

Hello,

Ayon consists of several components:

  • Server Layer
    • Frontend
    • Backend
  • Pipeline Layer
    • Launcher
    • Addons
    • Pyblish plugins

I believe that each element should have its own set of specialized debugging tools, each of which require some development environment setup.

I’d like to summon @iLLiCiT , @martin.wacker , @Innders and @BigRoy
Could you guys offer some insights into the development environments and debugging tools you utilize ?

Now, let me share what I do on my side,

My Development Environment:

For debugging, I rely on manual methods such as logging and test runs rather than using specific debugger tools.

Additionally, I use code style tools like Ruff and Codespell. These tools are integrated into pre-commit Git hooks in Ynput’s repos. I also have them installed as extensions in my IDE (VSCode).

While I’m not entirely sure about debugging addons, I do have some knowledge on debugging Pyblish plugins. I’ve shared my insights in the Pyblish Plugins Debugging Guide, which also explains why debuggers cannot be used directly with Pyblish plugins.

1 Like

I’ve done this for host integrations a few time - by from the host, call Python code that “opens it up” for a remote debugger, and then connect to it.

I use Pycharm and for example the logic here is very close to what I’ve used to run the debugger in Maya, Houdini, etc. whilst running in dev mode (so it runs of the code I also have open in my IDE) This works surprisingly well for any of the client side work (aka the “pipeline layer” in Mustafa’s post).

For the docker, server and backend I’m not sure - that’d be up for @martin.wacker to maybe provide some pointers on and I’m clueless.

1 Like