6 ms·
The web had this before briefly. Back in the 90s and 00s, some people just wanted to use Flash. They treated the web browser like it was just a way to run execu
by JimDabell 2y ago
The web had this before briefly. Back in the 90s and 00s, some people just wanted to use Flash. They treated the web browser like it was just a way to run executables in a window.
Nothing worked right. Bookmarks, search engines, command-line tools, user preferences for font size, user scripts, view source, right-click menus, ad blockers, auto-translations, user stylesheets, assistive tools, bookmarklets, deep links… you name it. The more conscientious developers tried to reinvent some of this stuff on top of their own system, but it never worked quite right.
One of the main strengths of the architecture of the WWW is that it isn’t merely a mechanism to ship executable code. It uses the Principle of Least Power, which ensures that you don’t have to execute code to understand what’s on the page. And a huge proportion of the utility of the web is derived from that principle.
https://www.w3.org/DesignIssues/Principles.html#PLP https://www.w3.org/DesignIssues/Principles.html#PLP
If you only see the web as a way to ship no-install executables to people, you’re missing out on basically everything that makes the web what it is.
- tabinno 2y agoThing is - it’s even worse when people sit down and create actual real alternatives to desktop apps in a document distribution system. For apps, Canvas is the solution. For pages - DOM.
- nmfisher 2y agoThis is exactly how Flutter (now) works on web - the browser loads a JS/WASM blob, and your app renders everything to a canvas - and you're right, almost everything you mention is problematic. There is a time and a place for that paradigm, but it's niche. The lack of SEO alone is usually enough to stop it in its tracks.
- deleted 2y ago[deleted]
- chrismorgan 2y agoFlutter even had a DOM renderer which should in theory have fixed approximately all the issues (I don’t know for sure, I never knowingly encountered anything using it), but they’ve killed it off fairly recently, doubling down on the fundamentally unfixable direction that is the pure-canvas approach.
- brabel 2y agoThey still seem to have something, from this page: https://docs.flutter.dev/ui/accessibility-and-internationalization/accessibility https://docs.flutter.dev/ui/accessibility-and-internationali... * Inspect the HTML tree containing the ARIA attributes generated by Flutter. Wouldn't that help with SEO as well?
- chrismorgan 2y agoThat gives you a distinct accessibility tree in the DOM, which is kinda dumb as an approach. One of the reasons for going pure-canvas on the web was supposed to be performance (I don’t think it was ever true, though—only if comparing with a bad DOM implementation), and if you have to enable this accessibility DOM, you’re guaranteeing you’re doing double work. And no, on the web you can’t just do it when you need it: you can’t poll if it’s needed. All you can do in that case is to present screen reader users with a “this page is currently empty, press this button to unbreak it” button. (Aside: I’ve seen that done once. And the button was broken.) But the problems we’re talking about are far broader than “does my screen reader work”. Do my links work properly—Ctrl+Click, middle-click, long press, hover? (This one is fixable with only mild compromise. Those that follow are not.) Does my text render correctly? Can I select it and use my browser’s context menu or other similar tools? Does content scroll properly, at correct rates, with correct inertia, without jank or at least a frame’s latency? It’s these sorts of things that Flutter’s pure-canvas approach cannot fix, and they affect, in smaller ways, a lot more people. I’ve written more specifically about the problems here on HN quite a few times. Search and you’ll find ’em. I really should get down to writing a detailed article about it all at some point… it’s been quite a few years.
- _bent 2y agoNo, performance and fidelity are definitely better with the canvas renderers, especially skwasm. Flutter is very inspired by React, but instead of React which does tree diffing to minimize rebuilds, Flutter tries to make rebuilds as cheap as possible instead - for example through its single pass layout algorithm. The issue is that this doesn't map well to the DOM. You can't rebuild cheaply on the DOM because you'd be constantly updating the DOM. And you don't profit from your simpler layout, because you have to implement it in JavaScript and use absolute positioning on all DOM Elements to lay them out. I do agree that this all absolutely sucks for websites, but if you're building an App that is supposed to run in the browser like Rive or Figma, where you're going to override all click handlers anyways, or where where what you're rendering would be too much for the DOM, Flutter Web is pretty ok.
- noduerme 2y agoHasn't SEO been dead for like 10 years? It's not as if there's a search engine you can get to the first page on without paying, so why waste ad dollars on stuffing SEO garbage in your page and chasing the algorithm when you can just buy ads, if that's what you need? And does anyone find anything anymore by doing generic web searches anyway?
- taikahessu 2y agoIt sucks if you are non-profit working on subjects like drug abuse. Or anything that is considered "difficult" for our ad-overlords and thus all the relevant keywords are against ToS.
- skulk 2y agoNot sure what nonprofits you're referring to, but most drug searches are SEO spammed with godawful websites that contain tons of misinformation while reputable sources that actually promote harm reduction like erowid are pushed down.
- LelouBil 2y agoI was excited about Compose Multiplatform Web too, until I realized it also does this : everything in a canvas
- torginus 2y agoI'm ignorant on this - but are there browser APIs that make it possible for the dev to integrate testing and accessibility tools, such as screen readers? If not, this sounds like a major oversight, and basically kills accessibility dead in these software and makes testing pretty painful.
- youngtaff 2y agoYes, browsers expose APIs to accessibility tools
- Narretz 2y agoWow, they still render to canvas? That's terrible. Just looked at this website: https://payamzahedi.com/toastification/ https://payamzahedi.com/toastification/ Feels janky just when scrolling. This is supposed to be the future? Last time I used a flutter app they didn't even update the url for different screens.
- johnecheck 2y agoThe goal isn't the wholesale replacement of html webpages. I have a traditional website for SEO and such that links to my Flutter game app on the same domain. It's exactly what the parent described: a way to ship executable code. A lot of features supported for websites don't work, sure. But that's not the point. It's a single build that practically any user on the planet can execute without needing to install something. The idea that an app distribution method needs to natively support every feature and analysis method that works for a website is nonsense. You don't expect all that from every app on the play store, for instance. The browser isn't just for visiting html websites anymore. It's also the app distribution method with the widest reach. On your specific complaints: it's easy to make your screens have different urls. An app that doesn't is built by a novice or lazy developer. Skipping frames while scrolling is a fair complaint. In my experience, flutter is performant enough but always just a little short of the performance I'd like. Definitely an area that could use improvement.
- kevmoo1 2y agoIt's using a Flutter web build that's over 2 years old. We've gotten a LOT better. Context: I'm a product manager on the team.
- a2128 2y agoI'm shocked every time I use a Flutter web app. Not even one of the highest-end desktop GPUs on the market is enough to animate a dark mode toggle at more than a choppy 2fps. In one app with a login page, my password manager fills out the password into the username field, though I'm surprised it's able to fill anything at all. You'll be lucky if you can even select text on the screen or copy a link, though I know some websites would love if they can prevent you from doing that at a technical level. Text editing feels sluggish and doesn't behave the same way as standard web text fields when using advanced keyboard controls. I'm thankful that technologies like Flutter never took off on the web, and I hope they never will.
- jauntywundrkind 2y agoCoopting the web as a low level platform, to be bent into blast utterly non web stuff feels like a gross misdeed to me, that directly violated rfc8890 "the internet is for end users". Flutter or somethint similar maybe possibly perhaps might some day conceivably eventually rebuild enough platform that the major gaps and faults and chasms of it might be less terribly ruinous, but users will never have anywhere near as much agency. User scripting will always be at the extent the developer's enable it. Its terrible to think of the web denigrated to being as closed foreign and black box as regular apps are, would set back human conputing's one little tenous bridge of progress back immeasurably. None the less, theres folks who believe the developer experience trumps all other concerns, and are still full steam ahead on canvas based systems. One of those people is Ian Hixie, former editor of the HTML specification, who authored what is sort of the manifesto of the canvas-based effort, Towards a Modern Stack, https://news.ycombinator.com/item?id=34612696 https://news.ycombinator.com/item?id=34612696 https://docs.google.com/document/d/1peUSMsvFGvqD5yKh3GprskLC3KVdAlLGOsK6gFoEOD0/ https://docs.google.com/document/d/1peUSMsvFGvqD5yKh3GprskLC... Plz plz no.
- Apocryphon 2y agoSounds like his viewpoint is someone burned out by all of his prior work coming to seeming naught https://news.ycombinator.com/item?id=34622514 https://news.ycombinator.com/item?id=34622514
- pjmlp 2y agoWe have this back, thanks to WebGL/WebGPU/WebAssembly I can have all my beloved plugins back. https://opensilver.net https://opensilver.net https://cheerpj.com/ https://cheerpj.com/ https://cheerpj.com/cheerpj-applet-runner/ https://cheerpj.com/cheerpj-applet-runner/ https://leaningtech.com/cheerpx-for-flash/ https://leaningtech.com/cheerpx-for-flash/ And on top, https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blaz... https://flutter.dev/multi-platform/web https://flutter.dev/multi-platform/web https://unity.com/solutions/web https://unity.com/solutions/web https://playcanvas.com/ https://playcanvas.com/ This is the only place where I am actually happy about WebAssembly's existence.
- simion314 2y agowww should be split in documents and apps it is horrible that we mutilate html, css and js to make a document language work for application. And I bet competent developers can create a GUI framework that is more accessible then the div soup that the SPAs use today.
- zfg 2y ago> The web had this before briefly. Back in the 90s and 00s, some people just wanted to use Flash. WebAssembly is different. WebAssembly brings every language to the web. Flash didn't. WebAssembly can render to canvas and enable applications that compile to desktop, mobile, and the web. UI libraries like Avalonia do this: https://avaloniaui.net/ https://avaloniaui.net/ For example, here's C# implementation of Visual Basic 6 compiled to WebAssembly https://bandysc.github.io/AvaloniaVisualBasic6/ https://bandysc.github.io/AvaloniaVisualBasic6/ and source https://github.com/BAndysc/AvaloniaVisualBasic6 https://github.com/BAndysc/AvaloniaVisualBasic6 And a Solitaire demo https://solitaire.xaml.live/ https://solitaire.xaml.live/ and source https://github.com/AvaloniaUI/Solitaire https://github.com/AvaloniaUI/Solitaire But WebAssembly applications can also manipulate the DOM like JavaScript. Example frameworks that do this: - https://www.leptos.dev/ https://www.leptos.dev/ - https://dioxuslabs.com/ https://dioxuslabs.com/ - https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blaz... DOM access goes via JavaScript glue code for now. Eventually WebAssembly will get direct DOM access. You can decide if you're making more of an application or more of a webpage. If you're making more of an application then why not just render to canvas with WebAssembly? And if you're making more of a webpage then why not have WebAssembly manipulate the DOM instead of JavaScript? And for non-web uses, WebAssembly can be used in a plugin framework such as Extism: https://extism.org/ https://extism.org/
- incrudible 2y ago…and yet we still do not have the streamlined authoring experience we had with Flash. The stuff you show is just a crappier way to write boring GUIs with some other language for which you need to download the runtime. Flash let many more people create far more fun stuff than any Web standard ever did. People forget that Flash also brought C/C++ to the web at some point, but besides some flashy demos, nobody really cared. The problem is that all this choice creates fragmentation, you have dozens of platforms within a platform on top of another platform. Web APIs and Javascript may suck in many ways, but at least the are a common denominator.
- zfg 2y ago> and yet we still do not have the streamlined authoring experience we had with Flash. Uno for example has a visual designer: https://platform.uno/hot-design/ https://platform.uno/hot-design/ > The problem is that all this choice creates fragmentation That's not a problem. Build things the way you want in the language you want.
- noduerme 2y agoI'm not sure why it can't be both. Given the current walled environment of app stores, web pages are a much better way to ship apps across platforms. That doesn't have to detract from the native function of www. Should you make your client's website an inaccessible blob of interpreted bytecode in 2025? Probably not. But can you embed an awesome game inside it with some weird custom UI? Why not!
- rad_gruchalski 2y ago> Nothing worked right. One thing worked right: the app looked the same and acted the same everywhere where it could run.
- cmrdporcupine 2y agoWHich was... only windows computers since Flash barely worked on Macs or Linux, and never properly made it to mobile, where it was also a complete battery drain when it did in fact do things... sometimes.
- dakom 2y agoEh.. lots of projects targeted mobile app stores by authoring in Flash and using the GPU accelerated stuff. Starling was a semi-blessed framework. Worked perfectly well, no battery drain. Lots of "native" apps were authored that way (and still are, you see the same approach with Unity etc.) Browser plugins could have been fixed to catch up, the VM itself wasn't the problem in terms of drain
- cmrdporcupine 2y agoNot my recollection at all. Adobe invested almost 0 effort in getting their runtime working on non-x86 platforms. It was pathetic, honestly, how many years passed before they had any kind of passable implementation there. Adobe Flex was interesting and not awful. The problem was the runtime. And the company behind it. Who remains awful.
- dakom 2y agoDo you remember Angry Birds? https://villekoskela.org/2012/02/15/angry-birds-facebook-released/ https://villekoskela.org/2012/02/15/angry-birds-facebook-rel...
- rad_gruchalski 2y agoI have different memories from before 2012. Flex apps I built were used on all 3 and worked flawlessly in AIR. Looked and behaved exactly the same everywhere. Indeed, though, barely made to mobile. But Nokia N95 was pretty cool.
- eadmund 2y agoThe difference between now and then is that people back then wanted bookmarks, search engines, CLIs, user preferences, user scripts, view source, right-click menus, ad blockers, auto-translations, user stylesheets, assistive tools, bookmarklets, deep links and so forth. While some of us still do, the great mass of web users now just want TV on their smartphones: they want an attention-consumption device to distract them from real life. Flash never took over because a lot of us then wanted our computers to work for us; Javascript and the read-only web are succeeding because so many now don’t mind being farmed for their attention.
- regularjack 2y agoPeople still want all those things.
- apatheticonion 2y agoI launch Chrome with a bunch of flags to disable security and have a bunch of client scripts to override websites. I'm this close from creating my own browser based on Chromium
- deleted 2y ago[deleted]
- lbhdc 2y agoCan you share more about your setup?
- Apocryphon 2y agoAjax, not even once
- keybored 2y agoThis is the same tale from technologists about how all the other Web users are just drooling morons who want to connect their brain stem directly to the Matrix. With the only relevance being the rose colored glasses of when the Web wasn’t (apparently) used by the Untouchables. Web technology: made either by and for tech. enthusiasts or techies who hate your guts.
- deleted 2y ago[deleted]
- dakom 2y agoWhile some of this is true, some of it is not (deep links worked fine, there was a brief time where hidden html was encouraged and worked just as well for search engines to pick up, etc.) More to the point though- Flash didn't shine as a regular website thing (Adobe people used Dreamweaver for that, if anything). It was a game/application development tool. Most of the time you didn't need any of these web-friendly things, same way you'd expect every game to have a different menu system. It was an awesome time for innovation and creative thinking. Not everything is a flex box. I miss those days
- afavour 2y agoI agree with everything you said but at the back of my mind is the knowledge that the previous Flash ecosystem was capable of an experience we still don’t see today, despite its many downsides. I don’t want public facing web sites to use stuff like this, or Flutter. But some intranet internal tool… eh, fine.