LXD/Incus compatibility

Yeah, we currently only support switching from LXD 5.16 or earlier, LXD LTS (5.0.x) being the most likely for production environments. LXD 5.17 can safely downgrade to 5.16, so that’s one way to switch to Incus.

Note that this will be changing as we get to pick up later changes from LXD into Incus.
We’re looking at supporting at least up to LXD 5.18 at this point.

Image format should be fine as they are pretty simple and the Incus team operates the main image server used by LXD too, so through that, we effectively control the image format and so can somewhat confidently say that LXD will keep compatible with Incus images.

This one is because of HTTP headers which differ between the two projects.
The client could probably be made to set both the LXD and Incus headers to accommodate that, though we obviously can’t guarantee that there won’t be more complex API breakages down the line.

For the lxd-to-incus migration tool, we import both the incus and lxd clients in the same binary, specifically so we don’t rely on the incus client to talk to LXD or vice-versa.

No, you should definitely not be doing that.
The two command line tools have diverged significantly already and will likely diverge more in the future. incus snapshot, incus admin, incus config trust add and incus cluster add behave completely differently from LXD’s version.