Upcoming switch of Windows installation to pixi/conda

Hello ROS 2 Windows users!

TL;DR - You will have to change how you install ROS 2 on Windows, for Rolling, Jazzy, and Humble. The good news is that it should be much simpler than before.

What are we doing?

We are changing how the dependencies necessary to build and run ROS 2 are installed on Windows. In particular, we are switching to using pixi to install and manage our dependencies. This has several advantages:

  • The installation process is significantly simplified. Instead of dozens of steps to install dependencies, it is just a couple of commands.
  • It is much easier to update dependencies, so in the future we shouldn’t have long periods of time stuck on obsolete versions (I’m looking at you, Python 3.8).
  • The dependencies are installed in individual workspaces, with no “global” installation. Thus it is easy to work on multiple ROS distributions on the same machine.

Who will be impacted?

All users of ROS 2 on Windows will be impacted by this change. If you don’t use ROS 2 on Windows, nothing will change for you.

Unlike most changes we do, this also applies to our stable Humble and Jazzy users. While we try to not make big changes for stable distributions, in this case it would be too much work to maintain CI and packaging jobs for the stable distributions, the installation instructions for them would still be complicated, and they would still be using very outdated dependencies.

How are we doing this?

There is a series of pull requests that implement this. The first set added a pixi.toml file for each of the distributions:

There are then two follow-up PRs, one to switch CI over to using these dependencies, and one to update the end-user instructions:

Once those two PRs are merged, the next release of the respective distributions (Humble, Jazzy, and eventually Kilted) will only work properly using the new dependency system.

Questions?

If you have questions or comments about this change, please leave them in this thread and we’ll work through them with you.

16 Likes

Added to all what @clalancette has explained in the post above, I would like also to add that for the ROS 2 Windows platform we are using the great conda-forge packages as the only source to get the binaries for all the ROS 2 Windows CI dependencies.

I also would like to thanks to the Robostack project, @traversaro, @Tobias_Fischer, @wolfv, etc. for the help and work on the conda-forge packages over the last years.

9 Likes

This is awesome. Thank you for this.

I was overexcited and already tried out the instructions only to realize that the latest release zip wasn’t built with python 3.12 yet. I’ll wait patiently until the nex release is available but if you need any testing help let me know.

Gazebo for windows have been using Conda-forge as well. Is the plan for it to also use pixi so we can have a toml file to rule them all?

2 Likes

I am not a windows user but would love to be able to use pixi more as part of my ROS workflows on Linux. Do these changes mean there will be more Ros packages available via conda-forge/robostack for linux as well?

Thanks

1 Like

Not at the moment, no. This will only change the installation of the ROS 2 core dependencies to using pixi/conda.

That said, this definitely opens the door to a more close collaboration between the ROS 2 project and the folks at Robostack, who have been rebuilding ROS 2 packages for a few years now.

4 Likes

I’d just like to share my appreciation for the efforts here. I went through the instructions to build ROS 2 rolling from source on Windows and had a working environment in under an hour. My windows computer at work is heavily locked down. I don’t have administrator access, and this has made ROS development exceedingly difficult to set up in the past.

Pixi eliminates all those problems I had before. I was able to reproduce a windows CI error I saw on the build farm locally. Being able to compile ROS applications natively on Windows with minimal setup now is such a blessing.

6 Likes