Internet operating systems is a niche subject that I am fascinated with, and I put a list of them on my website. Im going to add OS.js to the list soon.
Thanks! I am happy to hear you liked my desktop environment. This type of project is my passion and I am always comparing mine to others and seeing what more I can add/do to make it cooler.
Hey @danjoredd, thanks for adding my site to your list, but the description interested me. You said "while its not the most feature-rich", and I am wondering if you could elaborate because I have actually spent many years adding many features and for a client-side desktop environment in the browser I would personally consider it one of the most feature rich. I would love some honest critique and suggestions for changes. Thanks!
No problem, whatever wording you feel fits is fine with me. I mostly wanted to know if there were any gaps in my app that I could address. I am interested in having a feature rich and customizable OS, so I'd like to improve wherever possible.
I find it ironic that the "boot log" displays the text "Safari is teh new Internet Explorer", while it's one of the two final holdouts against Chrome's complete and undivided domination, as Google is trying to force WEI down our throats.
The open web is dying, and it's those messages that are killing it.
I hate this logic. Neither Safari nor Chrome are good for the open web, Google being worse than Apple does not make Apple some kind of hero.
As far as WEI goes, I certainly do not expect Apple to save us considering they've already been happy to implement remote attestation in their platforms and of course, in Safari, in the form of PATs.
Meanwhile, Safari lags on web standards that are actually good, (while still implementing remote attestation in their browsers,) forcing you to test all of your stuff on Safari. I never have to test my stuff on Chrome, because well, Chrome implements every standard I care about that Firefox implements. But with Safari, I never know.
I'm the resident troubleshooting guy for a bunch of people, and it's difficult to express the confusion and anger I get when I have to explain to people that yes, Safari on iOS really, truly still doesn't support WebM or Opus fully. Some people (insanely, imo) believe WebM is somehow evil, but I would love to hear why Opus is evil.
What Google and Chrome are today is vastly different and far worse (IMO) than what Microsoft and Internet Explorer were for the web and internet. Microsoft was also bad for the open web, but they couldn't dream of something as devious as WEI; the technology wasn't even there yet. Meanwhile, Safari is basically hated for the same reasons as IE: You have to test with it to make sure things work (and of course that includes needing to own Apple products to even have the privilege of doing so...)
I'm not specifically defending Safari, it has many other problems (speaking both from user and developer POV). But I'm realistically looking back at that battlefield, and weep the loss of Presto, EdgeHTML, KHTML, the stillborn Servo, the irrelevant "other" WebKit browsers... Meanwhile the corpus of standards keeps growing to ensure no other player can hope to enter this space and remain competitive.
My problem very specifically is with this messaging: "use Chrome". I mentioned WEI not because remote attestation is evil, but because Google (in this case and in many others) ignored the process, and declared itself the law.
Brave is filled with features I do not want or care about and I do not trust it. I am perfectly content with LibreWolf, though I am happy to recommend Firefox to people, too, as for all of its misgivings, I still think it is one of the better options for casual users.
That doesn't mean we're all good, though. Chrome has a lot of advantages by virtue of being a Google product, for casual users, like Chromecast support.
Haha ya that one is a great parody. Flash actually had tons of these, but RG was the best. I have the file (/Users/Public/Documents/Flash Files/Windows RG Build 207.swf) on my website and run it via Ruffle.
I recently wrote a blog post [1] about the comeback in popularity of these web desktops, especially after seeing a lot of these being posted on HN recently. OS.js was one of the early projects I started tracking years ago, and it's really well designed and documented. The interface always reminded me of those mid 2000's distros with GNOME 2, which is a nice thing since most nostalgic web desktops tend to have Windows 9x themes.
I used to play around with and use this, but I could never find a good use for it. It felt really counter productive to open up a desktop within my desktop when it was a laptop, so I had it anywhere already
At least for me, with the one I am making, I consider one possible use to be that my app has support for many file types without a user needing to have those apps installed on their OS. Also running files on my app is like a sandbox.
Ultimately though you could do that using separate websites, IMO there isn't a need for a desktop for that use case.
I wonder what are the fundamental features of desktop? Drag and drop, copy & paste, multiple windows being open thereby keeping track of multiple user states, better organisation of the underlying file structure, interaction centered on cursor and menus, keyboard usage focused on content input not command input, and allowing various inpedendent applications from interacting together via a unified view, unified file structure and unified visual shortcuts.
I think that a OS in the Browser would be great if it would allow websites to visually interact with one another, just as desktop OS's allow various applications to interact visually - via drag&drop for example. Then it would make sense for me to use an OS in the Browser.
The taskbar is typically managed as part of the desktop environment. This term doesn’t refer only to the folder represented as empty space behind the windows.
It's crazy how slow Windows 11 is on modern hardware. Even on a modern CPU, with 16gb ram, it takes serious time to load things. Very sluggish compared to a Macbook Air of a similar price point.
I can't imagine that big a difference is due to hardware differences. The M2 is fast, but Intel 12th gen isn't much slower just more power hungry.
That means it's a software issue. Which is sad considering how good the NT lineage of kernels was, they have been making a worse and worse OS around it. They have themselves to blame for dropping from nearly 100% desktop marketshare to around 60% now. Only time until they're going the AOL or Yahoo way...
Looks like the Tetris pieces aren't aligned to the canvas pixel grid, causing unnecessary antialiasing. This causes the piece borders to look eternally blurry.
To fix it, you should add a "cleaning cloth" app that the user can drag and drop onto the Tetris canvas that moves the pieces horizontally by 0.5 pixels.
Or even better, only move the pieces that intersected with the cleaning cloth. :)
CSS should have a way to handle all offset properly at some point https://www.w3.org/TR/css-values-4/#round-func but until then you can use JavaScript to automatically get the correct offset.
People underrate how much good stuff CSS gives you for building UIs.
If you did everything in canvas you’d just have to reimplement something like flexbox to center, align, stretch, and animate all your icons text, boxes, buttons, etc.
Why not just stay in HTML and use a layout engine that’s already implemented, and highly optimized for literally every platform.?
Most folks seem adverse to learning CSS. In contemporary times they’ll go as far as to add 44 cryptic utility class names to element to avoid writing a line of the stuff.
Alignment used to be a big problem with CSS. Before improvements like flexbox and grid, people used to struggle to do basic alignment, like horizontal or vertical centering, or simply spacing items apart. There were a lot of (ab)uses of floats, tables, and relative/absolute positioning used for layout
IE, Chrome, Firefox, and Opera had their own separate rendering engines. IE was also notorious for running with "quirks mode" out of the box which basically meant that IE was render pages in a non-standard way by default
It was possible to develop things correctly, of course. But resources, both in terms of availability of documentation as well as time, were not as easy to find as they are today
It was tedious, sure. CSS2, especially, was just powerful enough but unstandardized enough that nothing worked quite right universally. Now, I can jump into CSS3 and throw a flexbox down or a grid and just tell it exactly what I want, in 1/8 the code and it'll work across all major browsers.
I recently enjoyed reading https://every-layout.dev. Even though I considered myself to be quite good at CSS, some of the ideas covered in that book (like thinking about how big your elements should be and let the browser handle the breaking instead of relying on media queries) was eye opening for me.
By having a reason to use it. Make something cool and complex and don't shy away from edge cases and best practices. Strive to improve every day and you will learn.
Interested too.
I did several full courses and exercises on it (Freecodecamp, W3, Mdn, Codepip…) and I still struggle a lot to create clear UI and have each HTML element where I want them.
I am looking at CSS frameworks (BEM, Tailwind) but I would like to master « vanilla » CSS.
It’s not a direct method, but really, you should try a) study the source code of the big ‘frameworks’ such as Bootstrap (especially if you dig into the comments & issues / patches that fixed worse practices with better practices) & b) hit F12 to start inspecting sites that are doing things interesting that you’d like to know about (but keep in mind they might not be experts & how you might improve it).
i know it's in semi-jest, but what a non-argument lol. 44 util classes just to not learn the one line on which those utility classes are based on? if you want to hate on these types of things you can at least have a point of view that makes sense.
tired of people who've never seemed to use CSS beyond some pet project or stuck in early 2000s (all frameworks are dumb!) mindset make the wrong arguments over and over again.
Utility classes are meant for utility purposes, not to replace CSS, but you see so many projects out in the wild now terrified to have a classname that’s relevant to the topic which makes it harder to organize, but also harder to select for userStyles, filter lists, etc. (i.e. if you make a FooWidget, add the .FooWidget class so real folks can read/parse thru the code easier for their needs …or just for their knowledge of what others are doing, and maybe actually put some styles on that bad boy instead of every property being behind a util). I have spoken with some engineers that only know how to speak Bootstrap or Tailwind, & not a lick of CSS. This isn’t just 2000s thinking to consider pumping the brakes a little as utilities at this point have definitely blown out into ‘overuse’ & ‘overreliance’, but these things come in cycles with a new idea taken to an extreme before we swing back to only semantic markup & selectors on element names again before the next pendulum swing. Even still, utilities aren’t a new idea, but just part of how reusable classes in CSS can just work – and rolling out with massive block of utility CSS that are mapped one-to-one with a single property is in the ‘smell’ territory.
Having X class strictly linked to X widget or component breaks down when your widget has multiple subcomponents which may or not be reusable, like having Y widget and Y widget with some slightly changed parameters. Suddenly your "clean" system isn't so clean and you end up either adding inline styles, extract these components into their own classes and naming them which just moves the complexity elsewhere, or creating your own frankenstein utility classes.
There' s reason why there was a rise in something like tailwind, because they ended up creating what IMO we end up doing anyway. For me, it's 100x easier to maintain to open a component up that is months old and grok every everything about it without having to reference some other CSS file or structure. If I want to tweak some aspect I can do so easily right there, I don't have to jump back and forth, and it's better than inline because I benefit from things like hover styles and responsive classes which I can't do inline. You can always extract truly reusable pieces into their own class.
Is it more verbose? Yes. Can it be abused? Yes. But I wouldn't go back to the "old" way and it isn't for lack of knowing how.
Criticizing utility-first libraries doesn’t imply that a) the only alternative is some component-based naming scheme nor b) that you can’t use pieces of both & definitely isn’t suggesting c) use inline style. I’ve used a mix of different system where appropriate for years now & it’s been a pretty good way to go. And you can still give the component a name even if you do mostly or all utility classes for your team & other users.
i'm just going by the example that you gave which is of a component based naming scheme.
just to be clear, perhaps we're talking about the same thing (mix of style) just from a different angle and more emphasis on one or the other. i still use a "global" stylesheet as a base but the majority of our work within components is utility classes, so i'm also not suggesting that everything be utility only.
If you know how to write tailwind, you know how to write CSS. The utility classes it provides are just a sort of shorthand form of CSS. With component based frameworks there isn't much of a need to define CSS classes in my opinion.
If you know CSS, you can write CSS. Sometimes utilities add indirection that’s harder to follow in the long term—especially with folks that aren’t already using these utilities. In 10 years, will it be easier to follow `mb-5` as medium border 5, middle box-shadow 10, margin block 5rem, min-block-size 10, mix-blend-mode 5, mild black version 5? If the utility has many properties tied to them (e.g. those softer shadows of layered box-shadow) named .stackedShadow--depth3 this sort of utility has earned its value that will be easy to understand why it exists vs. .pt-6 when an explicit value or CSS variable could have sufficed. This doesn’t apply to all cases, or all projects, but I would predict in 5 years the fad of pushing everything into a utility will be dead in favor of moderate usage.
Yes, I also agree that we should use inline styles for everything. The problem with CSS is the C. I don't want to come up with class names or put styles in a separate file or even a separate section in the same file (Vue). I want to look at the tag and immediately see how it's styled. No hidden or indirect styling whatsoever.
My CSP won’t be happy to include unsafe-inline. Inline styles are hard to override. Not overthinking but I try to put some consideration for the folks using userStyles for their accessibility.
Naming things is often hard, but at least with UI you’re usually building something concrete so there should be some name—if not a wrapper that holds more loose parts you can’t easily control (like a #Content element around some reStructuredText output).
The cascading part is a double-edged sword tho. It can be used to great effect for good, but it can be unweildy with a disparate or undisciplined team. But it’s often better to work with it rather than fight uphill against the only style engine we have in browsers (if feasible)—the output will generally be smaller & easier to follow with less to know or maintain.
Everyone? I wasn’t sure. I doubt a fresh-outta-CSS-bootcamp person would either.
It’s ‘standardized’ within its niche. Niches can have shorthands, but breaking into mainstream seems a bit lofty considering the ambiguity from the outside (I’ve never used regularly) as well as how much & how far you can get with CSS without a library (not saying there’s not obvious places for libraries).
You could be more clear by writing margin-bottom-5, but then you reinvented CSS. And using shorthands for singular properties feels like reinvented CSS—especially since the name implies you can’t even refactor mb-5 { margin-bottom: 6α }. If you can’t use it to refactor, what’s its point?
> Everyone? I wasn’t sure. I doubt a fresh-outta-CSS-bootcamp person would either.
You could say the same about any api not being immediately obvious.
> And using shorthands for singular properties feels like reinvented CSS
It’s quite a nice way to describe css in my experience. The shorthand classes actually teaches you css too. As they’re basically a 1-1 mapping, but you can write them much faster than manually writing the styles
It also scales well, as you don’t get crazy css class hierarchy’s that are hard to modify.
> you can’t even refactor mb-5 { margin-bottom: 6α }. If you can’t use it to refactor, what’s its point?
Not impossible, I mean you can easily edit the tailwind.config to be different for mb-5. Or search all relevant instances of mb-5 and replace them with mb-6 for example.
I think it’s best for component-driven development, where you want to encapsulate styles with components and not have them dependent on the context that their in. It does make the HTML more verbose, but development much easier and faster
I'm tired of people who throw generic garbage on other people's opinions without any explanation. If you have to pretend like you know who other people are and what they've done, you're literally making up evidence for an ad hominem argument against a stranger.
If you weren't full of it, you'd defend your position rather than wasting your time denigrating strangers. Even worse, smart people are going to reply to you in order to make your argument for you. So then people to try to have a real discussion within this poisonous context. All over the internet, over and over again.
valid point, and to be honest i'm tired of reading the same argument over and over about utility classes and having to write out my "defense" over and over, sometimes it's easier to be snarky.
to be fair, his initial point didn't make any sense to me and was also of the same flavor of assuming something about people (equating utility classes with people not knowing CSS) and prompted my knee-jerk response. i clarified my point to him in a later reply. seems we did have a fine discussion?
but thanks for assuming that i'm full of it lol. ironic in a way that you'd criticize me while throwing the exact same ad hominem when you literally also know nothing about me.
Not defending OPs POV but you're reading between the lines an awful lot and making value judgements.
Perhaps they use frameworks and write CSS at scale. You don't know and failed to enquire, instead becoming defensive and robbing the circumstance of the chance for productive conversation. Shame.
lol what? op is the one insinuating anyone using utility classes are ones that don't bother to learn a line of CSS which is untrue, so I find it curious your criticism is directed solely at me.
Value judgement for value judgement, I'd say the snark both ways is pretty fair. More than welcome to explain their pov.
Its a symptom of several things by my anecdotal estimation
- Bootcamps & self learning resources don't emphasize CSS. JavaScript gets you hired. A huge amount of web developers in the last 5-7 years came out of bootcamps and career switchers self learning, and the resources available overwhelmingly focus on frameworks and JavaScript, to the point that I've been in interviews where someone can give really good answers if the answer is framework specific but they don't basics like `call` or `bind`.
- See previous comment. JavaScript gets you hired. Rarely, if ever, have I seen candidates get rejected because they lacked proper CSS knowledge nor have I seen it be appreciated on the same level as having "deep" JavaScript knowledge
- CSS isn't programmatic[0] like JavaScript. The rules are different, and more fuzzy. Its one of its strengths, but its also a bit of a weakness, as you can't simply algorithmically design something and test its outcomes. You have to understand spatial concepts like placement and understand how to design / create with tools that have multiple different ways of achieving the same outcome alot (but not always). CSS does have more "exceptions to the rule" than JavaScript does.
- In many ways, it doesn't help that CSS has had no API culling. IE, we know that flexbox / grid are much preferable but many developers don't grok things like when you should use negative margin, border vs outline, or proper usage of media queries. Then you have things like color formats, e.g. HEX vs RGBA vs HSLA. Which one is "better" isn't obvious to many. There's alot of CSS features like this.
- In many ways, CSS has a bigger surface area, a much more expansive API, and way less backing documentation from the community. MDN is pretty good, but its not exhaustive (nor could it ever be, really) to every situation.
- The reliance on CSS frameworks / generators. I think a big part of the popularity of things like Tailwind is you can just "try until it works the way you want" by throwing combinations of different classes together that a developer may semi-understand should work together until something happens, basically, which side steps having to have deep knowledge of CSS in many ways, or take bootstrap. Bootstrap made it easy to build websites following a formula. There are many other examples of this.
- Developers really don't understand how to properly leverage the cascade. The industry general notion is "avoid it at all costs" because the same thought that goes into organizing your logic (JavaScript) isn't given to CSS. There's really bad hygiene practices in our industry with regards to CSS and its derivatives (SASS, LESS)
[0]: I realize CSS is turing complete if you abuse custom properties a certain way or with the recent addition of container queries you could model this as well. I'm talking about it more in the way that CSS isn't like JavaScript, in that you have no familiar programming constructs (like if statements, for loops etc). Yes, I understand in the most literal sense, CSS is technically a programming language, but in practice, I don't think it is (at least, not yet)
There should be a name for the syndrome of being familiar with something to the point of not being able to see it anymore. When I try to talk about some of the things I am very familiar with, then I often can't explain them. Like JavaScript. I use it all the time. 'this' anyone? '==!'? 'bind'? It is so easy once you have submerged yourself in it.
But when I try to explain what these things are to a person learning JavaScript, I am vaguely aware that I sound like a lunatic.
Perhaps 'koolaid syndrome'.
I am not stupid - C, Java, nginix, streams, tcp slow start, NBP, etc. But CSS has always been hard for me. 'float'? 'block-inline'? <div/> vs <p/>? Eh? Rem's and em's, %, and px's Oh My!
One of the things that helped was to understand that CSS is a _layout_ engine. It takes a list of elements and plunks them into a container. In prehistoric times (BG - before grid) you needed to float things.
So yes, CSS is very capable. And there are some things that would be much harder to write with Canvas or Threejs. But if I didn't already have CSS koolaid syndrome, I wonder if ....
I have had to do similar, but in SVG. Back in the days before flexbox I had a project that needed to print colour reports in IE7+. Browser print removes background colours except for web graphics, so SVG can be used as a workaround. However, IE supported only it's own weird fork of SVG called VML.
This was how I ended up writing flexbox like layout code for SVG with a VML bridge. Was a good project as a junior developer.
Back in 2011/12, I started building Word w/ Friends clone for fun and went down this path. I never finished it but even now, years later, when I tinker with it - I still want to use Canvas and reimplement everything and I don't know why. It just feels more correct somehow? It makes no sense to me.
Indeed HTML can do it all! My desktop environment uses semantic HTML when possible and modern CSS such as grid to handle the icon grid.
But maybe one day down the road I have been considering a total rewrite in WebAssembly in which the entire thing is a canvas. I feel this would be much more portable to other platforms and would have a better chance of escaping the browser one day.
:) Yeah, I made my comment because I am currently teaching myself Rust/WASM and building out a game. It's a little painful using a Rust implementation of flexbox spec when I know CSS like the back of my hand, but, as you mention, the portability is nice and the environment is only getting easier to work in.
Think of buying a new laptop and not having to install anything. All your programs, files, and and settings are in the cloud. The programs open files from your cloud storage, without you having to download them first. So no user files and docs have to be stored on the machine.
Now, if the machine is only used to run such a desktop, then such an internet OS might run best on a chrome-book style device, with minimal storage for system data only, and locked down to run only the internet desktop. You could even store your entire config settings in the cloud, so when you log into the machine, it is automatically configured. So all you need to to acquire the hardware, and you are to use it immediately. No more mucking around with settings and installations and drivers and whatnot.
This setup is not good for every user in every situation, but in some scenarios it would be very useful.
I feel that the goal of "cloud computing" is done better using other technologies. Shadow.tech is a good example of this - it allows you to stream a powerful and capable windows machine to your computer. low latency, you benefit from the massive windows ecosystem that already exists, and you're not limited by local hardware, as a javascript OS (presumably) would be.
The use case is a return to "dumb terminals." Many "Enterprises" already go as far as they can with remote desktop and VPNs but lots of enterprises would love to issue an employee a device that runs the entire OS remotely so that the device effectively becomes just a terminal and 100% of employee generated data stays within the origination's servers and networks. I'm not saying that this makes for a good employee experience, but it's a use case.
I don't know about Os.js, specifically, but yes if you were going to implement a browser based OS for the purpose I described then local state would be relatively transient and state would be persisted on the enterprise side. There's no reason you need to use something like localStorage or indexedDb for anything, really. The only thing that buys you are performance and offline capabilities. But if security / keeping data "in the enterprise" is the priority then you can minimize what gets persisted locally.
My point was simply that no one is doing that. That isn't what these are for, and an enterprise that wants to provide a thin client desktop can't use anything that doesn't run the applications the business already uses, so they are going to be deploying an actual windows desktop hosted in the cloud using any of the many solutions available from tier 1 cloud provides or others to do that.
When someone adds virtual keyboard support so they can play Tetris in there on their phone, you will at least be able to eliminate any rational reasons.
I find these web desktop idea interesting but a solution looking for a problem. Part of me wants to post the Batman slapping Robin meme with Robin saying "Maybe I should develop a web desktop that runs in the browser"
At least for me as someone who made one, the inspiration was seeing really well done ones like OS.js or Windows 96 that got me thinking it was "possible" to make something realistic. But the core idea was less about making a desktop environment and more about my personal website being like someone RDP'd into my machine and could see all my stuff.
What a great way to make things that aren’t mobile responsive.
Maybe this one is better, but I’ve worked with a large enterprise web app that uses a similar approach and it’s horrible. Everything opens in a “window” and there is weird state being passed around windows (ie drag a item from list window to the form window to view details). Not fun on a desktop and zero chance of it working on a tablet or phone.
I've spent a lot of time on my desktop environment to make it mobile responsive. I kind of went in with the idea of making something that could fit into any viewport. Most of the time it works, as much as is possible to transfer the desktop metaphor into mobile. But because my apps often rely on third party libraries, sometimes responsiveness is less than ideal.
I've recently been trying to make something similar, mostly for fun, but I hope something cool comes out of it as it borrows many ideas from SmallTalk
The backend is written in Go and can run locally or on a remote server; Go is just the only language I've used recently that has nice http frameworks and can be compiled to a statically linked binary, which means that running the program is as easy as downloading a single binary, and that a running instance of it can possibly upload itself via ssh on another linux machine the user wants to access.
For now the frontend is web-based, written in Preact, and talks with the backend via some JSON endpoints, although I'm planning to add websockets sooner or later, for instance for double binding text input values.
The motivation behind this project is to try and build an alternative to terminal with tmux+ssh for accessing multiple different linux machines at the same time, while being able to easily monitor and manage them.
I swear they used to have a Terminal and a few other features that seem missing from the existing demo. I saw videos of it from nearly a decade ago where it had a lot more stuff.
If you want some Browserception, my desktop environment (https://dustinbrett.com/) can indeed do this. But after a few levels in Chromium you need to add a random query string (/?a=1) to the URL otherwise it stops working.
Meta, but I love the simplistic design of the landing page. That textured background is so much less brutal than a solid colour. I thought about using a background like that in my terminal (to give it a very subtle paper like quality) but was surprised to find nothing online about other people doing the same (I had hoped for screenshots and texture packs).
Eterm used to have a support pack with some nice backgrounds for tiling, which sadly appears to be more difficult to find than it would've been a decade ago. I did find a mirror¹, but that is purely because I remembered the filename for some strange reason. Some of the textures in tile/ are still quite nice, but not all of them work so well with our modern higher resolution displays from a quick play.
Its curious you couldn't find anything, tons of terminal emulators out there support this, I'm not sure what platform you're on, but on macOS, iTerm2 supports image backgrounds, on Linux, kitty is my goto customizeable terminal emulator, and I think even the new Windows Terminal supports them! Also, I think gnome's terminal emulator has an effect like this on it by default (or at least it did in some distro's default setup I've used)
It wasn’t that I couldn’t find a terminal supporting background images (indeed, this is very well supported). It was that I couldn’t find anyone referencing using subtly textured (slightly noisy) images to avoid a very solid background.
Most of the ones I’ve seen that support backgrounds have the usual options to tile/stretch the background, what’s stopping you from finding a pattern you like and making it a tiling background? There used to be a (now defunct) site out there called subtle patterns that had a massive CC0 library of these kinds of textures, toss it in an image editor, apply a color you like, tile it and call it done!
"Your Scientists Were So Preoccupied With Whether Or Not They Could, They Didn’t
Stop To Think If They Should" but "Any application that can be written in JavaScript, will eventually be written in JavaScript" continues to deliver
These kinds of things have been a recurring trend since the mid '00s, I do remember people writing Windows-lookalikes in JS even back then. Every time a new one pops up I get this very nostalgic feeling for an era of computing that, sadly, I think is dying real fast.
At least for me I have been making one for nearly 3 years and hope to be able to work on it for another 30 years. I use it as my personal website so perhaps this is an additional incentive for me.
Once I tried a Linux-based livecd distro with the UI being entirely in JS, ran through CEF or electron. It was an abomination, and awfully slow. There's just something so evil and funky about building an OS with web tech...
All the text in the Desktop is in French for me. Is that because I'm in the German-speaking part of Switzerland, and it's somehow geo-locating incorrectly?
What I dont understand is why is everyone so obsessed with anime. I opened this app and sure enough there was an anime wallpaper lurking in there somewhere.
Why are people obsessed with anything? If the wallpaper was related to Rock or Heavy Metal would you be asking the same question? Or maybe a reference to Start Wars or LOTR. They are just pieces of art/media and people are fans of it
lolwut. Japanese anime almost always reinforces traditional Japanese social and cultural norms. It's practically a teaching tool for kids there on how to behave in Japanese society.
No. Even Evangelion it's a satire on the Japanese nerd obsessed with making women sexual objects.
On Dragon Ball Vegeta (an obvious depiction of the old fart Japanese nationalist, Saiyans are like a samurais/ronin in space, same armor as the samurais et all) always loses against the open-minded and naive "ninja mountain-born singleton hick" Goku from Osaka/Kansai, which is the "progressive", "cheerful/open minded" and careless city/region from Japan.
Technology and modernisation from the US saved Japan and that's symbolized by Bulma.
Anime is just a medium, not a genre. There are good and bad anime, just like there are good and bad movies, books, and TV shows. I don't think it's fair to judge an entire medium based on a few bad examples. I'm not a huge anime fan, but I've seen some good ones.
Indeed there hasn't been much movement on that project in a while. My project was inspired by OS.js and a few others like Windows 93.
It's been actively maintained since I started it nearly 3 years ago. I hope to work on it for a long time to come. If interested in checking out the repo it's on GitHub as daedalOS.
I like this one. It's nice to see it utilizing a lot of browser enhancements that didn't exist when I had a go at making one.
How much server side infrastructure does yours use? I used just a tiny shim to do login, serve static files, and establish a websocket for a FileIO. It provided a socket on the server side that processes could connect to and run things on the browser side, much like X11 processes connect to the X server.
Every now and then I do a couple of tweaks to update mine. The first few things I tried out with ChatGPT were things that I wanted to make for my desktop environment (an IndexedDB filesystem and a transmit API through a messagePort system)
It may seem like wasted time, but you never know how things turn out. In the last week I extracted a lot of the little paint program I made for my desktop and turned it into a ComfyUI plugin.
Thanks! I did indeed try and use a lot of modern browser features when possible. It's a fully client-side app which only has static files. It would be cool to connect to X server and perhaps one day I will move into that area with a back-end, but it's been a goal of mine to keep it a fully front-end app.
Oh, I remember seeing that one some months ago and being super impressed! It inspired me to to make my own version of it, that even though I got bored with was a nice challenge to have. When you start making your own version, it gives some insight of how much work it really takes to build something like that, and it really is just wow.
At some point I humored the idea of using that type of a setup for our online system, but doubt the end-users are ready for that kind of a web ui just yet.
That's great to hear it inspired you! It is indeed a fun challenge but can be time consuming and it requires passion to keep going. I have become a bit obsessed with it over the last few years.
A few people have forked my project and are attempting to make things from it. I think it's cool they are doing that but I am happy to keep it as my side project.
Thanks so much, It's great to hear that! I have spent many hours working on this project for people to have the feeling of functionality and detail. My goal is to recreate everything an OS can do as much as is possible within a browser, and to the same pixel level detail as seen in Windows 10. It's a never ending project that I really enjoy working on. Thanks for checking out my video also, I plan to make another one shortly as that is a year old and I have added quite a bit of new stuff since then.
Thanks so much, I am happy to hear you checked them out and liked them. I still work on it nearly daily in my nights so I am thinking of restarting my weekend live streams as I did them every week in 2021.
I don't think you planned it as such but it's basically become a full advanced course into what you can actually do with react. Know you don't get many views but it's a tremendous resource and still holds up well.
Thanks for noticing. I have tried to be quite thorough and I enjoy trying to get every little detail.
I did indeed try and keep things as responsive as possible. Usually it works out but some of the apps are not as good as others when it comes to resizing and inputs.
I had some great memories from DX-Ball and was quite happy to find a random Russian JavaScript port that I was able to integrate into my site.
The copyright on the site is from 2009, so "inactive already" seems a bit unfair—even if that were the last commit ever, that's a 13-year run, which is a lot longer than I've ever maintained a side project!
Serious question, not trying to be a jerk. Why do people keep making these? Because they’re fun? I don’t think I’ve ever seen one of these gain traction.
As someone who has been working on one for nearly 3 years, it is indeed a lot of fun to make. I also learn a lot from doing it and I enjoy making the app as I use it for my personal website. It's my side/passion project and I hope to get to work on it for a long time to come.
They clearly have talent, I don't understand why they don't make products like Draw.IO or at least something more meaningful and original than a 2000's era desktop environment.
>> This is what happens when the Wozniak's of the World
Yes, surely this is proof that every talented coder is only useful when serving a preening egomaniac. I mean, who else is gonna handle all the hard work of getting publicity and taking credit for things?
> This is what happens when the Wozniak's of the World don't have a Steve to guide them. They do what they want without a clear vision to practicality.
If their goal includes "practicality", then sure, maybe this indicates that they need a guiding hand.
But, as far as I can tell with all these types of projects, the goal isn't practicality, so you cannot tell whether or not they need a guiding hand.
As far as I can tell, these projects all appear to have made progress towards their goal.
In summary, what you think their goal is, is not what their goal is.
This is going to be a bit unrelated to what you said, but I recommend looking into Mermaid diagrams in your MD files as a replacement for draw.io. It saved us a bunch of time and has given us documentation diagrams that developers actually want to update because they don’t have to spend 9 years aligning lines.
I think you are right you need a strategy if aiming for success, riding a wave or what you predict to be a future wave. But now millions of people are open sourcing so there is a fuck load of noise. To the point that I would say you don’t pay a company selling commercial software for the software ad much as you pay to not need to choose between a million free options with scant or bad sales copy and have some proof of customer success.
I forked one of these websites, and added more apps to it (developer included all of the app icons in Yaru, so this was an rather easy task). Personally, I wouldn't want to make my own, for a number of reasons.
> As a JS dev currently looking for a job, can you elaborate on this comment?
You can build a new framework and use that as your portfolio.
JS apps like these can be quickly tried in the browser.
That's not true of a new Go/Rust/Java library.
It's kind of true because the WASM GC proposal still isn't finished, so Rust and C++ are the only reasonable options, and also there's no native support for calling web platform APIs yet, so there's a lot of overhead for doing web stuff and you have to use a ton of JavaScript glue code (there are tools to help, but still...).
JavaScript / Typescript will probably always have a size advantage over WASM anyway because they don't have to ship any runtimes or standard library code. E.g. formatting a string or running a regex in JS is just a few bytes but in Rust you have to ship a whole string formatting/regex library.