Hacker News new | ask | show | jobs
by ijidak 1422 days ago
I feel weird about what's happening in the browser.

I can't put my finger on it, but something seems off...

We're moving towards an operating system on top of an operating system (browser)...

And now, node.js and other runtimes, in the browser, on top of that.

I'm hoping we can flatten this at some point...

It seems like the core problem is that:

1. Operating system vendors have failed to provide UI SDKs that beat HTML & CSS (plus browser APIs for modification of that HTML and CSS).

2. Operating system vendors have failed to have such a UI SDK work cross-platform across operating systems.

3. Operating system vendor UI SDKs do not allow UI to be bootstrapped dynamically (e.g. retrieved dynamically over the web) and built-up in code via APIs as simple as browser APIs.

4. A failure in open distribution and discovery of apps.

Am I wrong?

Is this direction in computing a failure of OS vendors to get together and solve this problem?

This seems like a source of sudden disruption some day...

I feel like one day Microsoft is going to wake up to find they're not needed anymore.

13 comments

OSes do not need to allow the safe execution of arbitrary code downloaded from an ever-changing external server. OSes don't need to support dynamically downloadable code, updates, and plugins. OSes don't need to provide any level of accessibility to applications that don't bother to provide their own. OSes can get away with not providing any distribution or discovery mechanisms, let alone open ones.

As a result, OSes are able to offer a lot of features and simplicity that would be impossible or painfully difficult otherwise.

You can see that as the fault of OS vendors, and in many ways I agree, but it's also their strength and the source of their advantages.

If OSes were to provide all of that, they'd end up looking a lot like web browsers. So I think it's mostly a matter of allowing web browsers to be web browsers and operating systems to be operating systems, even if that means that web browsers become a type of operating system themselves—a type with many added constraints.

The OS vendors are at least working on it from their side. Sandboxing, UI toolkits, and accessibility are improving. I'm just guessing that the optimal endpoint is going to be some distance from the optimal endpoint of web browsers, because the underlying constraints are different.

And some of extra layers are being removed: consider WASI, for instance.

You're not wrong!

its all about security. the operating systems weren't designed for security. they were created pre-internet where you compiled all the code you ran on your operating system. its an unfixable architecture due to the nature of the API.

this is why the browser is winning. Javascript doesn't have access to your operating system. we finally have a way to allow arbitrary code run safely.

we then extended this to webassembly. this is how we're going to fix everything. the operating system is going to melt away and webassembly runtimes will rise. the end game is when webassembly runtimes run natively on hardware, and control is finally returned back to the end user.

Won't it be the opposite, control will fall further from the end user? All code is served from some remote endpoint, which you're unable to load if your device doesn't attest (like Android safety net) or some other arbitrary reason. That plus browsers are already too complex to replicate.

Unless you mean that we'll have webassembly packaged in nice little .exes or .apks or some other app bundle so we can at least download them?

I don't know what they meant, but in principle, I don't see why WebAssembly apps can't be downloaded, since browsers do it? (Ideally they should be signed, but using a more distributed scheme, like DNS.)

Due to phishing, it seems like most people do need security software, but not necessarily provided by the OS vendor. It could be from a plugin.

The biggest issues are lack of resources and lack of standardization. What organizations have the people to do all these things, besides the OS vendors?

This is a problem that has already been solved. Look into PWA
By control, you mean browsers that consistently enable functionality to take away privacy. The same permissions you're referring to can already be managed using FlatPak, Snaps, etc
> one day Microsoft is going to wake up to find they're not needed anymore.

In 1995, Marc Andreessen said [Netscape will soon reduce Windows to] "a poorly-debugged set of device drivers".

Interesting. It looks like this day is almost here.
I think you're seeing too much into this.

What matters is user, in this case developer experience.

Having reproducible environments shareable with a link is a statement to how far we are heading with web technologies and what can be achieved.

The browser is the last lingua franca of computing we have, and that's a reason for cherishing such advances, not bring back 40 years old debates of different OSs having different APIs and capabilities.

Wouldn't you like some OS that you can install everywhere, without Microsoft getting in the way, and have a lot of applications, all sandboxed with segregated data?

We are getting it. Firefox needs a DE. If the iframe security improves just a little bit, it can even be a 3rd party DE.

And yes, at some point I hope people do flatten it. People already tried a few times, but it was too soon.

Eventually we will have invented mainframes with X thin clients.
It's more like a distributed Unix installation with a shared central /usr.
> Am I wrong?

Kind of. It’s more that you're missing an important point. Software developers don’t want to be isolated to a platform.

I am writing my own higher level operating system in Typescript. In runs in the browser with a localhost Node instance or with Tauri. I provide a run time configuration for Electron but I cannot officially support Electron because it provide no support for SHA3. This means my application can almost equally anywhere that runs Node or Tauri.

The goal of this OS I’m writing is to solve for decentralization. I cannot do that if I am centrally tied to a single lower level OS. I don’t need identity management or DNS. I just need a network and a collision-free tiered identity scheme.

But you ARE tied to the web platform, which IS an OS. Just kind of a crap one.

Look into web assembly.

It's not an OS within an OS. Browsers aren't fully responsible for abstracting hardware, providing a filesystem, and doing low-level network stuff.

I dunno why people started saying "OS within an OS" just cause Chromium is multi-process.

There are hundreds of APIs in the web platform including USB, gamepad, low-level graphics.

Look into how Chromebooks work.

Go take a real serious look at what would be involved in implementing a web browser from scratch that would be compatible with Chrome and Firefox.

Now that compare that to the Genesis protocol.

The web platform is an overlay operating system.

The OS vendors don't really want the overlay operating system (i.e. browsers) to be better. Because that might make their OSs obsolete.

There is an opportunity with web assembly to break out of the browser and do the overlay operating system better. Amazingly, most developers seem to not realize this, and have decided that web assembly will only need to run in the terminal or something. So either momentum or entrenched interests or stupidity will probably prevent the web assembly environments from standardizing on UI or device drivers etc.

Microsoft had not been needed for a long time.

In my opinion most UI stacks beat HTML+CSS. Which is a truly horrible way to start to begin with. HTML was never intended to be abused for that purpose.

The problem now is that a vast number of people know web (html, css, javascript) etc and they have little knowledge of UI libraries at the OS or library level.

The argument that it is difficult to create a cross platform UI is not a good one.

Delphi solved that a long time ago.

With Canvas you finally have the basic rudimentary structure needed to make sense.

You can't make all graphics canvas based. Too much of a performance hog. It's not ready because who wants constantly spinning fans. No, reducing FPS is not enough because it makes things choppy
> Operating system vendors have failed to provide UI SDKs that beat HTML & CSS (plus browser APIs for modification of that HTML and CSS).

Why would they be fighting against HTML & CSS? The best path is to embrace HTML & CSS from the OS level, that will provide the "flattening" you are looking for.

Regarding 1., Forms, WPF, Qt, VCL, FireMonkey,.....

Being doing desktop development since 1990 and Webdev since 1998.

If anything I guess it is the failure of the Year of Desktop Linux, that made many startups adopt Electron, because that is the only way for them to target the Linux "desktop" with low effort.

I rather have something completely new to replace the web. It's actually stupid to fix something when 100000s of different places depend on the bad behavior. Especially when one of them is the author of the most popular browser
It's not even about OS, or GUI toolkits.