Flutter, Dart, and WASM-GC: A new model for Web applications [video]
youtube.com
youtube.com
The Flutter crew is in a weird position because they believe in themselves as a strong cross platform system for enabling app developers to get their "pixel perfect" options. But stripping out all extensibility, hypermedia, making the web as bad as regular native apps is a huge downgrade for users. CanvasKit & all just doesn't fit with the web, or interoperability, or protocols, or connectivity. It's a small micosm, a bastion/exploit for "native apps" to hammer their way into the web.
At least this talk is a little more general. The idea of alloying the web is farrrr more interesting to me.
- actually "web pages" (with hyperlinked content) - actual apps made in web because of the simplicity of distribution (no need to be approved by stores, no need to ask/force users to upgrade etc).
This simplicity of distribution, I would argue, is the major reason why many developers (including me) regularly chosing inferior technology for their products. Release the same app as native for 5 platforms (iOS, Android, Linux, MacOS, Windows) is just too complicated compared with web app experience.
So "web pages" are fine to stick to HTML/CSS/whatever. But for "apps" we need a solution and Flutter is already amazing here, but native WASM variant would be a completely new experience.
Not sure I got the "alloying" part correctly, but Flutter already has some sick interoperability with "web stack", so Flutter code can be embeeded into the regular "web app/page" and interact with it.
This idea that we can divide the web into "just documents" and everything else- all the apps- and ignore all the good pro-user virtues of the web, simply because it's alluring & industrially expedient for developers to treat the web like a low level target, while ignoring the entire higher level stack & subverting user capabilities,... it shakes me. It feels unprincipled & amoral.
The web won so hard that it's now subject to being body's snatched by much less capable much less competent un-web native apps. Here ends user freedom, the user-agent is dead, killed by Google, R.I.P.
But it's true. Take a Unreal's Metahuman web tool, for example. There is no way they can deliver experience they won on a current web stack, regardless of how many layers of abstractions they put over DOM or how many WebGL programmers they hire. It's just fundamentally an app that can draw pixels, bunch of them, and make it efficiently. Web stack designed for hypertext documents simply don't have capacity and competency to deliver that.
So what they do? They seem to spin up VM on their side, run native app, establish video stream to the VM's screen and simulate user interface in the web. I honestly don't know how you can call native apps "much less capable and much less competent" than web apps. If web apps so much more capable, why people with tons of resources end up with such ugly hacks instead of using full capacity and competence of web stack to deliver sick UI experience for their apps?
> The web won so hard
To win over something you have to have a competition.
I've heard arguments like this from web advocates for many many years and I've never been able to fully wrap my head around them. Maybe I'm misreading you, but it sounds like you're saying two things at the same time:
1. The web won because it's so amazing for users and has all of these value virtues like standards, interoperability, etc.
2. The web is incredibly fragile and can easily be slain by some other more proprietary technology.
Are these not in conflict? Is the web so amazing and resilient that any competition is doomed to failure, so 2 shouldn't be a worry? Or is the web so flawed and lacking in user value that 2 should be considered a feature and not a bug?
I'm reminded of Gilmore's, "The Net interprets censorship as damage and routes around it." If technology like Flutter or other "less-webby" things (or Java applets, or Flash, or Shockwave, or whatever) really are used hostile, then I expect users would simply route around them.
I can see that there may be a principle-agent problem in effect: End users would prefer apps built on open web standards, but app developers end up using non-web tech because of misaligned incentives. That's valid. But I generally try to remain optimistic that most developers do want to make things their users like.
There is maybe an argument that users will be happy to use non-web standards tech to their long term detrimeent because they don't know any better, but I personally ascribe zero value to that argument. It just reads to me as pure elitism.
I'd characterize the threat more as slow creeping rot. Small losses.
The switch of Google Docs from HTML to a big dumb Canvas of pixels for instance did not kill the web, nor the product. Many users didn't notice or saw improvements even. But the advanced users & the frontier of possibility all had the door quickly slammed shut.
The web is soft & malleable. Most applications are hard & monolithic & unyielding. Most web systems have a good degree of softness, of being interesting computing matter end users have some user-agency over, and that's hard to undo (short of subverting the page into a big Canvas). Most apps are hard limited to what is afforded the user, and there are almost no fundamental computing lessons or experiences users gain over time by using apps. (Once upon a time files were at least a common primitive but most data has effervesced into the cloud.)
The soft malleable & open is the darkest fucking shit to take away. I don't think it indicates a weakness of the web. I think it's an example of older more conventional more programmer-driven centralized-control systems being able to sneak in & subvert the good, steal the light that's been made that illuminates computing & send us back into the dark. It's a paradigmatic war, for who computing is for: is it for developers to budding things that consumers consume? Or is computing itself a medium that deserves to be observable, learnable, participatory, an actual part of culture? Do the ends entirely justify the means, is the only thing that matters what we ship today? If we do start rebuilding legacy app models again, what else can we do to foster a better more open relationship between technology and society?
> But I generally try to remain optimistic that most developers do want to make things their users like.
Yes but. I'm so sorry, so many buts.
First, developers don't control the product. We don't have license to go make stuff work well to our satisfaction. Benign neglect is probably the widest issue keeping software shitty. Most orgs have jira backlogs of thousands upon thousands of small things notable enough to capture & that kind of suck, but which no one has time to do. We have a slack channel where customer support issues for known defects are repeated & there's dozens of super silly fuck ups that users have hit for years & years & we just don't have the time or space to care. Any org's priority is almost always new & shiny work, work that product thinks will bring in new revenue, and work that developers will get to build some fun new stuff for, rather than toiling in the muckt past. Orgs almost never prioritize caring & making things great. We are not good advocating for.our users, understanding the real pains they have, and how bad or unsuitable-to-them choices or bugs impact their lives, and we trap them within the confines of these hard systems.
User neglect quickly gets worse from here. https://trends.google.com/trends/explore? q=Enshittification&hl is a chart I expect to only grow, aptly coins the lived experience of many organizational software/organizational life cycles. Enshittification is a less than benign neglect of users, is the org putting it's interests above the users. Do we developers forever permit software to ever more deeply incurse into our (society's) lives, to ever more set the rules? Dark patterns aplenty circle.
There's some other more general concerns for why I don't feel like leaving things the app maker is a healthy position.
What suits most users may not suit everyone. Users sometimes have desires or wants or needs that aren't represented. Having to preprogram in every capability, every aspect feels like it will keep being insufficient, or keep running into irresolvable conflicts where different users needs clash.
And I worry so much for the intellectual wellbeing of a controlled consumer information space versus one that entails user-agency. The Engelbartian ideals of Augmenting Intellect are unfulfilled by making software that looks like a 2001 Space Odyssey, that leaves users as monkeys beating on the obelisk/monolith with sticks. I think human potential needs representation at the table, needs ways in, and the web has simply shattered everything we've ever done by being vastly more agencyful, by using high level web interfaces that allow exploration, modification.
To me the whole magic of software was that it was soft, that we could make the screen dance as we liked, that it was flexible. Apps only are as soft as the appmakers make them and no further, and this is a short shake to be giving, limits what we are & what we become & how we may think in terrible ways.
I am optimistic too, but it's about the web, about including the rest of humanity in software, giving them license & liberty too, about fostering a culture where what happens here is open information.
> There is maybe an argument that users will be happy to use non-web standards tech to their long term detrimeent because they don't know any better, but I personally ascribe zero value to that argument. It just reads to me as pure elitism.
I identify with this paragraph of yours so so very much, it presents so much the obvious fate we sleepwalk towards, the frog slow boiling in the pot, but I fall so much on the opposite side in my concern here.
I'm not sure how the principle of making observable learnable malleable open systems could be disdained so casually as elitist. Are we an open society, or will tech be the Black Iron Prison that seals us in? What hope do you see for long term potential if we make software hard, yank away all the control capability & observability from our users & declare that only developers need to be involved in making decisions and everyone else just has to live with it/can't even see under the hood? How is developers having all the power & making all the choices & users better like it not the elitist option?
Monkeys beating on monoliths with sticks forever & ever.
I also just think it's still so early. Right now we are not a very computing literate society, & there's kind of an acceptance that only scribes need to be scribes, but at the same time there's constant shit storms about tech leaving people powerless, confused, it being mysterious & difficult & troublesome, and everyone seems to feel pretty adrift unmoored & uprooted.
The web is still very very young in any kind of real measure. There's been like a decade of it's modern phase, after a couple decades of desktop & mainframe applications being the consumer-facing norm. I'm only really looking at like 0.01% of users who learn some html or css or js or install an extension, but I just see so much hope & positivity & excitement from those who have been given some leverage to do a little hacking, to learn the computer & find their own power & shape the computer world. I cannot but help but see this as just the start of a great hope, as the entire core for my optimism about computing. It is genuine & real & honest, in a place where looming vast industrial processes construct & project shadows on the walls.
I really enjoy how well deconstructed & well stated your positions are, how you deconstruct and view things. It is very good writing & I really like your decomposition. I happen to disagree & I think it's apparent I see this as being a matter of enormous enormous weight. I would honestly love to have some other avenues for optimism, ways that I can see a healthy long-term dynamic between man and machine grow, but the invisible hand feels to be greatly pushing against the human cause, in my view, and grassroots ethical positions & individuals trying to beget better are the best hope I have. The high level web of structured information & protocols is the best hope I have.