Live data from Hacker News

Flutter desktop shells

github.com

241–250 of 322 posts

Re: Flutter desktop shells

#241
post #3

I really want to like Flutter, but I someone really don't want to spend the time to learn Dart. I can't really quantify it--some mix of yet-another Proprietary Google Technology, yet another ecosystem, yet another X. I'm tired I just want to build stuff that solves problems.

>> I'm tired I just want to build stuff that solves problems. I can relate to this. While that's always been part of my motivation, there were other things in play too, like wanting to do something "better" than before. Or using new methods. Or applying X to Y just because. Now, as I get older, I don't want to deal with overly complicated shit, excessive dependencies, or unnecessary bling. As an example in the GUI sp…

> I've done GFX programming for years and scene graphs are almost never the right answer.

Interesting, why would you say that ? I saw a bunch of projects go from "more-or-less smooth at 1080p" to "buttery 120fps smooth at 4k" by migrating to UI toolkits with a scenegraph architecture.

Re: Flutter desktop shells

#242
post #23
post #3

I really want to like Flutter, but I someone really don't want to spend the time to learn Dart. I can't really quantify it--some mix of yet-another Proprietary Google Technology, yet another ecosystem, yet another X. I'm tired I just want to build stuff that solves problems.

So what's your alternative? Java Swing? Proprietary Sun (now Oracle) technology. Qt? Proprietary Trolltech tech. Electron? You're back on square one of using Google technology. And winforms, WPF, application kit, etc are all far more proprietary than Flutter.

> Qt? Proprietary Trolltech tech.

... is this a comment from 1997 ? Qt is licensed under both GPLv3 and LGPLv3 - and Trolltech as a company hasn't existed for more than a decade...

Re: Flutter desktop shells

#243
post #3

I really want to like Flutter, but I someone really don't want to spend the time to learn Dart. I can't really quantify it--some mix of yet-another Proprietary Google Technology, yet another ecosystem, yet another X. I'm tired I just want to build stuff that solves problems.

This is exactly how I feel. The lack of freedom to choose your own language is appalling. I don't want to be locked into a single language. If they targeted the JVM platform instead, would have the choice of Clojure, Scala, Kotlin, JRuby, etc. Also, targeting the JVM makes a lot of sense of Android, since ART complies JVM bytecode down to super-efficient machine code (at installation). I was really disappointed by Go…

WASM would be a much more suitable platform for Flutter since it's more portable (works on the web) and better matches Flutter internals (C++ can be compiled to LLVM and through that to WASM).

Not to mention that Google might be a bit sensitive to anything JVM / Oracle right now, given the lawsuit they lost.

Re: Flutter desktop shells

#244
post #13

Earlier quoted context omitted.

Sure it is, but I can see why OP looks down on it – just like their web rendering engine, it may be open source, but it's Google holding all the cards and ultimately making all the decisions. It may be opensource now while it's useful for them, but it may end up just like Android over the years: more and more closed bit by bit.

Is Google any worse than some "benevolent dictator for life" like other open-source languages?

In the sense that the thing worse than "benevolent dictator for life" is "non-benevolent dictator for life".

Re: Flutter desktop shells

#245
post #23
post #3

I really want to like Flutter, but I someone really don't want to spend the time to learn Dart. I can't really quantify it--some mix of yet-another Proprietary Google Technology, yet another ecosystem, yet another X. I'm tired I just want to build stuff that solves problems.

So what's your alternative? Java Swing? Proprietary Sun (now Oracle) technology. Qt? Proprietary Trolltech tech. Electron? You're back on square one of using Google technology. And winforms, WPF, application kit, etc are all far more proprietary than Flutter.

Tk is a pretty solid option nowadays, and it's wonderfully cross platform. Thanks to TTk, begone are the olden days when Tk apps stuck out like sore thumbs (the look and feel ain't an exact match even today, but nowadays the differences are more subtle). It also works with a remarkable number of languages. The only reason why I've reached for Qt instead lately is because the last couple projects I've done required an embedded browser window (i.e. because they're wrapping some web-based application) and Tk lacks modern options on that front (though I'd love to fix that at some point).

GTK+ and wxWidgets are other viable and popular choices for cross-platform desktop GUIs.

Re: Flutter desktop shells

#246

Earlier quoted context omitted.

> So (3) is hardly better than (2). As someone developing GUIs with Qt bindings for Python daily, and has been for the past 8-9 years, I respectfully disagree. Understanding of the underlying types and memory management is rarely an issue (e.g. once every 3 months), and when it is it's incredibly straightforward (e.g. maintaining reference to a window you've just created else Python garbage collects it for you). Topi…

Python probably does eliminate a lot of problems of QT, much of its being the static typing of c++. However you are still bound by qt's internal widgets. Creating custom widgets requires reasoning about the renderer and qt's internal code. The styling system of qt is also quite limited. Their 'css' is a small set that does not work well on everything. HTML+CSS allows for creating almost anything, it's the same on all…

I think Python is a poor choice for UI because it doesn't have a history of handling asynchronous things well. It leans on Qt a lot.

But I also disagree that the styling is quite limited. Yeah, css in Qt is pretty limited, but creating a custom widget doesn't require all that much intimate knowledge (depending how custom we're talking). You can tweak the behavior of default widgets easily, you can draw a completely new one by painting and following the rules (for sizing, redrawing, etc). For new interaction models you'll need to be more familiar with the internals, but that's the case if you're stretching the limits of any framework.

Qt works really well for cross-platform apps that adhere to the OS' style and behavior. I think way too many apps waste time and frustrate users by reinventing the wheel. QML seems to be their approach to UIs untethered to the host OS (I don't have any experience) and seems to be their focus for the past handful of years. Their Qt (Widget) demos always show a bunch of cool features I rarely use, but I do pilfer their code for examples when I need something.

For a Discord like example; Maya, Nuke, and Houdini were all originally developed using their own UI toolkits and have migrated to Qt while maintaining each of their distinctive behaviors. They are all cross platform and require relatively low overhead and high performance with heavily customized UI behaviors.

Maya: https://damassets.autodesk.net/content/dam/autodesk/www/camp... Nuke: https://www.foundry.com/sites/default/files/styles/teaser/pu... Houdini: https://d2wvmrjymyrujw.cloudfront.net/media/uploads/products...

These apps did fork Qt5 when they moved from Qt4 to Qt5, but it was mostly Qt4 regressions and did it in a way intending to contribute their changes back into Qt mainline.

Re: Flutter desktop shells

#247
post #201

Earlier quoted context omitted.

Why is Electron so popular, but PWAs have seemingly failed to take off? Everyone was beating the PWA drum for a while, but I've almost never seen it implemented. What's the reason, lack of discoverability? I'd rather run one Chrome instance than a dozen apps that use varying versions of Electron.

What matters to developers is not the same as what matters to users. Users: Does it run and do the things I want and It's obvious how to access it? PWA's are a sandboxed environment, where devs do not have control of browser version, cannot modify chromium, and cannot bundle necessary binary code. Even Spotify bundles in faster JSON parsers, and probably a number of other things.

I've given up on Electron-based apps and just use the corresponding webapp in a tab in Firefox (and if they don't offer one, I usually just do without the app). I got here because I got tired of running several extra browsers that ate up my RAM and killed performance.

An average user might not be able to connect the dots this way and realize what's going on with their machine. They'll just complain "my laptop is slow all the time and I don't know why". As developers, I feel like we have a responsibility to take better care of our users in this manner. Using a solution that will consume a GB or more of unshareable memory for something that doesn't need it (which is mostly everything) is a poor choice that puts the developer's needs (write-once-run-anywhere; faster, cheaper development time; fewer developers needed) over the user's.

So I fundamentally disagree that users only care that the app does the things they want, and nothing more.

Re: Flutter desktop shells

#248
post #23

Earlier quoted context omitted.

So what's your alternative? Java Swing? Proprietary Sun (now Oracle) technology. Qt? Proprietary Trolltech tech. Electron? You're back on square one of using Google technology. And winforms, WPF, application kit, etc are all far more proprietary than Flutter.

> Qt? Proprietary Trolltech tech. ... is this a comment from 1997 ? Qt is licensed under both GPLv3 and LGPLv3 - and Trolltech as a company hasn't existed for more than a decade...

Dart and Flutter are both BSD licensed, so presumably the discussion of "proprietary" is at least somewhat orthogonal to whether it has an open source license.

Re: Flutter desktop shells

#249
post #17
post #8

I want to link to Revery - a native, cross-platform GUI library written in Reason/OCaml. It brings React's view=function(state) model to native applications, along with CSS box model and Flexbox. It has the developer ergonomics of Electron, but without the need for its heavy runtime. It is still under development and I'm looking forward to playing with it next time I try writing a GUI app. https://github.com/revery-u…

All these projects are trashing the accepted meaning of "native" GUIs. If it's not using, for example, Cocoa controls on macOS, then how is it native GUI?

For native, there is Brisk[0], "A cross-platform set of tools for building native UIs with Reason/OCaml.

The goal of the project is to allow developers efficiently create fast, native apps for all major platforms. It's the best of both worlds: speed and portability, simplicity and great APIs."

[0] https://github.com/briskml/brisk

Re: Flutter desktop shells

#250
post #3

I really want to like Flutter, but I someone really don't want to spend the time to learn Dart. I can't really quantify it--some mix of yet-another Proprietary Google Technology, yet another ecosystem, yet another X. I'm tired I just want to build stuff that solves problems.

I'm convinced it's going the Google Way™ (i.e. will be abandoned) in 5 years tops. This company has repeatedly shown it can't commit to products that are slow burns and not entirely obvious where revenue may come from. It's part of the reason why I see Go as a fad too.
Post reply on HN