Classic confinement request for foxglove-studio

  • name: foxglove-studio
  • description: Integrated visualization and diagnosis tool for robotics. Foxglove helps robotics teams explore, collaborate on, and make sense of their robots’ data. It provides 3D visualization, plots, image panels, and diagnostic tools for ROS 1, ROS 2, and custom robotics data formats.
  • snapcraft: (electron-builder)
  • upstream: (closed source)
  • upstream-relation: upstream maintainer (Foxglove Technologies Inc)
  • supported-category: IDEs / debug tools
  • reasoning:

We have been publishing foxglove-studio on the Snap Store with strict confinement since 2021 and have iteratively attempted to resolve hardware acceleration and access issues through proper interfaces. Despite these efforts, performance remains significantly degraded compared to our .deb package, leading us to consider deprecating the snap entirely. Classic confinement would allow us to provide a comparable experience to our other Linux distribution methods.

Hardware Acceleration & GPU Driver Access

Foxglove is a GPU-intensive / WebGL 3D visualization application. We have implemented the recommended strict-confinement GPU workarounds:

Despite these measures and a fix released in v2.5.0 (May 2024), we continue to experience performance issues with the snap package compared to our .deb distribution. The sandboxing overhead and indirect GPU driver access in strict confinement appears to cause degraded rendering performance for our WebGL-based 3D panels.

Robotics Hardware Access

Foxglove connects to robotics hardware for teleoperation and visualization:

  • Joysticks/gamepads: We added the joystick plug and hardware-observe interface for gamepad support
  • Cameras: We added the camera plug for webcam access in extension panels

While these plugs enable basic functionality, the strict confinement model requires users to manually connect interfaces, which creates friction compared to the .deb package experience.

Precedent

Similar developer/visualization tools have been granted classic confinement:

  • VS Code - IDE
  • Blender - 3D visualization

Foxglove serves an equivalent role for robotics developers as these tools serve for software developers and 3D artists.

  • I understand that strict confinement is generally preferred over classic.
  • I’ve tried the existing interfaces to make the snap work under strict confinement.

This request has been added to the queue for review by the @reviewers team.

@abeato do you think the work related to the various *-driver-libs interfaces may be helpful in this case?

If there are some other settings we should try, please let me know. I’m not following snap development closely.

If not, switching to classic confinement is really our only remaining option, otherwise we are just going to have to deprecate the snap since it’s currently a performance footgun for our users.