Pangolin UI, a Desktop Shell, Written in Flutter, for Linux and Zircona
web.dahliaos.io
web.dahliaos.io
Flutter... stutter... maybe the Flutter team was trying to tell us something all along ;)
This website is definitely running at 20-30fps max on my phone, whereas 60fps seems perfectly maintainable on my own Flutter experiments with web apps.
Having said all that, I'm still miffed about the extreme reliance on Javascript modern web applications have. With the ease of use Flutter promises for making web apps, I can only fear the slow, janky mess that websites will become if the platform ever gets taken up as quick as Flutter seems to hope it will.
Yes, after all those years browsers are top notch when it comes to accessibility, but it comes with lots of additional complexity.
I am hopeful that with things like WASM and Canvas we are finally starting to move away from this document-based paradigm towards more app-focused paradigms.
Although there is still lots of work to be done to make approaches like this work with accessibility tools.
Sometimes i think that we are deliberately not adding dom support to wasm in order to not make the same mistakes we did when trying to make html/css/js suitable for apps.
edit: some toolkits already have wasm/canvas support (like Flutter and Gtk I think). The missing link is the ability to integrate accessibility.
E.g. you can do a lot to reduce the fingerprint-ability of canvas (Google doesn't care) but doing so will lead to potentially slightly slower rendering and in turn potentially less fluid animations.
You can't have links as in a website without getting access the the whole browser history.
You can't take advantage of the GPU in the same way the browsers can.
You always have quite a bit of size and (potentially) load time overhead (I mean just look a Pangolin UI for a good example for this).
And "everyone" potentially ships their own copy of a whole UI framework (not just some layers on top of it like it's common in the web). So if there is a rendering but normally it get's fixed by you browser but now it needs to be fixed by library authors and then the fix needs to be used by the website which had a problem.
I think a non document based base would be nice, but it needs to be browser native, standardized, not vendor specific and with first class accessibility. At least at the core. And let's be honest flutter is non of this. And given some decisions like making text non selecteable by default I don't see it ever coming to that point tbh.
I mean e.g. a news site is just a collection of documents in the end, blogs are just documents, so is wikipedia. Search machines are basically like external indices, which fit well as documents and even things like booking sites are in the end just fancy formulars.
Sure there are a lot of more "app" like usage, and for them having a different base is very important.
But I'm not the biggest fan of "turning" document use cases into apps (as many sites already try to do today), as this in my experience adds a lot of overhead and includes a massive bucket of behavioral differences which can make it very hard for some people to use the internet.
If everyone would agree of how roughly apps should behave for the roughly same UX aspect it would be fine. But people don't I mean look at the massive UX divergence which slowly creeped in between Android(Stock) and iOs. Worst this is a very subtitle creep at many places and it often seems as many designer doesn't realize that what they think is innovative (and might be innovative for e.g. a iOs) user isn't necessarily innovative for a lot of other people (e.g. all the Android users). Or in other words the whole concept of what is innovative diverged between different grubs of people even if they belong in the same "culture"/country/etc..
Anyway still for the places where it does make sense having a alternative to HTML/CSS is nice but I believe it must be browser native, non vendor specific, standardized and have first class accessibility support.
Non of which applies to Flutter (web) in the way it currently is.
The document paradigm has evolved for 25 years and it is the right fit for most “websites”.
The problem is that we’re trying to build apps on the same base as well and that is where the mismatch is.
If you look at cross platform GUI toolkits like Gtk, Qt, Flutter and Druid, what most of them have in common is that they are typically abstractions on top of a graphics rendering library (cairo, skia, canvas) with integration into platform accessibility and window APIs.
That makes them easily portable to Linux, Windows, Android, iOS etc.
The problem with the web browser as a target platform for these toolkits is that the accessibility support is currently coupled too tightly with dom/html/css.
The graphics drawing toolkit is there (canvas) and most of the above toolkits have abstracted over it already. The missing link is standardised accessibility APIs in browsers that can be used with canvas instead of dom.
If by "just right" you mean sticking out like a sore thumb on iOS, then sure.
Flutter on web can do Flash applications of 2020, but for most web use cases it is not possible to ”get it right”.
E.g. I need to change font's/font colors/background colors from time to time because they are extremely exhausting for me to read, I can't do so with Flutter.
Screen readers know how to process HTML, CSS. But how are they supposed to know what some "arbitrary" painted pixel are supposed to mean. And yes they already have to do a awful amount of trick due to people incorrectly (one higher semantic level) use HTML & CSS.
Many of the defaults of Flutter (Web) are horrible, at least the last time I checked. E.g. text is unselectable by default instead of it being an opt in some site which have problems with stolen text content have use (and you still can steal it anyway just screenshot + OCR, duh).
Lastly (some) browsers optimized for good (e.g. fast or battery friendly) HTML/CSS rendering, non of this applies to Flutter. E.g. Firefox has a pretty need parallelization of layout and rendering allowing quite awesome usages of CSS animations, non of this will ever be possible in Flutter without replacing DOM with Flutter natively, at which point we have then a Google web instead of an internet. (Through tbh. replacing HTML+CSS with some proper abstracted API of flutters inner workings is tempting, it has some quite need aspects, that is if Accessibility works by then.)
I also think text not being selectable by default is an OK default for apps (actual desktop-grade apps, not websites with interactive elements).
Right now, in 2021, it's probably a bad idea to create a web app with Flutter or any other non-DOM-based toolkit, but I don't think that will be the case forever. The native apps I use are all as good as or even better than browsers at being fast and battery-friendly. They might achieve that by being more limited and not supporting all the features and usecases of HTML5, and that's perfectly fine. It's not impossible that we'll see similar high-quality GUI frameworks inside browser runtimes.
Sure there is no reason non HTML can't work at some point in the future if browsers and/or accessibility tools accept a new API as (a) standard for handling accessibility. But the way it currently is it is a accessibility nightmare and often even trivial things like text selection don't work because flutter defaults to not allow text selection if the programmer doesn't go out of the way to explicitly enable it.
IMHO before you push something like flutter web onto people you first need to push a way to handle accessibility with it or you will hurt a bunch of people.
And yes the whole semantic HTML document thing didn't work out well, but that is less so because of technical reasons but more so because:
- companies just not caring, even potentially going as far as intentionally obfuscating HTML
- a lot of the semantic parts not having been there from the get to go but bolted on later on. So a lot of people and material are still used to not using it. A mistake flutter is repeating just now
- and wrt. non-document based applications it just doesn't fit that well, but a lot of web-apps could be done in a document based fashion, if companies and (not affected) people would care more.
Flutter is written in Dart, which needs to compile to JS or WASM to run on the web, but can compile to native code. I'm guessing the native app is a lot faster.
And what specs does your phone have? It doesn't even run on mine - a Moto E6 that is probably representative of the phones used by the average American user, and probably better than the average user globally.
I'm not sure how that compares to the US where there's a 60/40 division in Apple/Android market share, though.
Tried their latest ISO[0] on QEMU and... no, it's mostly the same. But based on the release notes VM lag is a known issue. Maybe someone can try it baremetal and tell us how it went.
This, among other more Googly reasons, is why I'm personally not a flutter fan. It's not like there aren't other decent cross platform UI toolkits anyway.
Still, an UI framework should never eat away so much performance. Even at full display refresh rate it should only consume a small percentage of available computation power.
it's the developer that uses the tech, or rather misuses the computer
you jump to conclusion rather quickly, that's fishy
These days there's worlds of abstraction between you and those problems. Those abstractions are in transpilation, libraries, etc which all take more power to get over the problem of time.
> Frameworks like Rails or Django didn't exist
You... might want to check the git histories. And a calendar.
Have them use their shitty 5MB webpage over a spotty 500kbps on a phone with 1GB RAM. Maybe they'll see what it feels like to have the page load bit by bit over a minute with stuff jumping around all the time. Maybe they'll reconsider if they need 5 megs of js to display text and images then.
Though in this case it feels like problems might be due to running in a web browser and not being optimised.
(If not, then ouch...)
Edit: Submitter shared the repo link in another comment: https://github.com/dahliaOS/pangolin_desktop
Please don't use flutter web, it's a unacceptable accessibility nightmare.
Same here. I'm using Firefox.
But that's not even a click-dummy "desktop". Also, form the tech perspective, it seems pre-alpha state. At least the web version renders with maybe 10 fps on a pretty decent machine, and every click has at minimum half a second latency. No clue why someone put up a website marketing this thing to end-users. It looks like 3 to 6 years of hard work form usable, imho.
https://en.wikipedia.org/wiki/EyeOS
It certainly ran better than this.
Tagline: "So good, it'll go viral"?
I wouldn't want my Linux distro looking like something from Google tbh :)
* There's a massive company like Google behind it
* Google has experience with app dev
* It's been 3+ years
* The project has been hyped up a lot, and has a lot of supporters
* has a programming language that basically exists to support this one dev kit.
And like I mentioned before, with my low-end laptop its hard to run full Android Studio. Tho Dart's not that pleasant compared to Kotlin, the tooling outside a single IDE was enticing for me.
if that's what you want then you should support things like kotlin multiplatform, react-native or SwiftUI, dart is a very meh language comparing to those above with established back-end ecosystems.
They want it because it gives them control over their future in a way that Kotlin or Java and the JVM do not.
The “bundle the whole world in your app” isn’t space efficient, but it’s efficient enough and sidesteps a large part of the outdated Android issue. Meanwhile the react-style components are very popular among devs with UI know-how. The rapid uptake of Flutter also speaks to the hole it is filling.
Then there’s FuschiaOS where they’re seemingly intent on making it the primary dev language.
Lots of good reasons to continue support and not many reasons not to. Sounds like a decent bet to me
Qt is the only real alternative to WPF/WinUI on medical devices, so you would be in good company.
And then there is ChromeOS with PWAs and Fungu project.
Google is all in internal political wars about their platforms.
Won't do.
https://news.ycombinator.com/item?id=26845037
How smooth that is compared to this here…
Their OS, dahliaOS is using it: https://dahliaos.io/
Honestly, never tried it myself, but it definitely looks cool and I wanted to share the web version ;)
It does look interesting though. It's an UI for Fuchsia or Linux, with containers for the other system?
Edit: It doesn't seem to work really good, but it kinda works.
Dis => ART.
9P => Binder
Inferno kernel => Linux/Treble