Alt text

The debate over which operating system is better for desktop computing has been the subject of nerd rage for decades.

The way a person uses their computer says a lot about them. Every person has a unique personality and style, and their computer is an extension of those attributes. The way applications and operating systems are used varies completely from one user to the next, and these needs constitute what’s called a use case. A use case describes how the user interacts with the computer, which can be narrowed down into a few common categories:

  • Everyday Computing – Web browsing, email, and casual use.
  • Entertainment – Streaming, gaming, and media consumption.
  • Productivity – Office work, coding, and creative tasks.
  • Business Applications – Accounting, CRM, and industry-specific software.

It’s important to understand your use case when choosing a computer, whether for personal or business use. How much RAM are the applications expected to consume? How much storage is needed? How much CPU and GPU power is necessary for running applications and real-time graphics? And most importantly, which operating system will be installed?

Windows and Linux take very different approaches when it comes to ecosystem and control.

Windows: A Commercial Product

Windows, being a commercial product, conforms to a specific set of expectations by users and developers alike. Microsoft has complete control over the Windows operating system and development tools, providing platforms such as Visual Studio and a standard set of software libraries, APIs, DLLs, and code examples and as well as a vast support network to help developers to create applications for the Windows software ecosystem (we will talk more about some of these later in the article). Microsoft has a long history of using Customer and developer feedback to tune Windows and make it what it is today. This ecosystem solidified Microsofts reputation for developers and users alike and is the biggest reason for their historic market dominance. In a way Microsoft can be compared to Apple in that they retain full control over the software development in a centralized way to ensure compatibility and tight integration, but unlike Apple, Microsoft has no direct control over the hardware platforms their software runs on (with the exception of their Surface hybrid tablet PCs) Standards for Hardware development and compatibility in the PC space are handled by standards bodies such as the IEEE, and PCI-SIG industry groups which set the standard specifications for technologies such as PCI Express, USB, Displayport, and many more.

Linux: An Open Platform

Linux, on the other hand, is a completely open platform that anyone with programming skill can contribute to. While Linux doesn’t have a single standards body, the Linux Foundation, led by Linus Torvalds (the original creator of Linux), oversees the development of the Linux kernel and manages driver compatibility across different hardware platforms.

The open nature of Linux allows for incredible flexibility and customization, but it also creates challenges in maintaining compatibility and user-friendliness across different distributions and hardware configurations.

Technical differences between Windows and Linux

Now we are going to get technical, buckle up!

There are a lot of differences between these operating systems, but one of the biggest is in how the kernel is developed. An operating system is a collection of software applications,and the main core system responsible for coordinating these programs and services based on input from the user is the kernel. There are different types of kernels, monolithic, microkernel, hybrid, exokernel, and nanokernel each with a differing design and the extremes of these kernel types are Micro and Macro Kernels. To understand the difference between these we must understand what a kernel does.

Alt text

Userpace is an area of memory the kernel dedicates to running programs.

kernel space is the area dedicated to kernel extensions, and device drivers. This space is where the kernel interacts directly with the system hardware.

A Macro Kernel runs the vast majority of drivers and Inter Process Communication or (IPC) (Not to be confused with Instructions Per Clock IPC) Virtual memory, filesystems and more in kernel space, which is usually compiled as a part of the kernel itself, whereas a microkernel only uses low level system drivers,Scheduler IPC and Virtual memory in kernelspace and runs everything else in userspace. As you may have guessed Linux runs a Macrokernel as the majority of drivers are compiled into the kernel itself, but the kernel is flexible enough to allow for modules to also be used. Windows on the other hand uses a Hybrid Kernel which has all of the same features as the microkernel, but uses all operating system services in kernel space, this provides better performance and reliability.

In general monolithic kernels are much larger due to the memory management, filesystems, scheduler and more running inside the kernel itself. This gives them much higher performance than microkernels due to all functions being readily avaialble inside the kernel and not relying on modules outside the kernel itself, but this comes at the cost of complexity, if one service or function fails it can crash the whole system. Micro kernels are by contrast much smaller since only core components are loaded into the kernel itself, everything else is loaded as modules, this makes them less performant as the kernel has to wait on modules to load, but less likely to crash the whole system of one of those modules fails. As we can see, when it comes to which kernel type is used, its not really a matter of which type of kernel is better, but rather the decisions developers make when implementing them.

Another technical area in which Windows and Linux are very different is:

Filesystems
A filesystem is a logical system for organizing and manipulating files on a disk. There are an almost endless number of filesystems in use by various opertaing systems but we will cover a few of the most common ones here.

Fat32 - EXFat - NTFS EXT4 - XFS - BTRFS

Most of these modern filesystems are whats called journaling filesystems, which means they write to a journal before writing file changes to disk, that way if power is lost the files can be recovered form the data in the journal.

  • Fat32 /exfat is used primarily in bootable flash drives used to install both Windows and Linux. Fat32 used to be the dominant Microsoft filesystem until WindowsNT
  • NTFS is the gold standard on Windows and has been since the introduction of Windows NT in 1993.
  • EXT4 is the latest version 4 of the Extended Filesystem, EXT has been around as long as linux itself, originally called the minix filesystem
  • XFS has an interesting history, originally developed as a filesystem for high end Silicon graphics Unix workstations and supercomputers back in 1993.
  • BTRFS one of the newest Linux filesystems has a great feature called “Snapshots” which works similar to a tool Windows has called restore points. It allows to roll back the software on the system to a previous time that a snapshot of the entire system was taken and resolve file or application issues.

The way in which Windows filesystems handle disks and directories is completely different from Unix and Linux Filesystems:

In windows we have a concept of “drives” The drive represents each physical hard-drive or SSD installed in the computer starting from the main drive letter “C”. The reason we start with drive C and not A is that drive A and drive B used to be reserved for floppy disk drives in early versions of MSDOS, it became such a ubiquitous term it just stuck.Drive C is considered the root of the filesystem, and is represented as c:\ at the command prompt. If we are on the C drive and want to switch to a different folder called “folder” on a different drive and list its contents, say drive “D” we have to switch to the D drive first, in the command prompt that would look like:


d:           (to change to drive D)
cd\folder    (to change directory to the folder called "folder")
dir          (directory list of that folder)

Linux has no concept of drives and instead uses folders or directories. In Linux the root of the filesystem is not a drive letter but instead a folder name called “/”. All other folders are a subdirectory of the root of the filesystem so the Linux equivalent of switching to the C drive would look like this in the Linux terminal:


cd /         (change directory to root)

if we have a user on our Linux PC called BOB and we want to switch from the root of the filesystem into his home directory and list the contents that would look like the following:


cd /home/bob (change directory to the user bobs home folder)
ls           (to list the contents of the folder)

All user account folders are stored in home, and you see all of the folders are sub folders of “/”

As you can see Windows uses backslashes in the filesystem structure, and Linux uses forward slashes, this is often intially confusing to those coming from Windows to the Unix/Linux world.

Partitioning is the means by which the Filesystem breaks up the disk into usable space it cordons off sections of the disk to be used to store files called sectors (Windows) or Blocks (Linux).

The Windows disk management tool called "diskmgmt" 

Thumbnail In windows as seen here, each new partition created has a corresponding drive letter associated with it as defined by the user.

The Linux terminal based partitioning tool called "fdisk" 

Thumbnail Everything is handled as directories in the Linux partitioning tool.

When partitions are created in Linux they have to be mounted. Many Linux distributions have graphical tools to do this but Linux users often use terminal tools for these tasks. Linux uses device names for storage devices and they are all stored in the /dev/ folder. Linux has a configuration file called fstab that stores the known mountable partitions the computer has access to and when the mount command is run Linux will mount the partition to a folder in the filesystem, this might look like:


mount /mnt/myfiles

Or if mounting manually from the second partition on the first physical disk in the PC it would look like so:


mount /dev/sda2 /mnt/myfiles

 example fstab file 

Alt text

Note that there are long sets of characters next to these drives,these are called UUIDs, 
Devices can be mounted by device name or UUID, UUID is preferred because the ID is unique,
even if the device name changes due to a hardware configuration change, 
the disk is still mountable by its uuid. 

Again most Linux distributions have graphical tools for handling these tasks as well as the terminal based ones, which speaking of distributons:

        Linux Distributions (Distros)

Thumbnail

Linux isn’t a single operating system—it’s a collection of open-source software packaged into different distributions (or distros).

Some distros, like Linux Mint and Ubuntu, are designed to be user-friendly, with graphical installers and pre-configured settings that work out of the box. Others, like Arch Linux, are aimed at advanced users who prefer to manually configure every aspect of the system.

For new users, it’s wise to start with a beginner-friendly distro rather than jumping into a power-user distro like Arch or Gentoo.

Software Installation

Installing software works very differently on Linux than on Windows. Windows: Download and Install

On Windows, a user typically goes to a website, downloads a file with .exe or .msi file format, and installs it with a wizard-based installer. This makes it a very easy graphically driven process for the end user and the packaging of the application is done by the developer, and they only have to target one platform.Microsoft provides the toos needed to package the applicaotn for Windows. The install process for Windows is consistent across all versions there’s rarely a need to use text commands since most functionality is handled through graphical interfaces.

Linux on the other hand uses software repositories—centralized sources of software maintained by the developers of Linux Distributions. Linux installer packages can be downloaded and installed similar to the way Windows works, but this is far less common due to compatibility and dependency issues between different versions of Linux. Applications are installed using a package manager like apt, dnf, or zypper which are command line tools used to download application packages and install them on the system.

Many distros have graphical package managers that look similar to this software management tool
which is part of a system management tool called "YAST" in OpenSuse Linux

Alt text

More recently, Linux has introduced “universal” package formats that work across different distros:

  • Flatpak – A containerized format that includes all dependencies.
  • Snap – Similar to Flatpak but developed by Canonical (Ubuntu).

These formats allow you to install applications more easily without worrying about compatibility issues.

     The KDE Software Center (a flatpack app store) 

Alt text

Philosophical differences between Windows and Linux

One of the biggest philosophical differences between Windows and Linux in their development principles. Linux follows an open-source model, and windows follows a closed source model. Open source software (often abbreviated OSS) is software that produced under an open source license that requires the developer of the software to freely publish their source code for anyone to review. This is in stark contrast to closed source models that do not share their code and consider it their intellectual property. Whereas Most Linux software is provided under open source licenses, there are exceptions, with the same on Windows, many of the applications written for windows are provided with open-source licenses, but Windows itself is closed source. The open-source model ensures transparency and collaboration. There is no guesswork at what a company’s software might actually be doing vs what is advertised, whereas with closed source there is no such protection. Developers around the world are free to modify existing products and release their own versions as long as their product is not a direct copy of another persons work and their code gets published. The Linux community by and large are proponents of open-source software and often reject closed source applications and tools.

Many Open source applications are licesened under the GNU GPL
(General Public License) 

Alt text

Another big difference in philosophy between Windows and Linux is the use of command line tools. Windows has graphical tools for almost everything. The command prompt and PowerShell are text based tools that exist for power users, but most users can go years without opening them.

Linux relies heavily on the command line for certain tasks—especially for system-level configuration and troubleshooting. Even though modern Linux desktops offer graphical alternatives, experienced users often find the terminal faster and more powerful. In later articles we will cover Linux terminal commands in depth.

                   The Linux Terminal 

Alt text

Linux was initially developed as a developer’s operating system. Early versions required users to compile the kernel and manually install various modules and packages—solving dependency issues along the way. For someone coming from Windows, this was an absolute nightmare.

Graphics drivers, especially for NVIDIA cards, were a particular pain point. Users had to disable existing nouveau drivers via kernel parameters, manually resolve dependencies, and configure XFree86 (later Xorg) via the xorg.conf configuration file.

Thankfully, things have improved significantly. Most modern Linux distributions handle drivers automatically, and the complicated Xorg server has been replaced by Wayland, which offers better performance and fewer compatibility issues. Today, installing Linux is no longer an advanced task—if you can install Windows, you can probably install Linux.

Customization and Choice

Windows offers consistency and ease of use, but Linux offers unparalleled flexibility.

Windows follows a consistent design language across different versions, which makes it easy for users to adapt to updates. However, unless you use third-party software, you have very limited control over the look and feel of the interface.

Linux: Customizable to the Core

Linux offers multiple desktop environments (called window managers) that give users control over how their desktop looks and behaves. Popular options include:

  • KDE – Highly customizable with a modern interface.
  • GNOME – Streamlined and minimalist.
  • Cinnamon – Traditional desktop environment similar to Windows.
  • Cosmic – Designed for workflow efficiency.
  • LightDM – A lightweight and simple option.
  • Qtile – A tiling window manager for advanced customization.
            KDE Plasma 6 Desktop (the latest version) 

Alt text

This flexibility is a dream for power users but can be overwhelming for new users.

Use Cases

Since we covered these systems in some depth, where do they make the most sense?

  • Every day Computing: Linux can service this area well as long as the user doesn’t have specific application requirements that arent avaialble on Linux.

  • Productivity: There are many open source alternatives to common proprietary software solutions in this area such as Open Office, Thunderbird, and more. With the ability to run Microsoft Office 365 in a web browser, the Microsoft Office ecosystem is also avaialble on Linux. Linux can fill this role quite well.

  • Business applications: This is one area where Linux is somewhat lacking, while there is a vast library of great open source business applications, and there are many popular applications that are fully supported on Linux, many of the tools developers and creators use every day are not on Linux, Im looking at you Adobe! For this reason its a chicken and egg scenario, users must keep using Windows to use the software experience they are accustomed to, or switch to a new system with software vastly different, and in most cases far less functional than what they typically use.

  • Entertainment (GAMING!)

When it comes to gaming, Windows has historically been the go-to platform due to its support for DirectX and widespread game compatibility. Directx is a Microsoft technology that consists of a group of low level APIs that developers use to create video games for Windows.However, Linux has made significant strides in recent years with advancements like:

  • Proton (by Valve) – Allows Windows games to run on Linux through a compatibility layer.
  • Wine – A compatibility layer that lets Windows applications, including many games, run on Linux.
  • Native Linux Support – More developers are releasing Linux-compatible versions of their games.
  • Vulkan – A modern, cross-platform graphics API that offers better performance than OpenGL and is well-supported on Linux.
  • SDL – (Simple Direct Media Layer) Originally developed by Engineers from Loki Games (a company that used to port Windows games to Liunx in the early 2000s)provides low level APIs to Linux games similar to the way DirectX works on Windows.

Alt text

Proton is a technology created by Valve to be able to run games on Linx without requiring them to be ported to the platform. This project is based on WINE which is a project that has been around for many years that aims to bring gaming compatability to Linux by emulating necessary system functions and libraries needed by games to run on Linux.

 Choosing Proton compatability in Cyberpunk 2077 in Steam on Linux 

Thumbnail Thanks to these improvements, gaming on Linux is no longer a niche experience. Most Steam titles now work well on Linux, and tools like Lutris and Heroic make it easy to manage games from multiple sources. While Windows still holds an edge for cutting-edge compatibility, Linux is quickly closing the gap and offers a strong alternative for gamers who prefer an open-source platform. Virtual reality is even fully supported on Linux via SteamVR, and has been for several years. I made a video demonstrating playing Halflife Alyx on OpenSuse Linux (my distro of choice) a few years ago on my old gaming PC. that video can be watched

Here: Thumbnail Alt Text

Weve explored many of the differences between Windows and Linux in depth. The choice ultimately comed down to this, IF your willing to try a new system and understand that its different from Windows, Linux can get you the same functionality as Windows with few exceptions.You will have occasional hiccups and bugs, and a visit to a Linux forum may be needed every so often to resolve issues, but it is doable, I have been daily driving Linux as an everyday PC /Productivity and Gaming Operating System for the past 3 years. This is pretty incredible as prior to Proton maturing, for me Linux was only usable as a niche experience I used every once in a while when I was bored. Much of the tech we discussed here will be covered in depth in future articles and I hope to see you there! In the meantime, happy computing and power to the penguin! Alt text