Ubuntu Makes Flutter ‘Default Choice’ for Future Desktop Apps
omgubuntu.co.uk
omgubuntu.co.uk
Also, their big contribution to Flutter is getting it on the snap store? Quit trying to turn Linux into a walled garden with your app store. If you are considering snaps, please consider Flatpak instead.
At work I need to use MS Teams and holy shit it's so slow and if I'm compiling code it's barely usable on an 8 core processor. I had better performance with chat clients in 2002 on hardware that was about 1% as fast as mine today.
VS Code is also very slow, you just don't notice it as much on today's machines.
And for your chat example, when I was at IBM the Sametime chat native app couldn't even accept single line incoming text without grinding a several thousand dollar machine to a halt. Bad software is going to be bad no matter what language it's written in.
Lotus apps were known for being unusually slow. Visual Studio Code is known for being unusually fast for an Electron app. And it still chokes on files Sublime Text handles easily.
Seemed to be running great on Core 2 Duo machines of the kids learning coding at a remote village I visited recently.
When I added extensions, it did start to feel laggy but once I turned off all extensions save one (the language server extension -- in my case, Python) it was fine again.
With my current machine (a refurbed 2014 Intel i7 Dell desktop), VS Code is pretty responsive even with extensions enabled.
Compared to that Flutter programs are a huge black-box, completely unportable as delivered not just across platforms but also between accessibility mechanisms it seems. While practically sharing none of the advantages of traditional native toolkits. Responsiveness is dismal, web/desktop targets are basically a PoC, the language and toolkit are so large it's extremely unlikely people will bother maintaining it when Google deprecates it, even if it's 100 times more popular than now. It's just disheartening how people are still keen on developing things far too likely to end in a platform graveyard.
I think a well maintained React Native for desktop is a really good way forward.
People don't really care about a native "look and feel" any more so long as it's pretty, consistent, and integrates into the OS. Which is why electron is popular. I think the slowness of having everything rendered by a webview is the main drawback of electron, which is solved by React Native which only needs to run JSC or V8 somewhere.
That's plain wrong. I recently upgraded my 7 years old mid range laptop and VSCode ran just fine on it, even with the required set of extensions for my projects. I upgraded because I had other issues, but VSCode wasn't one.
Did you try loading a 50MB CSV (or similar) into VS Code? It just seems fast but it's actually pretty slow but hidden by the raw power.
Especially anything doing code analysis or typing hints is moving at glacial speeds compared to native or Java-based editors/IDEs. You just don't notice it because you probably either never experienced it or forgot how fast it can be. Everytime I have to use VS Code instead of Visual Studio, I slow down my typing because I need to wait for VSC to show me the hints.
Try Slack on Firefox or Android. Who the hell has 40 seconds for a chat to load?!
If global warming doesn't end up killing us all, I hope we fundamentally change the way we approach to software in the next decades.
But University CS programs aren't the proper place for this pedagogy either, and I don't see SWE guilds popping up for a few reasons.
Time will tell whether they're right or not. They made some failed bids in the past (Mir, upstart), but at least they're trying to move.
I think it's a positive that they're moving to a more common platform that is easier for developers to produce a build for. Good luck to them.
Bzr, Launchpad, Unity, Juju, etc. They have a ton of misses.
however, https://mail.kde.org/pipermail/kde-community/2020q2/006098.h...
End of last year they did release 6.0, so it looks like they're not hiding their releases for a year. You won't get the LTS fixes, for a year though.
For me, this means I have to stay on 5.15 until 6.2( because of location module) is one year released -- summer 2022.
Additionally, Qt changed its approach to bugfix commits to go to dev first and then get backported, so even if a distro is stuck on an older version branch in LTS mode, critical fixes will be available publically and can likely be backported manually.
Overall the change to the LTS support strategy isn't amazing, but it's impactful mainly to 5.15.x since it's LTS and the transition to Qt 6 will take some time. Once the transition is over I suspect it won't be a significant issue however.
So, if you report a bug in 6.2, then you'll get the bug fixes in 6.3, assuming the fix got into the dev trunk before the end of the 6.3 release window?
I see this mentioned quite often here, but that's not a valid argument in favour of Electron Apps.
VSCode is the primary focus for a user when it's active - so it's fine if it takes up a significant proportion of a machine's resources. Now if a bunch of background taskbar apps, calculators and notepads start doing the same, user experience is going to go downhill very quickly.
So basically, Electron is a good choice for apps in which you spend a lot of time; and a poor choice to be a preferred platform for an OS.
Basically the only thing it misses is the URL bar and navigation buttons. It's just a browser with some OS integration slapped on the side.
And a universal way of accessing any published application for that runtime through some kind of address bar.
I currently run 2 VScode instances and they literally total 70 MB. So no, it's not significant, on the contrary actually.
And to be fair, even if it was 700 MB, I wouldn't care. Even older machines have at least 4 GB memory.
For the record, VSCode chugs like a MF on my Thinkpad running XFCE with 4gb of RAM. Meanwhile, Sublime Text flies
"Write once, run everywhere" was a nice motto for Qt and I even bought it for a while but yet again does not work in practice. Flutter, on the other hand, actually works. Sure it doesn't have all the bells and whistles of OS integrations, but it is getting there. I hate the language itself, but I can't deny that it works beautifully.
If you think about it, the Qt way of doing things was quite novel back in the days and had allot of promise, but I feel that the main thing that held it back was C++ (still no official package manager and no cool CLI tools in 2021!!). I am sad that I left Qt behind since it was an amazingly modern platform when I used it, but I am glad I don't do C++ anymore.
A platform should be evaluated by what an average team can make with it, not by one shining example -- because a sufficiently talented team can make something excellent on any platform.
If the VSCode team had built something like VSCode on another platform, I'd probably like it even better than I like VSCode.
I don't understand the hype about flutter - putting aside that dart is a tool that made more sense in a different timeline, or that some of the examples seem really slow/buggy, or that it's rendering behavior is a nightmare to guarantee consistency - putting all that aside, I've yet to see anyone build anything non-trivial with flutter.
And then there's Ubuntu. Canonical is just all over the place. There was Unity, there was their weird mobile phone, there was their mobile OS, the weird ads in desktop searches. I am doubtful anytime I see anything Ubuntu related.
We should encourage experimentation and risk taking. No company can always get things right.
Phones are a duopoly, but I'm glad they tried. Unity was fairly decent, but in the end adopting Gnome benefitted everyone. Ads were the only bad idea I can think of; but hey I've been using their wonderful software for 15 years now at a total cost of zero.
(I agree with your general idea and the rest of your comment.)
https://www.superlectures.com/guadec2013/sandboxed-applicati...
Unity came about with the Gnome 2 to 3 transition (and earlier versions of Gnome 3 were widely agreed to be a step backwards).
Upstart has a very different design philosophy than systemd. Hard to say its NIH when it was different tech.
NIH apparently means "not adopting whatever RedHat develops/supports".
Flatpak was known about and talked about before snaps, as another pointed out.
Upstart - that's fair, upstart was something new that didn't get replaced by systemd for a couple cycles.
Like it or not, Red Hat controls gnome which is a huge ecosystem. Your best bet for effecting change there is collaboration, not hacking together your own UI for yourself. I mean, sure they are free to do that, but the writing was on the wall before it even started.
getting through the tutorial is a 15min thing. I don't see much complexity exposed to the developer.
You can try the demo here: https://demo.invoiceninja.com
It looks like you tried refreshing the data in the app to resolve the problem, does refreshing page in the browser help?
Not sure why I'm not seeing the same problem on my iPhone. If you use the app and would like me to help debug it feel free to email us at contact@invoiceninja.com.
I'll be the first to admin that the performance is currently not quite as good as a plain HTML/JS/CSS webapp, however as a small team being able to compile one codebase to every platform is game changing.
The performance issues of Flutter Web are more apparent on mobile however users can install our native mobile app which performs much betters.
Lost me here. I don't think most users care whether their apps run Electron or .NET or Python/QT or whatever so long as the app works. Stigma as a dev makes me want to avoid Electron apps but that's because I'm a dev.
If the point is about desktop apps vs. apps that actually run in the browser (e.g. Sketch vs. Figma) then that's a real debate. But that has nothing to do with Electron.
Electron is a really easy way to add Linux support to your app.
A lot of older linux software is non-web based but that's not the average desktop user.
Where can I read about this?
I think for react native in windows apps more generally the github page is a good start
RStudio is also web-based tech — which enables it to run in a browser when remotely hosted.
And these are some of the most widely used IDEs out there (IDEs are also a class of desktop apps that have an above average UI complexity). I don’t think a majority of users are “less keen” just because they’re web based tech.
Maybe the only nitpick I would have is the odd web debug menu that would pop up on occasion when one right clicks on certain UI widgets.
Now Slack's a pig at 380MB, fresh-opened, sure. But reality doesn't really seem to oblige these kinds of claims in 2021.
Here are my numbers for a freshly installed 1.53.2 with zero plugins and no configuration:
used
2882
used
3404
OK, it's "only" 522 MBs for a bare-bones text editor which requires "two dozen plugins" to make somewhat usable.Multiprocess applications, and especially multiprocess applications with really big discardable caches, are extremely difficult to compare apples-to-apples.
Discord has jumped up to about 300MB with a bunch of use, though 50MB (?!) of that is the Discord updater, which is pretty wild.
In a nutshell, if anyone is interested how this works, the Flutter apps will be converted and compiled as GTK3 apps. Dart has the FFI package so it's fairly simple as a Flutter dev to do C system calls in Dart. This will of course stop your app from being cross platform out of the box (but I doubt this is a concern for the Ubuntu team).
What do you mean by that? Isn't one of the goals of Flutter that it gives you pixel-perfect controls, and renders everything itself?
This is also how Druid the Rust GUI framework works on Linux. Use GTK to start the window and the paint surface (Cairo).
They look like to not care about users anymore, as with snaps, but behave like any other business of the silicon valley without real value.
Flutter does not even make sense with desktop apps. It is like electron mediocre apps.
What I see here is Canonical following whatever they can get from the biggest players like a hooker, to try to get attention.
Canonical are a UK-based company, nothing to do with the Silicon Valley.
Flutter compiles to native code and uses Qt behind the scenes. Electron uses an embedded Chrome to render stuff with web tech. How are they even remotely alike? They're cross-platform, yes, and Dart is supposed to be a better JavaScript, but that's it.
There are a couple actively maintained projects for RN on desktop such as:
https://proton-native.js.org/#/
https://microsoft.github.io/react-native-windows/ (though this lacks Linux support at the moment).
There's also React NodeGUI, however I don't think people care about having native buttons etc as much (as evidenced by VSCode, Slack, etc, and the plethora of other successful Electron apps) any more.
Basing your future applications on a language which seemingly is already slipping into its coffin (even discounting the regular Google discontinuing thing), seems like a really weird choice.
https://medium.com/flutter/flutter-performance-updates-in-th...
https://medium.com/flutter/flutter-performance-updates-in-20...
I think it has HUGE potential on the server side but there is a chicken and egg problem there at the moment where there don’t appear to be any actively maintained frameworks, even some basic things like ORMs and dependency injection frameworks are few and far between still.
Not to kill your enthusiasm, but that can be said for almost any new language.
> I think it has HUGE potential on the server side but there is a chicken and egg problem there at the moment where there don’t appear to be any actively maintained frameworks
Which is why an active and vibrant ecosystem around the language increasingly is more important than the language itself.
Just look at Go. A terribly, inexpressive language where the common solution is to write code-generators.
But it has an ecosystem and the stuff people need. So people use it to write more software and more Go-libraries, reinforcing the platform-effect.
Though I guess it is better than Electron because that's really wasteful and bad. There's a few pearls like VS Code but 95% of Electron apps are horrible (including other MS apps like Teams, Yammer etc).
Anyway pretty much everything Ubuntu does these days rubs me the wrong way. Snap in particular (super slow to start, and only works with their own store). I still use it for work a bit because we only have 2 choices and I hate Red Hat even more :)
But my point is, Canonical keeps pushing stuff that's great for their interests (snaps with their IoT ambitions, and trying to rope other distros into their snap store) and for developers, but not for the users.
So, I created the default app and it ran fine. Then I wanted to add a menubar to the window, so I found the Flutter menubar plugin, installed it and got it working.
My first menu items were _File -> E_xit. The Alt+ keyboard acceleration indeed worked on my system (Manjaro/XFCE) without any problem! However, as soon as I wanted to handle the "Exit" action I got stuck.
I searched around a bit but I could not find an answer. How do you exit a Flutter desktop app programatically?
Hopefully for Canonical everything will go well, I wish them good luck.
Flutter could become so too, but it's too early to tell.
It is like the sky falling on your head, tomorrow never comes.