Os.js – open-source JavaScript web desktop platform with a window manager
os-js.org
os-js.org
The open web is dying, and it's those messages that are killing it.
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...)
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.
I'm not sure without a dutiful audit that I would trust any of that to be better. Simply, its trading one set of issues for another.
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.
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.
Here is the list if you want to check it out: https://www.whoisthisjoker.com/jokerlinks/virtualoperatingsy...
[edit] I guess hackernews doesn't support markdown. Edited it to be more readable
If you like desktop environments maybe you'd like to check mine out too as I've spent a ton of time on it.
https://en.wikipedia.org/wiki/EyeOS
The initial release of OS.js was around 2015, over a decade later.
Exactly my problem too, what's the main use case for a desktop in browser?
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.
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...
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. :)
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.?
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
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.
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.
Value judgement for value judgement, I'd say the snark both ways is pretty fair. More than welcome to explain their pov.
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.
mb-5 = margin-bottom: 5x (something)
There’s a use for utility css, it’s becoming standardised in a way, and I predict it will continue to be used and understood in another 5 yearsIt’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?
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
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.
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 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.
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.
- 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)
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.
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 to re-learn CSS every two years, since I might not do front-end development for a year.
But I'm pretty happy to do so, because the best way sometimes changes. I never get very good.
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.
The window and state management can be demoed on my personal site at https://prettydiff.com
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.
Get laptop with all your company's business software preinstalled and maintained via cloud. Great for non-devs who mostly use email and office
On one hand, I think these things are cool. Why did they do this? Because they could.
On the other hand, I still wonder why they do it.
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.
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.
¹ https://distfiles.macports.org/Eterm/Eterm-bg-0.9.6.tar.gz
The last release (or even git tag) is from July 2021.
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.
Nobody said that Japanese cartoons that teach Japanese values were bad until you just did.
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.
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.
My personal website is the demo: https://dustinbrett.com/
Also nice how well it renders on a small phone screen, for a desktop OS simulation..
I just enjoyed a round of DX-Ball, that took me back a lot of years
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.
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.
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.
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.
I'd recommend people have a look at the intro video, as theres a LOT more than meets the eye: https://youtu.be/CkvKPspIPLs
Based on the docs https://manual.os-js.org/, they clearly have some serious intention.
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.
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?
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.
You can then use it to get a job.
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.
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.
Apart from some big companies, no one seem to use it.
No compiler.
No strong types.
No function return types.
And you can combine different types in unexpected ways https://www.destroyallsoftware.com/talks/wat
When the code fails, just refresh the page!