Is it just / ?
I kid. But really, besides “its all a file”, if you take away the gui, is the only difference the syntax ? How libraries interact? How disks are mounted ?
If we stripped all ms’s junk out and made windows open source, would we still prefer linux?
When you get to a very basic level, is one of them more efficiently coded?
Up until 95, Windows was mostly a desktop environment for DOS. From 95 to ME, Windows was an OS that used DOS as its bootloader and compatibility layer. Not sure how to put it, but it was simplistic and fundamentally different from Linux.
The thing with NT-based Windows (including modern editions) is that the underlying system is joined at the hip with the GUI. Whereas Linux with your choice of coreutils is a perfectly capable OS without the GUI, many features of Windows are only accessible through the GUI.
Given enough time and resources, pretty much anything exclusive to Windows could be ported to Linux and vice versa. A lot of the difference just comes down to history and the ensuing conventions, workflows, and file hierarchies.
Even if we stripped out all the cruft and spaghetti code from Windows, there would be lots of nasty idiosyncrasies in its design, informed by its OS/2 and VMS (see Dave Cutler) heritage, profit maximization, revolving door of devs and interns, and years of bending over backwards to accommodate legacy programs.
You rather should ask what separates Windows from all the Unix-likes. Windows is the weird one, not Linux.
This got me thinking, are there any other non-Unix-based OS’s left? Really, for any hardware more sophisticated than say, an ESP? At all?
I honestly can’t think of one.
The OS bundled with TI-84 Plus CE Python Edition graphing calculators is a wacky one. It runs primarily on an eZ80 core for backwards-compatibility with earlier graphing calculators while also handling an ARM core for Python functions. Parts of the assembly code can be traced back to the TI-82 calculator ROM from 1993.
Most people wouldn’t think a calculator would ever need a security solution, but it even verifies application signatures so students are less likely to load cheating utilities on them.
The HP 49g+/39g+ and their descendants the 50g/39gs run the same operating systems as the older 49g/39g except most of it runs in an emulator so they could replace the old Saturn CPUs with ARM ones. And it still runs way faster than the native version on the older devices somehow.
Plus the entire operating system is written in Reverse Polish Lisp, one of the strangest languages I’ve ever seen. Very strange devices, but still leagues ahead of any calculator produced since (at least the 49/50, the 39 is very confusing)
My TI-89 got me through college.
OpenVMS is still semi-maintained. It’s DEC’s old operating system that Windows NT draws some inspiration from because Microsoft hired a bunch of ex-DEC engineers.
There’s also 9front, a fork of Bell Labs’ Plan9.
Wegmans’ checkout uses Toshiba 4690 OS, which I think is vaguely descended from CP/M.
I think IBM still maintains their i operating system, which used to be called OS/400.
Network equipment like enterprise routers and switches tend to run weird unique things, Cisco equipment runs IOS and Adtran equipment runs AOS.
Oh man a stew of them. Nice
TempleOS?
Eh, TempleOS is the answer to everything, it doesn’t count.
TempleOS is the answer to everything
I assume it’s stuck on version 42 then?
It’s no longer maintained, right? So wouldn’t count.
It’s already been made perfect once. What updates would you make it divinely inspired code?
I wouldn’t update a thing. I would pick and choose the parts I like when I like them.
Haiku comes to mind
Haiku is pretty unix-like, I wouldn’t count it
Fun wiki hole there. Nice.
FreeBSD?
FreeBSD is closer to Unix than Linux is
Fair enough, never took a real look at it.
FreeBSD is actually a “real unix”, in the sense that it is derived from the original source. Wikipedia has this nice ancestry tree: https://upload.wikimedia.org/wikipedia/commons/7/77/Unix_history-simple.svg
I think its easier and shorter to say what is the same between the two than different, but some things that are different:
- Filesystem (ex. Linux treats everything as a file, more flexibility in organization, more compatibility for differing systems, etc)
- Security Model (NTFS vs UNIX, selinux, ACLs, etc)
- File Execution (File extensions don’t really matter in Linux - based on file permission not extension, ELF vs PE, etc)
- Kernel (Monolithic vs Hybrid kernel systems - Windows hands off to HAL vs the Linux kernel doing core functions)
- System Calls (Windows use Win32/NT APIs, Linux uses POSIX-compliant)
Performance is dependent on use case, but in general:
- Linux uses fewer system resources
- Linux has faster boot time
- Linux has better CPU/disk throughput
- Windows has better gaming driver support
- Linux has higher stability/control (hence why its the defacto server OS)
If we stripped all ms’s junk out and made windows open source, would we still prefer linux?
In what context? For gaming maybe, but that’s one single use. There is more to computers than video games, at least for the majority of Linux users. I wouldn’t trust Windows on any server I run.
Note: Gaming performance is purely based on money spent. There’s no fundamental reason windows would have better gaming performance, it’s just that there is more money being paid to engineers and vendors to support DirectX and related tooling.
Then there’s the self-fulfilling aspect that, windows has the largest marketshare, so devs are going to spend the most money targeting it, so that they can get the most money in return, which means more people will use it, which leads to the high marketshare.
The ONLY reason Linux use is seeing the few percent blip in gaming is because Valve has dumped truckloads of cash into making it viable.
PlayStation proves gaming is just fine on Unix.
From my basic understanding: Windows has a microkernel hybrid style architecture. It’s kind of like microservices. Instead of all resources being shared within a system process, You get a lot of tiny services all making calls to each other and the main kernel.
This introduces a lot of overhead because variables need to be sent and requested between processes. And they don’t simply share them in the same memory.
Linux on the other hand has most services under one monolithic kernel and they can all access the same memory. So there is no need for all of that intercommunication between services.
At least that’s my basic understanding and if I’m wrong (which I probably am), then somebody on the internet will now correct me.
You’re right in some ways; Windows is closer to a microkernel than Linux, though it doesn’t perfectly adhere to the philosophy of - there’s supposedly weird things like drawing calls in the Windows kernel that should be in microservice, I’ve heard
However, I wouldn’t necessarily call microkernels a detriment; in fact, Linux is a bit of an odd duck for going monolithic - modern Apple operating systems also run on a microkernel. Monolithic is an older architecture, and there are worries about the separation between components and system resilience e.g the webcam driver can’t crash the whole kernel.
In practice, it’s less of an issue, and there really aren’t any open source microkernel operating systems that are practical for production desktop and server use, which has a microkernel though there are certainly solutions for embedded systems.
QubesOS is built on Xen hypervisor, which uses a microkernel design, but Linux is then run in multiple VMs on top of it, which makes it more of a technicality in my eyes. RedoxOS also runs on a microkernel and is certainly intended as a desktop operating system, but its hardware support is limited; GNU Hurd is even more limited in that respect and not really usable.
See xkcd, press upvote
Yes we would still prefer Linux. Windows is just a single object without any modularity. With Linux by itself is of course just a barebones kernal waiting to be added to. You can choose which gnu libraries to use you can chose which package manager to use you can chose which desktop environment to use (or ommit it entirely.) Windows doesn’t have that option.
As well since the source code for linux has been open for over 30 years people know how it works, it would take ages for people to study windows and actually figure out how to do anything with it.
They come from completely different heritages.
GNU/Linux is a reimplementation of Unix, an operating system that was originally designed mainly for universities, but also mainframes.
Windows is descended from DOS, an operating system intended for home computers.
Nowadays Windows is the only widely used non-Unix-like OS; GNU/Linux, Android, macOS and iOS are all Unix-like.
If Windows became FOSS, I at least would likely switch to it. It’s really the FOSS philosophy more than anything else that makes me want to use GNU/Linux.
The entire difference is the kernel. There’s a reason why Apple moved to BSD forever ago for their OS. Somebody did it better than they would have been able to from scratch. Everything above that level on up to the DE matters less as far as stability and performance goes for desktop users.
Somewhat of a cheap answer, but I feel what illustrates the difference quite well is that Linux follows the design from UNIX, which was a research project with stupid amounts of money to at least try to get things right. On the other hand, Windows originated from an OS, which was referred to by its developers as “Quick and Dirty Operating System”.
And I do feel like these foundations have informed the design of all the layers built on top.
Literally everything.
Okay not everything, I’m sure they share some basic libraries like openssl. But the core OS is apples and oranges.
I started in IT as a windows guy in a unix heavy lab. I aliased windows command line things to output a message to use the linux version of the command so that I would learn it. so if I typed dir I would get a message that said use ls.
Average Linux command naming: yoink
Average Windows PowerShell command naming: Do-QuickPleaseRunProgramDeleteCache -Now -Force -NoFail
The licensing: Free and open source vs. paid, proprietary, and closed source. That really is the core difference, the licensing, and all the differences that come as consequences of that difference.
What separates the Linux kernel from the (Free)BSD kernels is copyleft/reciprocal licensing vs. permissive licensing.
At a super basic level, MacOS, Linux, and Windows all use different kernels.
From a very basic viewpoint. The kernel is basically the piece of software that gives each piece of hardware their instructions.
At the absolute most basic level, assuming equal hardware, all the kernels are working with same set of instructions(store this value in this register, move to this location in the stack, read this value, etc) but they issue those instructions in different orders to achieve very different results.
The NT kernel that windows uses does basically everything in a different way than the Linux kernel. To the point that their only real similarities are that they speak the same language to the bare metal hardware.