Hello Snapcraft reviewers and Linux community,
Thank you for taking the time to review this request. We greatly respect the work of the Snapcraft, snapd and Linux communities and appreciate everyone who helps make Linux systems more capable, secure and accessible.
-
name: msg-we-ua
-
description: MSG.WE.UA is a proprietary Flutter Linux desktop messenger by WE.UA. It embeds WebKitGTK 4.1 and provides encrypted messaging, file transfers, WebRTC audio/video calls, camera and microphone access, and OAuth/deep-link integration.
-
snapcraft: PRIVATE
-
upstream: PRIVATE
-
upstream-relation: Original developer and publisher of the WE.UA platform.
-
supported-category: none of the listed categories exactly match this use case; requesting review under the criterion that the snap requires access to resources and integration points not currently supported by snapd under strict confinement
-
reasoning: WebRTC audio and video calls are a mandatory part of MSG.WE.UA.
The WebKitGTK runtime shipped by the target Ubuntu distribution does not provide a functional WebRTC implementation for this application. In our tested environment, the stock runtime did not expose a usable RTCPeerConnection/WebRTC pipeline.
The application therefore requires a custom WebKitGTK 2.52.3 build compiled with:
ENABLE_WEB_RTC=1 USE_GSTREAMER_WEBRTC=1The snap ships this custom WebKitGTK runtime together with the matching JavaScriptCore libraries and GStreamer RTP/WebRTC components. This is not a runtime preference or an optional feature: without this exact WebKitGTK backend, the application’s mandatory audio/video calling functionality is not available.
The custom WebKitGTK WebProcess and NetworkProcess must operate together with the user’s PipeWire/V4L2/ALSA media stack and GStreamer/libnice ICE transport. With strict confinement and the available interfaces, the same WebKitGTK multi-process media path did not provide a functional release: the WebKit runtime/media subprocesses and desktop portal operations were blocked or failed, and WebRTC calls could not reliably establish or maintain media transport.
This request is therefore for the required WebKitGTK/WebRTC runtime integration, not for arbitrary filesystem access, root privileges, host browser discovery, or Chromium sandbox bypassing.
The application runs as a regular desktop user and has no privileged daemon. Its declared interfaces are limited to desktop, network, audio, camera, graphics, theme, and session integration.
We did consider using Chromium or a Chromium-based embedding solution. However, this Flutter project already shares one native WebView and bridge architecture across Android, iOS, macOS and Windows. A Chromium/CEF-based Linux implementation would require a separate Linux-specific backend and a substantial rewrite of the platform integration, including permissions, WebRTC media handling, OAuth callbacks, external links, downloads, persistent storage and window lifecycle management. This would make the project significantly harder to maintain and support consistently over time.
For this reason, the Linux release uses WebKitGTK, with a custom WebKitGTK build that provides the WebRTC functionality required by the application.
I understand that strict confinement is generally preferred over classic.
I’ve tried the existing interfaces to make the snap to work under strict confinement.