10 ms·
We're all complaining about how js is a bad language, tooling is a mess, and how the web is fundamentally built for documents and makes it hard to create app-li
by yagodragon 6y ago
We're all complaining about how js is a bad language, tooling is a mess, and how the web is fundamentally built for documents and makes it hard to create app-like experiences. Now, Google comes and creates a whole new UI toolkit from scratch, couples it with a very beautiful SDK and component framework and offers a far better programming language than js could ever be but we're still nagging. I was also pretty disappointed with the demo at flutterfolio.com that is supposed to show how great Flutter 2.0 for the web is. It's not that good but it's gonna get there eventually, given the hype around wasm and <canvas> technologies. Not to mention that Flutter is already better and easier to use than the existing native tools for both Android and iOS. I believe Flutter is an extremely ambitious project and I appreciate that Google is really trying to give an answer to the problem of cross-platform UI development.
- blacktriangle 6y agoWe're nagging because the apps suck and stick out like a sore thumb. Maybe Flutter will be the one to get there and be the holy grail of cross platform UI development, but the developer community has been burned by this promise so many times, we're going to have to see the final product before getting excited. Just because a project is ambitious doesn't mean we should all jump on board, particularly when similar projects have crashed and burned, and there's really nothing stand-out about Flutter that separates it from prior efforts.
- throwaway123x2 6y agoOof remember when PhoneGap was the next big thing? RIP
- TheGuyWhoCodes 6y agoI remember big corps betting on phonegap and sencha for mobile 7 years ago. I also remember big corps betting on GWT. Those were painful days...
- dmitriid 6y agoFunnily enough, Sencha still can't be reliably recreated by any lib/framework/browser built-ins du jour (without sinking as much effort as Sencha did): https://examples.sencha.com/extjs/7.3.0/examples/kitchensink/?modern#all https://examples.sencha.com/extjs/7.3.0/examples/kitchensink...
- cztomsik 6y agotrue, just like wysiwyg we have for react/vue/angular is still joke when compared to delphi/visual studio
- The_rationalist 6y agoPure nonsense, phonegap has been renamed Cordova and is widely used. The Electron of smartphones is Ionic which is a sexy and performant superset of Cordova. PhoneGap (Cordova + Ionic marketshare) has a bigger marketshare than flutter and react native! Source: https://www.appbrain.com/stats/libraries/tag/app-framework/android-app-frameworks https://www.appbrain.com/stats/libraries/tag/app-framework/a... Ionic is a gift and it will only get more widespread, the myth that chromium is slow is increasingly dying. Also, did you notice the irony/hypocrisy that flutter is using the rendering engine made by chrome developers for Chrome developers ?
- raihansaputra 6y agoIonic has released Capacitor as the successor for Cordova. And it's still compatible with Cordova plugins so all the work from Cordova days is not wasted. Ionic is definitely a gift.
- auganov 6y agoTime is on webview apps' side. IMO cordova/phonegap got too big too early and the industry still has a revulsion that may not be justified anymore. I don't think they will ever come to dominate, but I do think hybrids will eventually go back to using webviews. If groundbreaking UX is your core competency you need native. Hybrids get you neither the best feel nor the best dev leverage. Hybrids are selling the exact same dream phonegap has. But they let developers distance themselves from the bad rep and claim they're doing something different. Alternatively, at the other end, they get developers to build essentially native apps while pretending to save a lot of time.
- hanniabu 6y agoI don't understand why more resources aren't being put into Qt and making that easier to use or building a more "web-developer-friendly" abstraction layer on top.
- qbasic_forever 6y agoIsn't the licensing for Qt a very curious and weird quagmire? Maybe it's better these days but I remember about 10 years ago there was a weird divide and unanswered questions about if you could really take a bet on using Qt and not be violating GPL.
- heavyset_go 6y agoIt's better these days. For desktop application development, Qt is available under the LGPL and the Qt commercial license. Qt for WebAssembly is available under the GPL3 and the Qt commercial license, though.
- lmm 6y agoNo. 10 years ago it was 100% fine. About 25 years ago there was a licensing issue, and the Gnome project talks about it as their reason to exist to this day (which amounts to spreading FUD at this point, IMO).
- heavyset_go 6y agoQt's QML + QtQuick follow the declarative and reactive programming paradigms and use JavaScript, and were released before React existed.
- ognarb 6y agoAnd it has a very nice developer experience :)
- danShumway 6y agoI don't know if they've changed their approach over the past year, but the last time I looked at Qt demos for the web, I was solidly unimpressed. At the time, they were making almost all of the same mistakes that Flutter is, and the devs I talked to seemed to be of the opinion that those problems wouldn't be fixed until browsers started adding brand new capabilities specifically for them. Looking now at the demos at https://www.qt.io/qt-examples-for-webassembly https://www.qt.io/qt-examples-for-webassembly, a lot of the same problems are jumping out at me. A complete lack of accessibility features, poor handling of scroll events, large load times, unfocusable fields, lack of keyboard controls, etc... Halfway through playing with their pizza app, the page just froze and stopped responding to any clicks at all. Maybe those demos are outdated? Blazor and Rust are showing a lot of promise here, but from what I know about Qt I'm much less optimistic, because Qt is used to handling everything about rendering itself -- and as Flutter is showing that's just not a good approach to building web GUI frameworks. But (again, purely from what I've seen) trying to layer on a system where Qt is actually interacting with the DOM seems like it would require a somewhat difficult shift in its architecture. Maybe I'm misunderstanding the problem though.
- drewda 6y agoOn this note, I have 60% fond memories of Appcelerator Titanium and 40% frustrating memories :)
- JamesSwift 6y agoMan those are some rosy glasses you got. I've got 20% fond memories, 80% frustrating memories : )
- mattschmulen 6y agoYup, really they had the right idea in that it was native components that were hoisted by JavaScript binding... it really lost steam because it became easier to just build native Swift (and later kotlin android). It was a solid play at the problem in it’s time. Note: I worked at Appcelerator in the “gogo” years and it was great, and they/we almost made it happen in a real way.
- deleted 6y ago[deleted]
- stephenhuey 6y agoExactly - too often we see developers spending vast amounts of time on stuff that's "better" but by what metric? Often, it's better only by standards that matter to the developers, not the business paying the bills. In my experience, Flutter makes it very fast to ship a decent solution.
- lostmsu 6y agoFlutter does not offer enough to justify learning new programming language.
- pier25 6y agoDart is extremely easy to pick up if you've written in any C style language. Someone in our team had a small Android TV app working in 2-3 days with WebSockets, web views, some animations, etc.
- blacktriangle 6y agoIt's never about the language, most any language is easy to pick up. However picking up a whole new ecosystem with its associated dev tools, build tools, packaging, and different libraries is where the time consuming portion of new languages come in.
- H1Supreme 6y agoExactly. When I scanned Dart's language spec, it looked just like any other C derived language. In terms of complexity, Flutter/Dart is no different than Android/Java. When I started writing Android apps, learning Java was the absolute easiest part of that process.
- oblio 6y agoSyntax, semantics, code organization and best practices, libraries, frameworks, debugging and debuggers, IDE support (preferably multiple IDEs for multiple platforms), LSP support, linters, profilers, disassemblers, dependency license checkers, dependency vulnerability scanners, package managers, package repository with support for private repos and proxying/mirroring, should I go on and on and on? Your toy app takes 2 days to create and then you (or worse, someone else) have to support the crummy Visual Basic/PHP/Javascript/Mongo/ColdFusion/insert easy to use crappy tech here, forever.
- Dylan16807 6y ago
- ttt0 6y agoSo now every website will require enabled WebAssembly to run god knows what code and I will have to install an anti-virus for my browser? No thanks. JS might be a bad language, but it's even worse in how it's abused with frameworks, tracking, etc for no good reason. edit: funny how I can discuss extremely controversial political topics here and never have any of my comments killed, but having a negative opinion about wasm and JS frameworks is just a step too far lol.
- ec109685 6y agoWASM is still stuck within a highly protected sandbox, so you don't need to run anti-virus software for your browser.
- ttt0 6y agoBitcoin miners?
- hnuser123456 6y agobetter than rootkits
- leppr 6y ago...that run only when the tab is loaded. Non-issue.
- dagmx 6y agoWasm can't do anything JS couldn't do already.
- ttt0 6y agoWhat JS can do is already bad enough.
- yjbanov 6y agoThere are a few things that WASM can do that JS can't (at least not now): - Memory management without GC - Unboxed data structures - SIMD - Shared-memory multi-threading - Precompiled snapshots (does not need to be recompiled on page reload)
- lordgroff 6y agoMaybe it's just me but I don't remotely think JS is a bad language since es6. Tooling is another story entirely.
- qbasic_forever 6y agoExtremely same feeling here. Ditching IE11 support is a total game-change for the web. ES module imports just work and you don't have to go down a complex bundler rabbit-hole. Template literals make constructing HTML inside JS components a breeze. And if you do reach for a bundler the modern ones like snowpack and vite make the experience incredible with instant hot module reload on change--the feedback loop for development is like nothing I've ever experienced.
- blowski 6y agoThe problem with JS is not the tooling per se but the constant "upgrades" for the tools that exist. Sure, this week's hot new thing is Vite, but by this time next year it will be out of date with some other thing we're all supposed to use. In projects from the last 10 years, I see Gulp, Grunt, Webpack, Browserify, and now Vite - all doing mostly the same thing in different ways, with different config files.
- qbasic_forever 6y agoYou don't have to use any tools, plain old HTML, CSS and javascript still work just like they did 25 years ago. Tools come and go, they serve a purpose like writing code in a more futuristic style and compiling it down to a broader browser support base. There will always be a treadmill like that in any language. Look at how C++ has evolved from its 90's roots to more modern C++11, 14, and 17 styles--each change also required more work for the tooling, compilers, build systems, etc. to learn. It's just in the C++ world there are far less people working on tools than in the web world.
- wishinghand 6y agoI know someone using Gulp today for a successful web site. They don't have any worries.
- mdoms 6y agoI just visited flutterfolio.com. The very first thing I tried to do is enter a username and Tab to the password field. But Tab just catapulted my input focus to the browser address bar. I mean, come on.
- mgkimsal 6y agoStrange - I didn't see that behaviour, then did on a reload, then didn't again on the next reload. ??
- lwansbrough 6y agoHaha I just read your comment, totally forgot about it, then tried to do the same thing and it happened to me too. Firefox.
- hnuser123456 6y agoworks on firefox
- ledak 6y agoIt strongly reminds of mid-2000s sites written in Flash
- bliteben 6y agoTo be fair there were some flash sites I’ve still never seen anything that equals. I think the way flash marketed to more designers and content creators was both what made it awesome and maybe its downfall.
- miohtama 6y agoIt is the same. But at least runtime, WebAssembly and canvas are open source and natively integrated to the browser. Less security holes, but the same UI integration problems. Good for games.
- ClawsOnPaws 6y agoI know I do almost nothing on HN but complain about accessibility, but it's really important to me because, well, that's how I uze my tech. And so far, sadly, Flutter hasn't impressed either with its previous versions. Edit boxes in particular were a major pain point, and things like you're describing were also less than optimal. I never knew where the focus was and what it was doing. With broken markup there was at least ways around it. But I'm scared of things that render on the canvas. Most browsers actually get this right and have support for these things that don't require ugly hacks if you use the DOM. And there is no real way to interface with assistive tech from JavaScript except through it. So you have to somehow still actually represent your apps UI in the Dom in some way.
- jaegerpicker 6y agoAre you a native mobile developer? I am (was I'm moving to ML/AI/Data engineering) and I don't think flutter is in any way easier or nicer than the native toolchains for mobile. Both Swift and Kotlin are better languages than Dart IMO, the IDE and tooling is far superior for both also. Flutter is faster but once to deploy a substandard quality of app for sure but matching the quality of a native app? That takes just as long in Flutter as building a native app in each tool chain. I've built apps in React Native, Flutter, Ionic, and Swift/Kotlin. I'd reach of Swift/Kotlin for developer experience, performance, and quality of app EVERY time.
- joe_fishfish 6y agoI am a native mobile developer, and I am presuming GP is most definitely not, because I completely agree with you.
- ksec 6y agoI have seen this a lot. Most of those people are Web Developers. They want their Web technology to move towards cross platform native apps. And are frustrated with people bashing or stopping this progress. On the other hand you have Native Apps developers, while equally being excited about Cross Platform UI and toolset have been burned more than enough. And this didn't even start with Smartphone. It goes back to earlier PC history with Java or even further. None of them were good enough. At the same time Native Apps developers dont understand why Web Dev or those who has Web Dev background now working on cross platform toolchain constantly push and produce the same thing years after years. You cant blame them for being skeptical.
- awesomepeter 6y agoIf you had to pick a multiplatform solution (for whatever reason) which one would you pick? I've been exploring this space a bit, and it's really hard to form an opinion on this.
- jaegerpicker 6y agoI've been in that situation 3 times, I choose React Native and Flutter each once. I was forced to use Ionic. I would NEVER use Ionic again, terrible experience and very difficult to get decent quality/performance. I like Flutter's technology much more. I like that it is natively compiled. I dislike that it has it's own UI toolkit. React Native with TypeScript is a highly productive environment but I LOATHED the developer experience and any code that had performance goals was way harder to be successful with, not impossible but the threading model that RN imposes (it doesn't really thread at all) was hard to make the UI snappy and crisp as it should be. I've played with Xamarin also since I was a .net dev for 10+ years (I'm old in the industry 25 years now) and the developer experience was actually pretty good but the compile times and the UI performance were not. Though that was not a production level app and I might have been able to make it work. tldr; If I HAD to do cross platform I'd use the following logic to choice one: If I have a team of react JS/TS devs: React Native else if I have a .net team: Xaramin else: Flutter Then I'd apply for a job writing native apps in Swift/Kotlin and run away ;)
- capableweb 6y ago> Now, Google comes and creates a whole new UI toolkit from scratch Worth remembering that this is not the first or even second attempt at this from Google. So I think people are fair when they are not just jumping along all happily as people have been burned before.
- qbasic_forever 6y agoHistory has shown us over and over again, always bet on the web. Sure you might not like JS as a language, you might find CSS confusing and full of warts, etc. but it's here and will be here 20, 50, and 100 years from now. We're not going to just sit up and throw away 25+ years of progress and history on the web overnight. Tech like java applets, flash, silverlight, etc. come and go like fads. Who knows if Google will even care about flutter in 5 years, let alone 25 years. A page that Tim Berners-Lee wrote 25+ years ago renders just fine in a browser today.
- dmitryminkovsky 6y ago> History has shown us over and over again, always bet on the web. This is a mantra on HN. But is it true? I don’t think it is if you’re trying to build a big product mainstream people will use. People want native apps. No one needs the apps to work in 25 years. The web is just part of the picture, an important part, but still just a part.
- qbasic_forever 6y agoThe same engine of HTML + JS has powered entire businesses and industries from $0 to billions and billions of dollars over 25 years. Amazon.com would not exist without web browsers, and its entire trillion dollar+ business is an enormous bet on the web. I would say there's zero danger of the web going away when folks like that (and many, many more... Google, Facebook, etc.) depend on the web for every microsecond of their existence.
- dmitryminkovsky 6y agoIf today FAANG had to choose: shut down your websites or shut down your native apps: which would it be? Which platform did Clubhouse build out first? Why?
- qbasic_forever 6y agoClubhouse is targeting the middle-class silicon valley market right now (quite literally, those are the only people who got invites early on), who of course are infatuated with apps and have the money for fancy phones, tablets, etc. It's smart marketing for them to go where their customers are right now. The web is for everyone--I can go to an internet cafe in a slum and browse and buy from the same Amazon.com as I can from inside a $15M mansion. It's a quantum leap in access to the world using the web.
- Waterluvian 6y agoHow many times has Google done this? And then gotten bored of their own work? JavaScript, with all its many many warts, is widely supported, incredibly popular, and not going anywhere. I'm not about to waste my limited weekend time learning Flutter 2, knowing it's going to be in the trash bin by 2023. I'd rather suffer through some more JS warts and get better at avoiding them.
- grayrest 6y ago> How many times has Google done this? And then gotten bored of their own work? Google's history on this sort of thing isn't good but this will be much more stable than their other offerings. Dart is the primary language of the ads (i.e. money making) side of Google and Flutter is their best shot at making the language relevant elsewhere. I'm still not in a hurry to learn it but I'd be very surprised if it's in the trash bin within 5 years.
- EvilEy3 6y ago> How many times has Google done this? And then gotten bored of their own work? They're still updating GWT, so I'm not sure what you me by that.
- nwienert 6y agoFlutters model really fundamentally isn’t there “right one”. It truly is the successor to Flash, but with Google behind it. But if you want to make apps that feel actually native on their platforms, React has it handily beat. It’s a better fundamental model, that even with a slower language and runtime feels better in the end by far.
- tmpz22 6y agoBecause Google is focused on language and tooling development, but forgot to create a killer app example with publicly available source code. Show us a minor Google property re-done in Flutter with code examples and people would flock to it. But. They. Won't.
- munificent 6y ago> forgot to create a killer app example with publicly available source code. Show us a minor Google property re-done in Flutter with code examples and people would flock to it. Can you think of a "minor Google property" that is open source?
- higerordermap 6y agoMaybe some android utility that doesn't need Google integration.. Let's say calculator app from next android version?
- munificent 6y agoI mean... if we ported Android Calculator to Flutter, would that really impress or convert anyone?
- tmpz22 6y agoIts a hard resource-intensive problem to dogfood your own OSS at a company as large and diverse as Google. But hard problems haven't stopped Google in the past. What you're trying to create is the same spark in your users as PHP and React did to the web. The "oh wow I could do...." that while technically possible before the product existed, is completely re-framed by relatively minor improvements to the DX. You want to inspire an entire generation that may have passed on mobile and cross platform app development due to the verbosity and pitfalls of the iOS and Android ecosystems. I think a killer app example is the ticket to do this. It may not be the only way, you could blow a huge marketing budget, you could convince another large tech company to do it, but doing it yourself is probably the quickest (or only way) to get it done.
- reggieband 6y ago> couples it with a very beautiful SDK and component framework I would not call the flutter SDK and component framework "beautiful" nor would I ever add the adjective "very". I have actually found it to be very verbose compared to alternatives I've used in the past. In some ways I suggest it is over engineered. > offers a far better programming language than js could ever be Dart is a bit of an odd duck language to me. I think of interesting ideas like the cascade notation (using .. to do sequences of operations on the same object). Perhaps it is due to having worked a lot in Typescript and having my brain molded to code that fits that shape but Dart feels clunky in comparison. I can't put my finger on why, but defining and instantiating classes feels so heavy compared to the functional type code most Typescript seems to become. In Dart, I just feel like I'm creating massively indented component definitions with tons of properties and nested classes. Maybe I'm just finally accepting OOP and deep type hierarchies are things I want to leave to my past. I feel I can do 99% of what those things did with Algebraic types and functional composition. Nowadays I prefer that style and going back to heavy OOP feels bad. With the dominance of classes, massive type hierarchies and quirky syntax - I'd just prefer to be working with a more react-ish framework in a language like Typescript. My feeling is Dart is a step in the wrong direction.
- wruza 6y agoCan’t speak for others, but I still want a proper set of primitives and not yet another rightest-way-to-do-it sdk whose examples stutter on top hardware and will be great tomorrow. Time to go sleep I guess, will check it in 8 hours. All I want is untangling of the mess a css boxing model is, not just some buttons on canvas. I wrote gtk-flavoured widget drawing libs for few times in Lua+cairo ten years ago and these ran smoothly on a hardware than couldn’t even boot an OS today, except some rare stop the world gc issues Lua had back then. It was no big deal, and strange (not really) that Google Itself couldn’t beat that score.
- lhorie 6y ago> It's not that good but it's gonna get there eventually, given the hype around wasm and <canvas> technologies Is it though? Canvas is basically invisible for anything that doesn't have functioning eyeballs (which include not only screen readers, but also mundane things like your browser's ctrl+f functionality, google's crawler and siri). You know how people complain about some SPAs' back buttons and scrolling being terrible? I feel like this "next gen" tech is just gonna be more of the same excellent-in-some-aspect-but-completely-subpar-in-others stuff.
- golergka 6y agoFWIW, modern Typescript is the best mainstream-ish language I've used in production. Dart is decent, but I don't think it's that good.
- hi_mom 6y agoThe only thing I really dislike about it is the fact that in the end, it’s still just a layer on top of JavaScript, so you lose all types at runtime and stuff like object literals and classes are still not “complete” in my eyes. Otherwise it’s pretty good. I’d also like beter arrow syntax, something where you can properly write shorthand like in Scala for example.
- Razengan 6y ago> Not to mention that Flutter is already better and easier to use than the existing native tools for both Android and iOS. Flutter is not better or easier than SwiftUI. Especially in accessibility or native performance.
- draw_down 6y agoI like js, warts and all. Particularly its statically typed variants.
- EvilEy3 6y ago> Not to mention that Flutter is already better and easier to use than the existing native tools for both Android and iOS. No, it's not. It's easier to start with, which is infinitely different from "easier to use". Once you get of beginners phase you see that native toolkits are equipped with battle tested solutions unlike Flutter. With SwiftUI and Compose there's literally no upsides to Flutter except portability and even that Compose has potential to snatch.
- NOGDP 6y ago> Now, Google comes and creates a whole new UI toolkit from scratch, couples it with a very beautiful SDK and component framework and offers a far better programming language than js could ever be but we're still nagging All of these things, more or less, already exist in great variety in the JS ecosystem (angular, react, vue, redux, webpack, etc.). Many people have also already adopted other languages such as TypeScript, which is easier to learn for someone coming from JS, and superior to Dart imo.