Skip to content

Comment on Show HN: Linux server management over SSH – written in Rust and Tauriparent

Comments

The choice of Tauri for a Linux app using AppImage is a dead giveaway they have no clue what they are doing.

Can you expand on that? The point of an appimage is so you don't have any dependencies or linking errors. Rust can still link to libraries, so that doesn't seem to be a weird pattern to me.

Electron appimage would be weird though since it does all its bundling by itself

Sure. Tauri tries to claim its lighter than Electron by not including a full web browser in its runtime and instead using the system renderer. But Linux doesn't have a universal system renderer like Windows and Mac does so it uses Webkit2Gtk on Linux. Libwebkit is an absolute mess of a library. It hardcodes the path to /usr which doesn't work in AppImages resulting in this[1] hack of a fix that replaces `/usr` with `././`. This problem isn't unique to Tauri as I have seen apps using Wails copy this same trick to package their AppImages.

Now the problem with libwebkit goes even deeper because Tauri uses libwebkit2gtk-4.1 after moving away from 4.0. When you build an AppImage you want to do it on the oldest possible distro you want to support because it will be built against GLIBC of that distro release. Due to how most devs release apps now, that means they compile against an Ubuntu LTS release because Ubuntu is the only option with Github Actions[2]. The first LTS version of Ubuntu with 4.1 is 22.04, so now by default you can expect every Tauri (and also probably Wails) AppImage to be built against GLIBC 2.36. But theres a bug in the interaction of older libwebkit2gtk and newer freetype that happens when you use an AppImage built on Ubuntu 22.04 on a newer distro. It crashes when displaying an emoji character. Freetype is one of the libraries you cannot include in an AppImage but you must include libwebkit2gtk, the solution is to use a newer libwebkit2gtk but thats only available in Ubuntu 24.04 and bumps the GLIBC to 2.39. Do you see how much of a mess this usage of libwebkit2gtk in an AppImage turns out to be.

And moving beyond that, the Tauri devs has an absolute disdain for the AppImage format and treat it as a 2nd class platform as you can see in this[3] PR where AppImage developers tell the Tauri devs to update to newer tools instead of mirroring the old obsolete broken tool that was taken down. This also meant that AppImages created by Tauri's build tools depended on libfuse2 being installed on the system while newer AppImages using the type2-runtime do not anymore. I believe Tauri has finally moved forward and stopped doing this recently. Electon is no better on this and electron-builder uses an outdated hardcoded tool that makes bad AppImages that depend on libfuse2 too.

I do like the AppImage format, but I do not believe anything that uses libwebkit2gtk-4.1 is fit to be distributed as an AppImage at this time. This means that Tauri (and by extension probably Wails, and some of these other NOT Electron frameworks) are not fit to be truly called cross platform. It does look like Tauri was making progress on Flatpak documentation so app developers could have a second cross distro packaging method. Ideally I think any framework that wants to label itself as cross platform should make it easy to package both AppImage and Flatpak and not run into the above libwebkit2gtk issues.

[1]<https://github.com/tauri-apps/tauri/blob/ad0b98a2329e369364e...>

[2]This is not entirely true, you can use a docker image inside the Github Actions Ubuntu VM or a sysroot but that is beyond even most expereinced app devs to setup.

[3]<https://github.com/tauri-apps/tauri/pull/13863>

Thank you for the detailed reply. I just recently started playing with Tauri, so I was not aware. I also heard that gtkwebview is slow as dirt. Sounds like verso support can't come quick enough.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.