You’re in a bit of a pinch and have already referred to countless websites to complete your project. The computer lags momentarily, and in a fit of fury, you hit the enter key at the next pop up. The pop up only serves to add to the frustration since your Windows system now starts a lengthy update process, rendering it unusable for the foreseeable future. Moreover, you have no clue whether the work on your project has been saved. You curse the system and contemplate switching to Linux.
Windows, an operating system developed by Microsoft Corporation, draws its name from its ability to open multiple “windows” at once. Ever since its inception, Windows has captured the market overtaking an erstwhile major competitor, MacOS. Despite being a proprietary and paid software it is still run on a vast majority of laptops and personal computers out there. On the other hand, Windows’ less cited competitor, Linux, has different origins – created when Linus Torvalds found no open-source kernel to conduct experiments in. Its free nature led it to develop a strong community of developers tinkering at it over the years, making it a highly preferred choice for most developers.
Developers love to extend functionality of software. Windows however, isn’t particularly friendly to this. The Linux kernel, however, can be modified by anyone. It contains the bare minimum of what is needed and nothing more. This allows developers to create Linux distributions specific to the task at hand. They can strip away other unnecessary features and add ones only for what they need. For examples, Ubuntu is a general purpose distribution, while Kali Linux is used by malware researchers and Scientific Linux is used by, well, scientists. Linux can thus be blazingly fast with no other processes slowing it down.
Backward compatibility is another unspoken reason why Windows is slow as compared to Linux. Microsoft takes great pains to ensure that its older software still runs on newer systems which often gets in the way of progress. This also renders the company unable to modernise its systems, thus restricting multiple practical features. For example, the legacy Control Panel still exists in Windows, and the Settings app introduced in later versions seems to exist only for aesthetic benefit. The Control Panel is a mess with a large variety of settings arranged in a very unintuitive fashion, which makes it difficult for an average user to use. The end result is a system where we have two redundant applications, one which looks good but can’t do much and the other which can do much if only one could figure out how.
Fig. 2: The Windows Control Panel
In order to improve its security and speed, Linux uses a permission bit for the files. Most files just have a read or a write token filling the bit. However, executables must have an execute bit. This forms a first line of defense as malware needs to be granted execute permissions to run on the Linux system. Windows, however, uses file extensions to determine the nature of the file; resulting in a search across lookup tables and then finding a compatible application to run the file in question with a long thread of processes. This also means if any file is renamed to an executable extension, it can be executed. To simplify, a piece of malicious code could be written on an innocent file and this load dropped on a victim system. Another piece of code then activates this by converting the extension and runs it. Now the malicious code can cause damage.
Keeping multiple processes running at the same time is another major factor in slowing down the Windows OS. These processes are generally previous ones which haven’t been terminated. Since most of these processes possess exceedingly similar and archaic sounding names, an average user is unable to differentiate between the useful and the obsolete ones. Thus, an obsolete process could simply be slowing the system, or it could be an illegitimate process disguised as a normal one. The inability to identify one from the other reduces the end-user’s control over the system even further. What makes the situation even worse is the lack of debugging support since Windows is proprietary. Armed with this knowledge it’s only natural to wonder why Windows still trumps Linux in the market?
Windows, as mentioned above, has a large chunk of the market share. Despite losing it slowly, it still forms a formidable proportion of users. Microsoft also doesn’t actively target users who use pirated versions of their software. As humans have a tendency to hate change, they do this in the hope that the user, accustomed to Windows, might sooner or later dive in and buy their products. The onus on their developers and partner firms is to produce software for their massive user base; hence a large number of applications run only on Windows.
The open-source alternatives provided by Linux simply don’t match up to most of these dominating applications like Microsoft Office or the Adobe suite, hence people prefer Windows. Together with this, Windows strongly tilts the tide in its favour by implementing extensive support for gaming. Historically, most of the games run flawlessly on Windows, while they are slightly hassling or outright unsupported on Linux. Just like the power applications mentioned above, games were developed for Windows. This creates a positive feedback loop and the average Joe remains tethered to the Windows mothership.
Going off on a tangent, you’d assume that Microsoft would at least attempt to bring some of Linux’s desirable features over into Windows, to further consolidate its position in the market. However, the problem in doing so seems to lie at the heart of Microsoft’s software development culture. There is minimal incentive to make small changes to the code, which add up to improve the system’s performance. Linux’ open ended nature has allowed individual developers to tweak the OS and improve it, not only for themselves, but for everyone using it. In Microsoft, senior developers allow changes to the core system grudgingly. Their authority discourages junior developers to try and improve the system. Junior developers too don’t fix older problems or bugs, instead looking to implement new features with their own share of bugs, and so the matter spirals further away from resolution. This was one of the reasons why Windows made PowerShell, but true to the promise of backward compatibility explained earlier, still retained the Command Prompt.
However, there is a change on the horizon, with Microsoft embracing Linux. Until recently, the company often took a very hostile stand to Linux and its open-source policies. It actively tried to ensure that Linux had a hard time, by creating industry partnerships to prevent users from accessing certain necessary software on the Linux OS. Steve Ballmer, in 2001, then CEO of Microsoft, even called Linux a cancer to intellectual property. He wanted nothing to do with it. It was this mentality that allowed Apple to enter and become a strong competitor in the OS and PC market. Unlike Ballmer, Apple acknowledged the positives of open source systems and built those features into the MacOS. Eventually, Ballmer fell out of favour with his employees, leading to a very challenging time for Satya Nadella to take over.
Following this, the meteoric rise of Amazon Web Services (AWS) and its versatility left Microsoft disoriented. The OS was just an entity to run applications on, where the money lies instead. AWS allowed a cloud platform with applications that can be run on it. Microsoft was forced to choose between adapting to Linux and living or dying. Instead of throwing more money into apps for the OS, Microsoft decided to live. They relegated OS development and prioritised the development of Microsoft Azure, a cloud platform, with a Linux kernel at its heart. The shift to cloud was a major shift in Microsoft’s policies. Previously being a strong proponent of proprietary software, they adopted a more open stance to open-source.
Microsoft even acquired GitHub, the largest platform to display open-source code. Following the acquisition, Microsoft open-sourced the .NET framework, and its code editor, Visual Studio Code. Microsoft determined that the ease of use and versatility of the Linux terminal was one of the main reasons why developers preferred Linux to Windows. They came up with the Windows Subsystem for Linux, which allows Windows users to use a Linux terminal shell without the complexities of installing another operating system. Thus, the Goliath finally bowed down to David.
This is the first in a series of articles on analyses and anecdotes from the open source universe.