No Flutter on Linux desktop(news.itsfoss.com) |
No Flutter on Linux desktop(news.itsfoss.com) |
I lost years waiting to have a decent way to develop desktop applications for Linux. After 20 years no one could get their shit together and both Mac and Windows ( yes, even Windows ) always had vastly superior desktop toolkits AND sane ways to package and deliver them to the mere mortals. Even when Microsoft seemed to fuck up everything they touched, Linux couldn't get their shit together.
There are many reasons for this and the other 2 had money to throw at this like it was free, BUT the Linux community never proved they can deliver a product, which in this case the customers were developers that have a job to do. A lot of lectures, morals and programing tricks, but never a product to be used by others. ( I'm talking exclusively about GUI toolkits here )
It's simply not in their nature and it's OK, but don't cry about when some evil conglomerate rolls up in town and gets all the action.
What you call Linux community is actually several independent communities that build software for themselves and for others that fit in their community goals and the operation system that people usually call Linux is not a product but just a collection of independent softwares packaged by other independent communities to fit their goals and needs.
And these independent communities already proved that they are really capable to build and deliver high quality software that meets their goals and you can see their results in the most recent releases of Gnome, Plasma, Linux Mint and many many others.
If you need any software to fit your needs you should just find a community that has the same needs that you or find a company that sells what you need.
Or you can build your own sane toolkit and share it with your own community too.
The other problem is that there isn't THE Linux desktop what makes building GUIs for Linux hard. Yes, I know, it is the year of the Linux desktop, but I fear it will not work out this time.
Parent was saying that the Linux model has failed spectacularly to deliver the software they needed.
Possibly there are categories of software illsuited for development by donated time from loosely coordinated volunteers.
from what I know, Flutter is still unusable on iOS because they haven't found a way to fix the extremely janky first load (after install, after upgrade, after reboot) animations.
This problem appeared more than a year ago when Flutter made the switch from OpenGL to Metal on iOS.
Flutter is actively working on the bug you're referring to, and I think you're valid in bringing this critique of the jankyness of animations on first run, but the large number of Flutter apps currently deployed clearly proves it is very usable on iOS. You have to workaround that jank, which is extremely frustrating, but I wouldn't write off the entire platform for it. It will be fixed.
Additionally, Qt has bindings most major languages. I have found the Python bindings (PyQt) to be quite good.
ok but also don't cry if they drop support for it after 18 months and your app dies.
Furthermore, Google is using Flutter internally and some of their apps are getting rewrites in it ( like Google Pay); it's unlikely they'll drop it.
Many people would disagree with you.
Do folks have some examples of non-native iOS platforms that do have flawless no-lag 120Hz display?
As if desktop OSes aren't full of "shoehorned libs" and non-native rendering engines among other cruft...right down to standard i/o interfaces that all processes use, which are based on the idea of a Teletypewriter.
> I lost years waiting to have a decent way to develop desktop applications for Linux. After 20 years no one could get their shit together...
That's funny because after using an Arch based desktop system (Manjaro) for a few years, I'd never go back to the Windows/Mac way of doing things on my main workstations. Imagine having to search the web to find a download page and/or get walled into someone's idea of a garden in order to find apps? Yuck!
And what apps exactly am I missing? Photoshop? Because when I moved to Linux every app I needed from Windows or its equivalent was already here - Chrome, VS Code, Beyond Compare, Android Studio, Gimp, Pinta, LibreOffice, Postman, Thunderbird, Slack, Spotify, Discord, OBS, FreeRDP, VLC Media Player and the list goes on... Barrier, a decent Notepad replacement (Mousepad - which is better than Notepad), MySQL workbench, Azure Data Studio (for SQL Server), etc. etc. etc... All that and my OS stopped getting in the way of me doing things like Docker, Node/NPM, bash scripts and many other such things that are bolted on and poorly supported in Windows/Mac.
I guess when you argue with people who think the Mac desktop toolkit is any good...well I don't expect to get anywhere here. I mean, the fact that you pretty much have to use Objective-C or Swift to even interface with them is already a huge detriment. Once you get past that you only have to deal with the normal missing features and anti-developer stuff that Apple throws at you. I'll take Win32 and C# any day over that garbage, but beyond that - I love HTML for desktop apps. The rendering engine behind Chromium is the most advanced in the world and it can do things that desktop toolkits couldn't dream of offering.
> BUT the Linux community never proved they can deliver a product.
The only reason a quarter of developers are on a Mac is because Linux laptop drivers aren't always great. It has absolutely nothing to do with GUI toolkits or any perceived lack of apps. It's so easy to build apps for every platform now with Electron - the vast majority of people don't care what their desktop apps are built on and that's why Electron is pretty much eating the world, not Flutter.
> It's simply not in their nature and it's OK, but don't cry about when some evil conglomerate rolls up in town and gets all the action.
Yeah, I'm sure people will complain that there's a new way to build apps especially if it's perceived as "better" than Electron (which I doubt it will be), but I guess we'll see. Currently I there aren't any popular Flutter apps and none of the desktop software that I see people use at work were built with Flutter.
>Flutter doesn’t make use of the standardized Qt and GTK widgets. This means that Flutter apps look out-of-place on Linux, especially on GTK-based desktops
the point aside that this ship sailed a long time ago when Electron apps gained in popularity and people don't really have this expectation anyway (Qt and GTK apps also don't look the same), Linux isn't macOS. There's never been some sort of informal requirement that applications need to speak the same design language set by one single standard or organisation.
Linux users use software built at Google, Facebook, by open-source communities, standalone developers or whoever else, even proprietary software if they want to and Flutter is open-source for what it's worth anyway.
Isn't it a bit ironic to call this out as a downside when Qt and GTK apps generally look far out of place on operating systems that aren't Linux? It's really rich to say "this software isn't welcome because it feels out of place" when the preferred alternative feels far out of place (in the same way!) for multiple orders of magnitude more desktop computer users.
This is not a great argument when talking about a Free Software project. Flutter is 3-clause BSD licensed, so even if Google abandons it, it's not like it suddenly traps all the applications built on top of it. If the toolkit code was unusually difficult to maintain, then sure, you shouldn't use it.
The article seems to hint that Google might open-core Flutter like they did with Android, but I see no evidence for this. Hell, even Chrome, technically an open-core project, is more or less entirely usable as Chromium (the Free part of Chrome) and projects exist specifically to remove all remaining Google services and telemetry (e.g. Ungoogled Chromium). If Google made Flutter practically unusable without other proprietary components, then yes, Google abandoning it does become a risk of using Flutter. However, I don't believe this to be the case.
Applications looking out-of-place on Linux is not something Google invented. Linux does not have a common look-and-feel, nor is there a single point for theming to occur. Even concepts like the window decoration, once exclusively the property of reparenting window managers, have been totally encroached upon by the window toolkit. So adding Yet Another Toolkit to Linux app development is not any more of a harm than the current situation already may be.
It has become increasingly difficult to maintain forks of Chromium due to the sheer complexity and build time. Merging patches and testing them for each new release is a huge bitch due to the time required to compile (1h40 mins on a 3700X). You can't do iterative development, since most changes require recompiling from scratch, and forget about regression testing. It's only really feasible to do serious development on Chromium with either the Google-only tools, like Goma, or building/renting your own expensive build farm.
Huh, did they break something to cause this? I see no reason why this would be true for most things people want to work on (certainly if you edit files in "base" you are going to have a bad time...).
If, as a developer, I build cross-platform applications that deploy across desktop and mobile platforms, I want sane tooling. Dart and Flutter are a step in the right direction, as is Go, another language birthed at Google.
What exactly is enough? I think this author clearly does not understand what problems Flutter is trying to solve or why someone might want to use it
> Additionally, Google doesn’t have a particularly good track record when it comes to maintaining projects. Just take a look at Google Glass and Play Music
Those are not projects, those are services. This is open source. If needed it can be forked or moved to different owners. Golang? Kubernetes anyone? Both are huge and started at Google
> Ever since the creation of Linux in 1991, major corporations have mostly left it alone.
Nonsense. Corps make a huge part of commits to the kennel and other projects
Unclear what world this author lives in
I am not a UI developer, but a year ago I did evaluate Flutter and SwiftUI. I liked both, but it was so much easier using Flutter, and cross platform is not much more work.
I don't want Flutter apps because it's highly unlikely Flutter apps will visually integrate with my desktop. I can pick GTK and KDE themes, and a good number of apps will fit the look I have picked, but with Flutter, the power & control seems to lie in the app designers hands, not the users.
So I have arguments against Flutter. I also don't like this article's arguments against Flutter. They seem shallow, petty, emotional, & highly non-technical. They seem like pointless griping. I worry the article is giving more credence to Flutter with it's shallow damning than it is dissuading anyone.
They argue that Linux doesn't need another toolkit. This status-quo-ism feels very pro-Cathedral-ism, anti-Bazaar-ism. Free software should be hunting for better ways to do things. There being existing ways to do things is not a good argument against trying for other.
The author argues Google does not have a good reputation maintaining software. They cite Google Glass and Google Play Music as examples. There's a lot of examples of Google ending support for things, true. Glass, I believe, is still sold to enterprises, and had a new hardware edition come out 2 years ago. This is hardly not supported. Google Play Music was migrated to a newer alternative application, and as a user of both, it's been, mostly, pretty decent a transition. In terms of the open source libraries they release on Github, generally they seem to be well supported & long lived. Google Guava has had it's 30th release. There's a vast number of projects that have been well supported for a really long time.
There are lots of other options, almost too many: Electron apps are good for web developers but they are also inefficient and use more memory than I think is necessary. Pascal and Lazarus seems useful but I don't really want to learn Pascal as it's not a popular language now. Vala could have been good but it seems to have lost momentum. There's Swift but it still seems to be mostly an IOS thing. There are also wxwidgets, gtk, fltk, ... None seem to really convince me that they make gui development straight forward.
Many other languages never really have the manpower to develop gui libraries or even polish their bindings to libraries like Qt and GTK, or there'll be 3 or 4 choices that are all half finished. What would be nice, would be to be able to easily develop gui in a modern compiled language that creates compact executables for distribution that look good on the linux desktop. I'm thinking about languages like go, rust or nim.
Technically, Flutter is just another way of shipping apps, just like Electron and many other Electron-like alternatives.
Flutter on Linux just got attention because it was adopted by Canonical to build Ubuntu apps.
But it's just an illusion to think that Canonical chose Flutter because it is technically superior to GTK or QT.
Canonical relies heavily in GTK and Gnome for its products but has almost no influence over GTK and Gnome development when comparison with its main competitor, Red Hat. So they decided to use Flutter to escape from competitor influence or to have a technical advantage or both.
It does not offer platform-native UI widgets like Qt, nor does it have Qt’s breadth of features. But not every app needs that.
But it would be amazing if a react-native app would adapt to KDE or Gnome/GTK style widgets based on the DE used.
> As we have touched on previously, there are already enough UI toolkits available for the Linux desktop. Most notably among those are Qt and GTK
The aim for Flutter is not to just support the Linux desktop, but also Mac, Windows, iOS and Android, tablets and phones.
Something tells me you won’t find neither Qt nor GTK a popular option for delivering cross-platform applications to all those targets.
I dont think verbose logs must be printing on a web page when it's public. Or is it fine?
All these XP era look alike apps like Clementine are going to be left for the minority of developers willing to mantain these old projects. Everyone knows that true Unix is CLI, and anything user friendly or consumer oriented will either be on the browser, or run in some render engine like Flutter. To me that's great, the future looks bright and cross platform.
On the plus side -removing the Linux-centric dependencies could potentially level the playing field for the BSDs. This would be a good thing because it would prevent Linux from becoming a Windows-style monoculture.
Meaning if Linux continues to go off into the weeds, then the BSD having a viable desktop that doesn't depend on the freedesktop foundation infrastructure will insure that desktop users aren't all left hanging (relying on windows or macos).
First result is a dbus library.
It will be interesting to see if anyone besides Canonical takes steps to provide Linux hooks for their Flutter apps. It'd be very interesting to see Canonical also try to release some of their apps on other platforms too! That could be a thing!
Thanks for the link.
Sure Google might discontinue their interest but it can be forked and carry on if there's enough momentum.
The ethos of FLOSS is to be able to change software and give it to your colleagues and friends. Gnome -- one of the major competitors to Flutter for Linux desktop programs -- is famously an example of a choice-unfriendly floss project.
A bet like that is putting a large part of Linux desktop app development in the hands of Google, which as a history of killing or deprecating their projects. Sure it can be forked if there's 'enough momentum', but that would suddenly dump a huge burden on the Linux ecosystem that it doesn't need. Why not stick with established players like Qt, who actually have a proven sustainable business model (dual OSS+commercial) for decades now, or a classic like FreePascal+Lazarus, which is also established for decades?
Neither is Flutter, so that's not really an argument. And in case you're arguing that they don't support those targets, here's a reference of Qt's supported platforms: https://doc.qt.io/qt-5/supported-platforms.html
Electron, at the very least, has Chromium inputs by default, which are arguably about as close to the native equivalents that you can get. Developers almost always restyle them, but you can't fault Electron for that.
Syncthing runs fine in the background.
> can be launched on startup,
You can launch an app on startup regardless of what GUI toolkit it's using, or whether it's using one at all. Are you saying that you can only run a program at startup if it's using Electron?
> can have toolbar icon,
I think there's a misunderstanding here. I was talking about using the browser for the GUI of your app via an embedded HTTP-server, like Syncthing does; not replacing your entire program with a HTML-document with some JavaScript, which would clearly have some limitations.
> you as a dev have zero control over the browser used,
Well, that's also not true. You can check that the browser uses a certain user agent string, or you can add a specific version of a specific browser as a package dependency.
I think this claim harms your overall point (which I agree with). I can't think of any Linux programs (other than Calibre) which I have serious problems using. Furthermore, they tend to be extremely fast because they're very lightweight. The entire VLC package from my distribution is only 13 MB, and VLC is a rather large program by Linux desktop standards. Even Gimp is extremely simple and intuitive to use (to anyone who isn't a complete noob with graphics concepts), it's just extremely lacking in features and polish compared to Photoshop.
If you stick with the point that AAA games and Adobe are still a "no", you have a fine point. I've found that 99% of the games I want to play are actually available for Linux, these days, but that probably speaks more to my tastes than anything else.
> ...usability/readability of linux way apps dont come anywhere near other OSs...
As a web dev - almost all of the apps that I needed from Windows were on Linux and the usability is exactly the same.
Personally, I don't care if Linux is ever used by the masses though. I'd probably prefer if it wasn't. I also don't care if AAA games ever come to Linux. I keep Windows machines around for that. I also have Macs for doing stuff with Apple iThings.
There is no obsession within me to do everything on the same machine. I don't need my phone to do stuff that my desktop does. My laptop is used for meetings and has almost no software installed on it. My Windows machines are used for entertainment. My Linux machines are for work. For devs, if you really, really need Photoshop you can run it in a VM. I don't see the big deal with that - it was a selling point for Apple's Intel Macs for a long time.
So, outside of AAA games (which devs largely don't need for work) and Photoshop - what am I missing?
Also I don't think I even mentioned Gnome. Also isn't Flutter just an app UI toolkit, ala, Electron, Qt etc? Just because there's a Flutter app I want to run doesn't mean I need to change my desktop manager.
As for Qt, they have continuously pushed their OSS branch down on their priorities over time, with the latest (that I know of) round of changes from last year being that if you want to download official Qt binaries--ones that are at all supported by them--you have to have a Qt account; offline installers and LTS access are now commercial-only.
This is way worse than Flutter; and, as much as I hate hate hate Google in general and am a very big complainer about their shut downs of everything, Flutter feels more like Android or Chrome--both of which I feel will be safe for quite a while, at least as supported products if not ones that are mostly open source--than like all the other long list of things Google has killed (which certainly has included developer tooling).
Yeah, except Gnome looks pretty crappy on every other OS (and only marginally less crappy on Linux). Meanwhile, Lazarus Component Library looks native on every desktop.
> if you want to download official Qt binaries--ones that are at all supported by them--you have to have a Qt account; offline installers and LTS access are now commercial-only.
I was just now able to download the installer for open source usage without a Qt account from https://www.qt.io/download-open-source , so that seems very questionable. By the way, of course Qt is not going to provide production level support for free for open source software, why should they be expected to?
Sure, but other Linux distributions are available. I'm not trying to respond in a facetious way, but since I started using Linux in around 1993-94 (Slackware), that was how you voted, with your feet, when something really annoyed you.
> Why not stick with established players like Qt, who actually have a proven sustainable business model...etc
Well, if you're a developer then keep using Qt, you're free to do so. Isn't this how it's supposed to work?
If it has to be cross platform, something like React Native which leverages system controls would be a better approach than flutter which draws its own controls. But even there you will have to deal with a lot of translation due to it being JavaScript.
As a non-professional user of gimp, never touched photoshop in my life, gimp does all I ever needed so far and never disappointed me. I edited some vacation photos, created a few humoristic images for banter with my friends, captioned some reaction pictures for online discussion. I don't understand why gimp is said to have such a bad ui, it's easy and efficient to use in my eyes.
Also yes, the ui of electron browser based "apps" is "consistent", but it fails to integrate with everything that uses the gtk theme that I like, disregards what my window manager tells it to do window-decoration wise and is sluggish when used with picom. In addition to that it makes my laptops fan spin loudly. Programs using electron provide a user experience much worse than even a badly done curses ui. Given that those programs are often provided by businesses where "ux-developers" may work, it's probably for the best if those people don't influence the gnu/linux ecosystem in the future.
You see, "linux developers" view their programs from a user perspective all the time. You may think they don't because you have some expectancy that the user has to be your average mom, dad or ten-year old child, but thats wrong. The programs are developed foremost with the developers interest in mind and may satisfy others who have similar intentions. "linux" doesn't want anything. The parent comment already explained that.
"Linux" left server and terminal exclusivity a long time ago.
Also, with the development of WASM most of the stuff we do on our desktop will move to browsers and we can use the best UI ever with CSS on browsers.
And for a software library, that's a good thing
> and won’t last long
Don't worry, gtk is 23 years old. It will last long enough for whatever you're trying to do, certainly longer than the javascript framework of the week.
> Also, with the development of WASM most of the stuff we do on our desktop will move to browsers
Nah. Webassembly can do some impressive stuff, but when you compile stuff to a binary blob you might as well do it for native code. Will run faster and feel better
> and we can use the best UI ever with CSS on browsers
My whole post was about why the browser ui is inferior to native applications. You should at least try to justify your position when writing up an answer in a discussion.