13 ms·
> We describe Flock as "Flutter+". In other words, we do not want, or intend, to fork the Flutter community. Flock will remain constantly up to date with Flutte
by divan 2y ago
> We describe Flock as "Flutter+". In other words, we do not want, or intend, to fork the Flutter community. Flock will remain constantly up to date with Flutter.
That was the first fear when I saw the title - splitting community and having two incompatible versions. Good to see it addressed in the post.
The second was just a fear of how it would complicate the development process, but it seems to be a drop-in replacement (just configuring FVM - Flutter Version Manager):
Configure .fvmrc to use Flock:
{
"flutter": "master",
"flutterUrl": "https://github.com/Flutter-Foundation/flutter.git"
}
Flutter is the best thing that happened to UI development since Qt. Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell. And the frustration described in the post is felt by many CTOs and developers. Especially those who use Flutter for desktop and web. Flutter provides an amazing experience for desktop apps, and precisely because of that, it feels so frustrating when you stumble upon some stupid bug that has been open for a year or two and never gets prioritized. Usually, it's nothing critical, but still requires workarounds and wasting time.
I don't know, the idea of Flock sounds good, the main question is engaging the community. Hopefully, the author (who seem to be an ex-Flutter team member himself) have a good grasp on the state of the community.
Wishing luck to the project and going to keep an eye on the progress.
- 1propionyl 2y agoFlutter is really not some big revelation and it's always shocking to me how it's evangelists act like it's the game changer no one else has noticed. It's just not that good? Just build native UIs. I don't know why cross platform UI has been such a hobbyhorse for so many for so long: it's a stupid idea.
- divan 2y ago> Just build native UIs Do you see any reasons why many companies/teams/devs don't want to "just build native UIs" and instead are looking for cross-platform solutions designed from ground apps for modern UI development needs?
- 1propionyl 2y agoYeah I do see why they don't want to do it and I see it as a critical failure of risk management. If you think pinning your entire product on a cross platform UI kit when every single one (except maybe QT) had proven a failure... then yeah I think maybe you should consider actually just eating the cost of building native UIs. The risk analysis of building against supposed cross platform "solutions" just doesn't work out. Why do we keep trying to do it? The idea of cross platform UI is frankly "f*cked from the jump" and should never have been a goal. I think it's only a goal because it's intellectually satisfying, not because it's really desirable.
- mdhb 2y agoBack in the real world however you have canonical for years now who have made flutter the default for all native linux desktop development. I think your anecdotes are a bit out of date and irrelevant. People much better informed than you looked at this problem in a lot more detail in real life situations and came to very different conclusions.
- 1propionyl 2y ago> you have canonical for years now who have made flutter the default for all native linux desktop development And yet, I can't think of a single app I depend on for anything on Linux that relies on it. How'd Snap go for Canonical?
- deleted 2y ago[deleted]
- mdhb 2y agoCool, none of that is remotely relevant to what we are talking about here. Your anecdotes are dated and you should think about updating them so you don’t talk so confidently on things you don’t actually seem to know much about. I mean that sincerely not as some internet gotcha there’s just no need to sit there defending a position that is based on old info just for the sake of it.
- LordDragonfang 2y agoAs someone desperately fighting to keep their company's main product to stay using a native desktop UI, Microsoft makes it real hard. WinUI3 hasn't even officially launched and it already feels like it's on life support. QT is good, but even qt seems to be starting to use a web renderer.
- contextfree 2y ago"WinUI3 hasn't even officially launched" ? It officially launched with version 1.0 and it's now on 1.6?
- c-hendricks 2y agoI can't really speak to the differences but > At this time, there are two generations of WinUI: WinUI 2 for UWP and WinUI in the Windows App SDK (WinUI 3). > https://learn.microsoft.com/en-us/windows/apps/winui/ https://learn.microsoft.com/en-us/windows/apps/winui/
- int_19h 2y agoHence why OP was specifically talking about WinUI 3 (which is indeed at version 1.6.1 as of right now).
- c-hendricks 2y agoWindows App SDK seems to be at 1.6.1, which includes WinUI 3.
- poulpy123 2y agoIt's really something I know nothing about so I googled WinUI3 and the 3 first results are microsoft website and github, and the next two are "is winui3 dead ?" and "Oh winui3 is really" dead. So it doesn't inspire confidence :)
- LordDragonfang 2y agoI suppose it was incorrect of me to say it hasn't "officially" launched then. But one would certainly seem to get that impression, considering it's missing major features (data table support?) isn't anywhere near feature parity with either WPF or winforms, and doesn't even have a visual editor (which should be table stakes for a modern 1.0 release from a company as large as Microsoft).
- epcoa 2y agoWhat's a native UI? The only thing closeish to a native UI is macOS and iOS AppKit and UIKit. Winforms aka Win32 is still a thing, but Microsoft has been undogfooding that and putting out alternatives for years, now WinUI3 will definitely kill off Winforms for good! What is native on Linux? Gtk, Qt, Motif (lol)? And then Android? Ironic then that Google is the one behind Flutter. The concept of native outside of MacOS/iOS is pretty busted at this point. At best it just means something non-web.
- dotancohen 2y agoI would consider both GTK and Qt native on Linux.
- epcoa 2y agoSo that means one has to target both GTK and Qt to be native on Linux. Fat chance of that on anything but yet another music player or other relatively trivial UI app. In any event, that still doesn't answer what it means to be "native"? And my point is I think most definitions are dumb or useless. If I'm running a GTK desktop, Qt apps are generally not "native" no matter how much theme fuckery one tries. Native can also speak to other common UI affordances and design guidelines, and there sure as hell is nothing like there is in the MacOS world for linux. Some core GNOME and KDE desktop apps maybe, but overall there isn't much adopted standardization in Linux world. 90% of the work I get done involving a GUI outside a browser on Linux usually involves Java, whether it be Intellij, ghidra, etc. Maybe I'll pick up blender from time to time. Audacity, there's a good one, targeting (for now) a cross-platform toolkit that pretends you can have your cake and eat it too - wxWidgets never fooled anyone - they sure as hell don't look native on MacOS, and they invariably look much closer to what they riffed off of, a 90s MFC app. (And wxWidgets wraps GTK and AppKit, so is it native? If so, native is meaningless IMHO. If not, why not?)
- einpoklum 2y ago> So that means one has to target both GTK and Qt to be native on Linux. Doesn't it mean that you can target _either_ and be considered native? Also, I'm not sure I buy the claim that of "GTK and Qt are native" in the first place. I'd say either that there is no native UI, or if I must call something native, it's the toolkit the desktop environment uses. And yes, that does mean that there is no "Linux nativeness" like there is Windows nativeness, as every DE is different. And rightly so, because one could in principle write a different DE over the Windows kernel, whose UI would behave differently.
- wiseowise 2y ago> I don't know why cross platform UI has been such a hobbyhorse for so many for so long: it's a stupid idea. You suggest to build and maintain same logic in at least C#/C++ + Swift + Kotlin + JS + C++ and you ask why crossplatform UI is a popular idea?
- kernal 2y ago>Flutter is the best thing that happened to UI development since Qt. Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell I agree with you that Flutter has been a boon for cross platform development, but to say it's impossible to tell you're using a Flutter app is a bit of an exaggeration. I have no problem identifying Flutter apps. Not that I care as they often have a genuinely nice UI and are performant.
- dotancohen 2y agoIs the complete lack of accessibility still the giveaway? Last I looked Flutter was a complete nonstarter for accessibility.
- divan 2y agoCan you elaborate? What's missing that makes you feel confident saying "complete lack of" despite well-documented accessibility functionality (including testing for accessibility)? [1] [1] https://docs.flutter.dev/ui/accessibility-and-internationalization/accessibility https://docs.flutter.dev/ui/accessibility-and-internationali...
- hyperhopper 2y agoI worked on the GPay flutter rewrite and our standard for accessibility was higher than almost any other app I've seen, and was a significant amount of effort spent on that. What accessibility shortcomings does flutter have?
- jonas21 2y agoThis may be a silly question, but how do I install the Google Pay app on my iPhone? I'd like to try it out since it's the first app listed in the Flutter Showcase, people keep mentioning it in this thread, and it probably works as well as a Flutter app can, given that it's first-party from Google. But when I search for it on the App Store, it's nowhere to be found (or at least not in the first 20 results).
- deergomoo 2y ago> Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell You can't be serious. Maybe on Android, but on other platforms—especially iOS—they stick out like a sore thumb. A number of them just look like Material Design Android apps awkwardly transplanted over, but I know that's down to the developer so I won't hold that against Flutter. But scrolling through the Flutter showcase[0] and calling those apps up to look at screenshots on the App Store—none of them look like native iOS apps. They don't look bad (mostly), but they don't fit in. Don't get me wrong, I don't expect anyone else to care or even notice. But for those of us that do care, you can absolutely tell. [0] https://flutter.dev/showcase https://flutter.dev/showcase
- divan 2y agoSure, but not every cross-platform app developer wants their app to look "native to iOS". Especially if you want your app to look the same on all platforms and/or have some creative design.
- pasc1878 2y agoThe trouble with this is most users only use one platform and so don't care. They just see the app as badly implemented as it does not match other apps on the platform.
- justmarc 2y agoWhy would an app not looking like a native app automatically be seen as badly implemented?
- jwells89 2y agoNot all non-native-looking apps are badly implemented, but a huge number of apps that use cross-platform frameworks do so primarily as a means to cut costs because the goal is to make development as cheap as possible, and that shows in other aspects of these apps too. This creates an association between cheap/lazy apps and cross platform UI frameworks. It’s kind of like the difference between VS Code and MS Teams. Same company, same underlying technology (Electron), but Code is good while Teams is awful because MS invests so much more in Code. Even so, Teams-type apps are what tends to come to mind when people think of Electron apps because those are so much more common.
- Onavo 2y ago> Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell. Flutter implemented its "native" looking UI widgets by literally having teams of designers eyeball the native designs and reimplementing, starting from drawPixel. This can't be done on a volunteer basis alone. Many open source attempts have tried this route and failed because they don't have the sheer designer resources needed to get there. https://docs.flutter.dev/ui/widgets/cupertino https://docs.flutter.dev/ui/widgets/cupertino
- skydhash 2y agoI’d much prefer they’ve gone with their own design system. People are already used to bespoke ones (web), badly done ones just remind me of scammy sites.
- 1oooqooq 2y agothis so much. but flutter was probably sold internally as a trojan into ios dev experience. the carrot was multiplatform... and to sell it they needed to at least market that it was "true multiplatform" with native look. which is ironic since they go out of their way to make it pain to build to both in the same app
- dwaite 2y ago> Flutter implemented its "native" looking UI widgets by literally having teams of designers eyeball the native designs and reimplementing, starting from drawPixel. Those widgets are then stylized wrong on every subsequent platform release, such that your iOS 18 phone might seem like it is launching an iOS 7 app. IMHO if your goal is to have a cross-platform codebase act like the underlying platform, React Native is a much better approach. Flutter exists for people who don't intend to take on the effort of targeting platforms with specialized behaviors.
- faizmokh 2y ago> having teams of designers eyeball the native designs No wonder it's not accurate.
- zachrip 2y agoWhich flutter apps do I likely use?
- reaperducer 2y agoAccording to its web site, eBay, New York Times, Square, American Airlines.
- favorited 2y agoSpecifically eBay Motors, which is a standalone app. https://flutter.dev/showcase/ebay https://flutter.dev/showcase/ebay
- zachrip 2y agoI'm suspicious of those because it shows an ebay logo but then shows an app I've never heard of or used...is this the same for all the other logos? Where does NYT use flutter?
- orta 2y agoFlutter web publicly launched with a NYT prototype https://verygood.ventures/success-stories/new-york-times https://verygood.ventures/success-stories/new-york-times
- mh- 2y agoI recognize that as the NYT Games (formerly NYT Crossword) app. It has some very annoying non-native behavior, like bringing up the text selection/highlight menu in inappropriate places (in a word puzzle with no selectable text).
- milch 2y agoOr the non-native keyboard ... honestly made me stop using it altogether
- deleted 2y ago[deleted]
- nox101 2y agoflutter's custom canvas render on web means so much of the web stops working or is slow. type anything non ASCII like an emoji or CKJ and eat while it downloads a font. No other pages do this. Text fields are missing all the standard context menu options like define, translate, etc... Things that would be selectable on any other page are not, etc....
- wruza 2y agoThis. They can have all the deviations they want, but “input core” must be native. If a framework ignores it, users will notice and frown upon it immediately. When flutter came out publicly, first I thought no way it can get away with custom everything. But it turned out some developers don’t care about that at all.
- 1oooqooq 2y agoyou know that zero texting apps nowadays use native input anyway right? even native apps will implement their own input and it's always awful, but the pm needs those style previews... (you're still right thought)
- wruza 2y agoChecked my whatsapp and tg, both use absolutely native inputs. The selection handles & menu, the hold-spacebar movement, the hold-to-magnify feature on ios is the same as everywhere else. If that’s not native, they did a great job for nothing. Too lazy to check on android rn, but I recently worked with the apps/chats on it and entered text, it didn’t feel different.
- jwells89 2y agoI can’t imagine using Flutter for desktop development if only because like most newer UI frameworks, it’s mobile focused and doesn’t come with important desktop widgets like tableviews/datagrids and treeviews.
- satvikpendem 2y agoCanonical is contributing to desktop and is using Flutter for a lot of their desktop components now.
- account42 2y agoGiven Canonical's record that is only further reason to stay far away from it.
- eternityforest 2y agoCanonical is great when they're following established standards, the problem is when they invent in house tech.
- loic-sharma 2y agotwo_dimensional_scrollables is a first-party package by the Flutter team that implements table views and tree views: https://pub.dev/packages/two_dimensional_scrollables https://pub.dev/packages/two_dimensional_scrollables
- divan 2y agoThere are plenty, though, and they work amazingly well on desktop: https://pub.dev/packages/syncfusion_flutter_datagrid https://pub.dev/packages/syncfusion_flutter_datagrid
- jwells89 2y agoDepending on widgets external to the toolkit is a no-go for me. It unnecessarily bloats dependencies and there’s a high risk of the widget eventually being abandoned.
- crossroadsguy 2y agoHaha. Oh, most people know! They might not be knowing it’s Flutter to be specific but they sure know it’s some hybrid/non-native crap. I recently started using Ente migrating from Authy and goodness it feels and looks awful. I wish 2FAS had a desktop app. There was a native alternative that allows exporting codes. (This is not against Ente devs. I am sure they are a small team bringing out a FOSS product. This is just my preference)
- heavyset_go 2y ago> Flutter is the best thing that happened to UI development since Qt. Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell. I was a Flutter early adopter going on for like 7 years ago now, and Flutter has its place, but I don't know if I could repeat your sentiment with a straight face. Especially when comparing it to Qt.
- lopatin 2y ago> we do not want, or intend, to fork the Flutter community. I can't reconcile that statement with the rest of the blog post. Good intentions aside, this is exactly what they are on the path to doing. From the post: > By forking Flutter, we get to decide what gets merged. I'll allow myself to be naively blunt since I just learned of this and I don't have a stake in this battle, but it seems like a nice little coup attempt that Google can squash by putting more resources into Flutter if they feel the pressure.
- kevincox 2y ago> can squash by putting more resources into Flutter So success?
- deleted 2y ago[deleted]
- augusto-moura 2y agoThis reminds me of io.js, which started as a fork of NodeJS but was eventually merged back upstream
- okwhateverdude 2y ago> nice little coup attempt that Google can squash I mean, Google could also punt and let Flutter die. They've killed greater investments for less.
- madeofpalk 2y agoWhat are some examples of good 'impossible to tell' UIs built with flutter on desktop or web?
- flawn 2y agoGoogle Wallet & Google Classroom
- chrismorgan 2y ago> Google Wallet Do you mean https://wallet.google/ https://wallet.google/, which says “only available on Android”? Your parent comment asked for “on desktop or web”.
- divan 2y agoMy comment was related to mobile apps. Web apps built on Flutter definitely can be distinguished. The thing is, with web apps, people have developed feelings for the "nativeness" - because browsers make a lot of UI choices for them. A typical example is a selection of the text. Because web apps are built using XML-based typesetting language from 80-s, everything is selectable by default. No matter how many layers of abstraction you put on top of that hackish foundation, you are still running it in the program (browser) designed to show text. So you can select buttons, navigation controls, images, sound players, etc. And it feels very native to web users. But when you actually think about it, it's an insanely stupid UI choice that neither of proper UI frameworks would even consider. Sure, you can "opt-out" with recent CSS controls for selection, but it's again, a hack - the default choice of "everything is selectable" is made by default for you by the browser. What does it even mean - select button widget? Why would you enable this complicated selection functionality for your UI that allows users to select navigation buttons with a blue selection box? Of course, if your app needs this functionality - you can add it. But otherwise, it would be labeled as a very stupid UI choice. Yet, feels native to web. Another example is zooming. Because UI apps written in web stack can't completely hide the fact that what they are doing is essentially trying to morph text primitives into complicated UI widgets (makes sense for 2024, right?), and the browser is essentially a text viewer, everything is zoomable and feels "native" to be able to zoom a web app. And yet, this rarely works as intended. In any other UI framework, making zoom functionality requires thinking about what and how you want to zoom and why. OS text size preferences are well handled by flutter, but sometimes you do want to add your own zoom functionality. In web though you just blindly zoom everything, often blowing off the layouts and that feels very "native" to web. My point is, that I don't think UI frameworks should try to match the nativeness of web, especially when they start targeting the wasm platform. These couple of decades of proliferation of web frameworks built on top of HTML/JS/CSS should just wane in history as a dark period of software engineering.
- awinter-py 2y agoit's possible to tell
- chipdart 2y ago> Flutter is the best thing that happened to UI development since Qt. Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell. Electron-based apps are also everywhere and they are through and through bad and a step backward. I would take caution to not do appeals to authority. I would extend this assertion over any javascript-on-a-webview-based GUI framework. Awful concept from start to finish. The fact that you failed to give any specifics to support your superlatives leads to suspect that the comparison with Electron is well suited.
- divan 2y agoYou are right, sheer popularity is not the argument for the quality of the framework. I wrote those two sentences separately for different purposes (the second was more of a reflection of other comments in the thread. I should've put it in a separate paragraph or elaborated more.
- zigzag312 2y agoNot OP, but what makes Flutter good IMO is drawing directly to native canvas, a very good hot reload implementation and AOT compilation. There are three ways cross-platform UI frameworks draw UI. 1) wrap platform controls, 2) use webview or 3) use low-level graphics API. Option 1 has to design controls to cater for the lowest common denominator. And there is a higher chance that an OS update might break things that in options 2 or 3. Being based on wildly different APIs (for each platform) increases complexity of creating and maintaining custom controls. Option 2 has to render UI through a high-level declarative language made for documents. Option 3 uses same APIs as native UI frameworks use. It's basically alternative implementation of an UI framework. Downside is that it has it's own look and feel, which is mostly an issue, if native UI framework is more polished. Flutter, being option 3, is more similar to a game engine, than to Electron. Low-level graphic APIs maintain good backwards compatibility, so OS updates don't affect the framework much. Less maintenance is needed. Good hot reload makes use of XML unnecessary and allows to declare UI in an actual, more powerful programming language. Overall, this removes another layer of complexity. (MS take a hint) AOT compilation enables fast startup times and less pauses. Which is good as end users are opening and closing applications all the time.
- poulpy123 2y ago> Flutter is the best thing that happened to UI development since Qt. Which programming languages have a good developer experience with flutter beside dart ?
- rdsnsca 2y agoNone, Flutter is dart only.
- dominicrose 2y agoAfter using Typescript and React, building a front-end with Flutter is boring, as are other Google frameworks (Angular, GWT). Maybe if you've never worked with TS/React and more generally HTML/JS/CSS, then it may be OK for some use-cases.
- thiht 2y ago> Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell I know I use exactly one and it sucks. It’s all janky and weird compared to the rest of the system.