DaedalOS – Desktop environment in the browser
dustinbrett.com
dustinbrett.com
Creator says it took three years on the side to build: https://www.reddit.com/r/react/s/JZRRdq1Qv3
https://www.windows93.net/ https://v3.windows93.xyz/ https://windows96.net/
https://news.ycombinator.com/item?id=25241123 (149 points | Nov 28, 2020 | 43 comments)
https://news.ycombinator.com/item?id=29779753 (194 points | Jan 3, 2022 | 126 comments)
Creating your own desktop environment is an incredible “hello world” into serious and more advanced JavaScript development.
Interesting note, Chrome now shows me how much memory each tab consumes. No matter what I did it is always stay on 50mb (which sounds like a bug in chrome), while a page from SO consumes 87mb and HN takes about 30mb.
I wonder if it's the animated wallpaper that's causing the fans to fire up.
This is a reminder of a time when Microsoft had all A grade players.
> TalOS the gift of HefaistOS KholOS to MinOS, KokalOS who gave DaidalOS refuge in KamikOS from MinOS, PegasOS, OrfeOS, AisculapiOS, MinotaurOS, CetOS, AgriOS, EnkeladOS, HippolytOS, SisyphOS, NessOS the son of KentaurOS who slew Herakles the lover of IolaOS and slayer of AntaiOS
sadly theseus is θησεύς, ending in an actual υς rather than the ος of the above examples, so he isn't eligible to have an operating system named after him
OK, found: https://github.com/durasj/webamp-desktop/releases/tag/v0.3.0
https://berlin.sourceforge.net/
I followed this project for years and it's still where I think we should be. X11 architecture with higher level primitives
None of them are dynamically extensible at runtime the way the browser is with JavaScript, or Emacs is with Lisp, or NeWS was with PostScript (which failed for economic reasons).
Why not simply use a standards based web browser running directly on the hardware to implement the desktop user interface and window manager and network distributed app platform (i.e. Electron), instead of trying and failing to reinvent X-Windows for the 100th time?
speaking of expensive to run, electron struggles to run an app in less than 4 gibibytes of ram, and it's impossible to get things to be reliably responsive in it. and the 'standards based' platform has the kind of sandboxing you need to safely run third-party apps, but it eats its children, like the pgp message format: you only get one level of sandboxing, no sandboxes inside sandboxes, so things implemented on the 'standard' platform can't actually use the sandboxing to confine apps
android surfaceflinger seems to have done a pretty thorough job of displacing x-windows in that surfaceflinger installs outnumber x-windows installs by about 100:1
The html + css approach is wonderful, easy to learn and thanks to arias and html standard amazing in terms of accessibility.
The website of a window manager impersonating the window manager.
And each time you just decrease the animation durations by half. :)
I always speed them up by 2x, makes the ui feel snappier.
Compile Linux kernel to wasm. So it can run inside a browser with a very nice performance.
Write FS drivers to enable seamless caching and remote data storage, so you can shutdown your system on PC and boot from laptop. Or even some kind of hibernate mode, so you can just continue from where you left off.
Write graphics drivers using WebGPU and other technologies, enabling very nice performance. May be not perfect for AAA games, but for anything less demanding it'll work.
So basically make a proper Linux port for browser and then reuse all the applications already built.
No need to run the user's browsers separately inside a slower layer of emulation, when you already have a browser implementing the desktop.
Fewer layers and less bloaty software is better. We're already stuck with the browser, and it's not going away, so use it for everything. X-Windows and Wayland are obsolete and useless, so should be flushed.
Current desktop user interfaces are terrible, and we need the flexibility of a web browser to innovate and implement better ones, since Wayland is simply not up to it, because it's not extensible at runtime in JavaScript or any other language. (No, recompiling or dynamically linking in DLLs doesn't count -- that's just ActiveX.)
Nothing is stopping someone from making a wayland compositor that is.
As complex and backwards compatible as web browsers and JavaScript are, you already need all that complexity anyway and already end up paying for it all. So why not use it to implement the desktop too?
I'm not proposing eliminating the web browser. Are you? I'm just saying use the web browser you already have all the way down, instead of re-implementing part of it.
The problem with DaedalOS is that it doesn't bother to innovate, it just implements old designs: Windows 95 or so. No pie menus, no tabs, no virtual desktops, no rooms, just old ideas.
But those old designs are not hard-coded into the browser, they're all just software you load into the browser and can change. Why not be able to change the entire actual desktop that way?
I think you need to invert and ask - why to do all this? You'll get much worse performance, many extra layers when you need more direct access to hardware etc.
How so? The biggest innovations in the browser in recent years have been shadow-DOM type stuff like React/Vue, plus WASM and WebGL. None of these are backwards compatible with older browsers.
Why isn't this obvious? I already said "when you needed to pop up a browser window on the desktop ... simply and efficiently use the same browser that's running the desktop environment". Did you read what I wrote?
Go back and read what I read please. You're arguing about something I didn't say, and ignoring what I did say. I never said to implement the desktop in only WASM and canvas.
And it's not about cloning Windows 95, it's about providing a flexible extensible platform for making much better desktop user interfaces than Windows 95 and everything else.
Edit: you just did make my point that you weren't listening, and that you have nothing to contribute to the discussion, but I'll let you have the last word since that seems to be all you want. Unless you want to pointlessly announce you're going to leave again.
"Like, maybe 2 or 3 right now, my dude"
"You are like a little baby, watch this..."
opens 10 browsers inside browsers recursively and crashes hyper-v
Inception bwaaaaaaaa
Or even plain ChomeOS -- especially if you then run Firefox for Android.
UML[0] and LKL[1] prove that running the kernel in a process is viable. μClinux efforts like NOMMU and binfmt_flat prove that you don't need memory-management nor ELF to run the kernel.
Both my own independent experiments and WALI[2] have shown it's possible to port the Linux syscall interface and userland ecosystem to WASM.
I'm confident it's doable, but there are a number of other challenges to solve along the way (like dynamic linking, the Harvard architecture, etc). Currently I'm blocked on the fact that while the kernel supports running non-ELF binaries, it really wants to be an ELF itself.
[0]: https://en.wikipedia.org/wiki/User-mode_Linux
Another useful mishmash of technology is pikvm, a kvm based on the raspberry pi.
You connect the pi to a machine via USB and HDMI, and remotely access it through the web browser.
The pi will digitize and send you HDMI out, and relay your keyboard and mouse to the remote machine.
What's fascinating is that pikvm can also emulate a usb flash drive, so from your browser you can give it a liveusb image and boot and run it on the remote machine.
Or wait. Perhaps we could run a VM inside the OS in the browser...
Basically just what you would do with some kind of remote desktop. But it's not remote, it runs locally, with perfect latency. And it's easy to switch to another computer with any underlying host OS, without even interrupting your applications (if hibernate idea would work).
If it can't be achieved with rsync or ZFS send/recv, I honestly doubt a web browser will change anything.
Of course you could just say IPKVM or VNC, but I would say it's a bit different if you can run most of the logic client side (via webassembly etc...). So this would require the app to be rewritten to have a clearer separation between the view and controller... which is what most linux apps don't really do. So I think at this stage it's just a pipedream.
https://news.ycombinator.com/item?id=38830583
That would be a huge leap backwards. Something more like NeWS would make much more sense, since you have a scripting language in the browser that solves the terrible design flaws of X11 and Wayland.
We've come so far in the direction of NeWS by adding another layer, the web browser. Why add another third layer to move back in the opposite direction, when you could REMOVE X-Windows or Wayland and just have the browser that you need in the first place, running directly on the hardware, without the useless obsolete layer underneath.
I've written about this frequently and extensively (also extensibly), over more than 10 years on HN, and a lot longer than that elsewhere. But some people seem to have a mental block against understanding what the obvious advantages and efficiencies are, just don't get it, and never will, but actually want to move backwards towards X-Windows again.
On the other side of things, you can just run an SSH + X11 server for remoting; and have fairly good integration between windows controlled by a remote process on your desktop, and windows controlled by a process on your laptop. Over fast links it’s nicer than RDP kinds of protocols.
Finally Plan 9 really runs with this idea - you can mount the processors of another system to use them on yours. Plan 9 is a distributed operating system, designed to make a network of heterogeneous and geographically separated computers function as a single system. In a typical Plan 9 installation, users work at terminals running the window system rio, and they access CPU servers which handle computation-intensive processes.
This meant for example that you could have your "personal mainframe" in your office, then go with your "laptop terminal" to a conference hall, and when it came to your presentation instead of attaching the laptop to a display, a room-local computer could be used for its resources like screen and audio. All the while you have continuity because applications stored the state on your "mainframe"
Sadly haven’t been able to find it.
There's (theoretically) nothing standing in the way of making self-hosting of serverside apps as easy and painless as installing mobile apps, except someone has to do the infrastructure/integration work to make that UX come true. Docker got us 80% of the way there, but maintaining a complex setup can still be painful even for seasoned sysops (and we'd rather not take our work home more often than we already do). Sandstorm added another 80% and I wish it could take off like mobile did.
as i understand it, it's more that you mount your window on a cpu server so your computation-intensive process can draw into it; there isn't a filesystem interface to the processor itself
If I recall at some point there was even a SunRay laptop with wifi, but I never got a chance to use one 'cause we just didn't need it.
What is the use like these works?
It’s quite sad that Microsoft apparently doesn’t think he’s worthy of the ‘senior’ title yet whilst his work is heaps better than most seniors I know. Kinda explains their poor software quality lately.