And unfortunately it has become the norm in open-source to push out shiny-looking projects with pretty logos and UX but shoddy underlying technology and deceptive/overstated claims (looking at you Tauri).
Thing thing uses RDP for communication which was designed for remotely administering servers over low speed networks.
VirtualBox in contrast integrates at the driver level, and allows you to share the underlying GPU buffers, giving you a native experience that works for things like games or heavy apps. It integrates the Linux filesystem on a driver level as well.
Nit: RDP’s roots are more in multi-user windows like Citrix Metaframe than in remote administration. I’ve found it to perform better than the alternatives (remote X11, VNC, Chrome Remote Desktop) for remote GUIs. Nomachine is the only alternative that was close to its performance.
(And before somebody jumps in to correct me - in ancient times X11 performed quite well over the network but modern Linux GUI apps are no longer designed to minimise X11 network traffic)
Things made for game streaming will be more responsive at the tradeoff of massive bandwidth usage in comparison. RDP can work over slow connections reasonably well.
Massive bandwidth usage and video compression artifacts. It's fine for games and media consumption, but may be problematic for office work.
Remote desktop protocols prefer lossless compression to achieve pixel-perfect rendering, at the expense of framerate/latency.
RDP is unique in that it's not just streaming, but integrates with Windows' GUI stack to actually offload compositing to the client. This however works less and less well with web and Electron apps which do not use native OS widgets.
Agreed that RDP is very well designed. And we don't have an equivalent in Linux or Mac world. All competing protocols are a compromise. I am particularly impressed with good multi-monitor support in RDP. Competitions has had more than a decade to get it right. But I am unaware of any that does.
If I connect remotely from a 2 monitor setup, disconnect and re-connect from my laptop with just a single display, it all magically works. Everything readjusts automatically. I don't know of any other remote desktop protocol/tool that does this so well.
Windows implementation of RDP is actually very good. You get a degree of responsiveness that is unachievable with neither Linux RDP implementation or any other product (maybe barring Parsec, that also doesn’t allow for Linux hosts).
I know that RDP doesn’t work for gaming, but for anything else (even for CAD), it’s the best thing barring direct access to the machine (or, Parsec).
Yeah, but if the Windows app essentially draws into a GPU texture (which is mapped to a dmabuf buffer in the Linux kernel), you can just grab that texture and send it to the compositor.
The overhead difference is like memcpy vs a very fast SQL database.
I remember booting Crysis with that. I wouldn't say it was playable, but the fact it managed to actually launch was impressive. Maybe with modern hardware & bandwidths it would actually be.
Why don't they just write a thin layer that interfaces Windows library calls to native Linux calls, possibly with a thin wrapper to shim it where nothing else quite fits? You could re-implement maybe some of the Windows libs as a "clean room project", given the functional description, that then hands off to an equivalent in Linux.
There's probably a cool and snappy acroynm you could use, like Virtual Interface (with nearly) No Overheard, or "Vino".
Not OP, but I recall Tauri greatly overstating their memory usage claims. It is ultimately a browser running your "app", but just because it's not bundled with your app, doesn't make it consume any lesser RAM. And they even admitted that their benchmarks were wrong[1].
A lot of claims were also made about how Tauri is magically more performant than Electron apps and feels like a native app, but not only is this not true, on some platforms like Linux, Tauri apps are actually slower than Electron because the system webview it uses (generally WebKitGTK) is often slower and less optimised than the Chromium build that Electron ships with[2].
There's a bunch more claims due to it being "Rust" and all the memes that comes with that territory, but all that is basically irrelevant since your "app" is basically shitty javascript in the end. It's like putting lipstick and dressing up a pig, doesn't change the fact that it's still a pig.
- All the work is done in my high performance backend, where I joyfully optimise my hot loops to the assembly level. The web view is a thin layer on top.
- HTML and CSS is a joy to work with in comparison to many UI toolkits. LLMs are better at supporting a web stack.
- The UI zooms/scales, and is accessible with screen readers (looking at you, imgui).
- Cross platform with low effort.
IMO you have to be extremely careful not to pull in a whole frontend stack. Stay as vanilla as possible, maybe alpine.js or tailwind, and I've got hot reload set up so the developer productivity loop is tight when editing the view.
Mostly Tauri claimed their main advantage was smaller app sizes since it's using the native WebView. What they didn't say is how a bottomless pit it is to try standardizing rendering on X different webviews, multiplied by X different webview versions (outdated, not updated systems) ; so now they have pivoted to shipping their own build-in browser ; Competition in open-space is okay but it shouldn't be made by only pushing its perceived advantages while withholding the systemic disadvantages.
Well yeah. The goal for most of these people is to pad a portfolio so they can either get or remain gainfully employed. We are in the performative software era. It's not about data structures or algorithms anymore, it's all about GitHub stars.
Thing thing uses RDP for communication which was designed for remotely administering servers over low speed networks.
VirtualBox in contrast integrates at the driver level, and allows you to share the underlying GPU buffers, giving you a native experience that works for things like games or heavy apps. It integrates the Linux filesystem on a driver level as well.