On the other hand, it's kind of crazy no one can make an OS except Windows, Apple and Google? Trillion dollar market and no one can compete.
On the other hand, it's kind of crazy no one can make an OS except Windows, Apple and Google? Trillion dollar market and no one can compete.
Browsers display content that follows a very specific set of standards. There are also suites of tests to verify your compliance with those standards. So, every browser that is standards compliant should work for the vast majority of websites in existence. Still a big lift but doable for talented team.
Now an OS without application compatibility is kind of DoA unless there is a very compelling reason to switch. Add in hardware compatibility and it gets even worse.
Much bigger hill to climb then incorporating an existing browser engine into a custom spin of a browser. Even a browser engine from scratch would be smaller than a new bare metal OS.
There’s a huge market for OSes that can consistently run Windows software. There’s no market for a brand new general purpose OS that can’t run anything until software developers port to it. Similarly, nobody is keen to pay anyone for an OS that can run Android or Linux software when they can get that for free.
Is it? There is Wine/Crossover on Linux. Also, users pay for Sailfish OS, which can run Android apps (while providing better privacy).
It's partly that (after all so long as your new OS has a decent browser most people won't care), but also hardware support. Every single driver has some specific hardware's ridiculous and strange quirks and "yeah we comply with that standard except for all the times we don't", and re-writing every Windows, Linux, or *BSD driver for $NEW_OS just doesn't pencil out.
OS is the perfect software to create lock in for consumers. Once a company is successful there, it is very difficult for others to compete.
A nearby comment repeated the quote "the browser is the OS."
The OS game is over. Desktop computing is becoming a professionals-only thing. We can talk about pros and cons of Windows, MacOS, and Linux, but it's a shrinking market without room for a fourth player.
OS is not only desktop. There is also mobile OS, like KaiOS, which is the 3rd most popular phone OS.
Building an OS is easy and straightforward.
Now let's make that OS talk to a graphics card--whoops, no Nvidia for you, peon!
An OS isn't a problem. Hardware support on an OS--that's a huge problem.
Take for example FreeBSD, it's not mainstream but also not too obscure, they get some funding through the FreeBSD foundation, and yet wifi drivers are still an issue.
And then make people want to write for (and make money off)
(The Windows Phone problem)
RIP BeOS
If you mean a paid, consumer OS, you've got to keep in mind that they're essentially tied to a hardware product. The vast majority of your target market is not installing an alternative OS manually. You would need to either sell hardware with your OS or get hardware companies to package your OS over the existing options.
With how mature the personal computer market is, this is a very big hurdle.
…and Linux, Android, WebOS, FreeBSD, OpenBSD, NetBSD, DragonflyBSD, GNU Hurd, Minix, QNX, Inferno, L4, FreeDOS, OpenSolaris forks like Illumos, OpenIndina and SmartOS, the various embedded real time OSs, the various Sony PlayStation and Nintendo Switch system softwares, various different bootloaders and UEFI interfaces, networking firmware like Draytek firmware, Cisco IOS, etc.
And that’s not even covering the numerous hobby OSs out there like Haiku, SerenityOS, ReactOS, TempleOS, SkyOS.
Then you have experimental OSs like Singularity too. There’s numerous examples of them alone but I think you get my point. :)
Linux?
Linux has entered the chat...
Even though I run it full time now personally; I still think Linux has massive problems something like Windows or macOS don't have: app development. You can't target a thing, you have to target all the things and bloat your app like crazy so you might as well just ship a chromium based app because its practically the same thing anyway (shipping an entire userland because its not stable anyway)
If there were instead 10 viable and competitive desktop operating system with no clear leader, and macos and windows were there just among the others.. wouldn't you try to target as many as you can? Maybe we can think of linux itself as a microcosm of OSes we never got to have, and you have to target as many variants as you can in order for no dominant force to emerge. It ain't pretty but its what we have..
The part of the "microcosm" that prevents you from being able to easily compile a binary and have it run on a wide variety of distros doesn't have any upside I can see. The fact that you have to jump through hoops to target particular glibc symbol versions and that a stable OpenSSL ABI gets rug-pulled in new distro versions every few years aren't key to any benefits of distro/OS diversity. What would suffer if gcc/clang had a `--min-glibc-version=...` flag and OpenSSL settled on a long-term stable ABI subset for establishing TLS connections?
The way this all gets worked around is that people come up with stuff like Docker or Flatpak that ship their own copies of as many dependencies as possible. The disadvantage is that now I can't just patch an OpenSSL vulnerability by updating the system's copy of OpenSSL, the way Windows can for all software built on SChannel.
Have you heard of Cosmopolitan Libc? A single APE binary for every platform out there.
This is just not true. You can still write GTK2 or SDL apps, you just need to package your app for the target distro or open source it because it's an open-source-first ecosystem.
If you're looking for binary stability and to ship your app as a file, ELF is extremely stable. If your app accesses files, accesses the network through sockets, and use stable libraries like SDL or GTK it will work fine as a regular binary and be easy to ship. People just don't want to write their apps in C, when the operating system is designed for that.
Many native apps like Blender, Firefox, etc ship portable Linux x64 and arm64 binaries as tar gz files. This works fine. You can also use flatpak if you want automatic cross platform updates but yes, the format is unfortunately bloated.
It's not that easy to ship a JavaScript app on other OSes either and electron apps abound there too.
What does ELF being stable or people not writing apps in C have to do with Linux binary compatibility? No matter what language you use, it’s either dynamically linking to the distro’s libc or using Linux system calls directly.
Also, I recommend taking a gander at what the Linux build process/linking looks like for large apps that “just work” out of the box like Firefox or Chromium. There’s games they have to play just to get consistent glibc symbol versions, and basically anything graphics/GUI related has to do a bunch of `dlopen`s at runtime.
Flatpak and similar take a cop-out by bundling their own copies of glibc and other libraries, and then doing a bunch of hacks to get the system’s userspace graphics libraries to work inside the container.
thats been a solved problem for years with flatpak