Windows Subsystem for Linux

Linux logo next to Windows logo
We’re throwing a little bit of a curveball at ‘cha this week with a brief article about an operating system within an operating system (whaaa…?) and how and why we use it here at Kobalt Solutions! Was that a little too fast? Alright let me crank back the dial a little bit and start from the beginning…

Subscribe To Our Newsletter

Get updates and learn from the best

       Linux: A Brief History

            Let’s start by briefly talking about Linux, since I hope that most of you know Windows already (if you don’t I have another article in the works about a broad and opinionated comparison between MacOS, Windows and Linux, so stay tuned). Linux was created by a brilliant young man by the name of Linus Torvalds back in 1991, while studying at the University of Helsinki. The original Linux kernel was developed on MINIX, a flavor of Unix used in academia, which is a contributing factor to its name. Linus wanted to name his new OS “Freax”, a compound word combining “free”, “freak” and an “x” paying homage to Unix. While Linus originally dismissed the name “Linux”, thinking it was too egotistical, it must’ve eventually grown on him! Now that we understand the origin of Linux, let’s get into what exactly it is as an OS, and how it differs from MacOS and Windows.

Windows: Terminal-ly Ill

            I won’t be going into much detail on how Linux works under the hood mostly because I don’t understand all the intricacies myself. Let’s be honest, if I did, I probably wouldn’t be writing this article and I’d be off building my own OS. Just to reiterate, Linux is similar to Unix because it was built off of a flavor of Unix (MINIX). You’ll find many similarities through the terminal implementation like the good ole bash shell (now Z shell on newer macs). While modern flavors of Linux come with GUI’s most hardcore Linux users prefer the terminal interface simply because it’s so powerful! Windows is more of the outlier here, as there is no native terminal. Windows, for a long time, had the command prompt, a very primitive shell, but in recent years offers the more popular PowerShell. While the PowerShell was a huge improvement for Windows, it is still a shell and doesn’t have all the features that a terminal offers. If you’d like to learn more between the difference between a shell and a terminal, the accepted answer here is a good starting point.

            The big takeaway about Window’s PowerShell is that while it’s now comparable to the Unix/Linux terminal, the implementation is completely different. PowerShell exposes the .NET, Windows Management Instrumentation (WMI), and Component Object Model (COM) to the command line. This simply means that in PowerShell, everything is treated as an object, whereas in Unix and Linux land, everything is considered a file. So, while PowerShell now brings the bash shell to Windows users, the usage is often times much different. To remedy the situation, some Windows users would either partition their hard drives, or even shelf out the cash for a second one, to boot Linux. This required a user to install a dual boot manager, enabling them to switch between the two operating systems. While it essentially solved the issue of the lack of a terminal, many of the dual boot solutions are clunky and different problems arose.

Enter WSL

            Finally, with the Windows 10 Anniversary update on August 2, 2016, they announced that an Ubuntu (very popular flavor of Linux based off the older Debian flavor) image was made available to download and to run on top of the existing Windows OS. They called it Windows Subsystem for Linux, or WSL. This was the first domino to fall in the ongoing cascade of Linux integrations within Windows. Just a year later, on October 17, 2017, the Fall Creators Update ported the Ubuntu distribution to the Microsoft Store. For the next couple of years, Windows users who had the terminal itch were able to satisfy their cravings by opening up an Ubuntu “app” which was essentially the command line interface of the OS. Recently, back in May of 2019, the Windows OS development team has released WSL 2 which introduced a real Linux kernel built by the team and fine-tuned specifically to be run in a Windows environment. If you’d like to learn more about what the Windows team had to say about it, check out this article.

How Kobalt Leverages WSL 2

            Hey! You still with me? Sorry for the dull history lesson but I just want to make sure that you understand the baseline of these two operating systems! Now let’s get to the good part: how and why we use WSL 2 here at Kobalt Solutions. Due to the terminal nature of Linux, we’re able to take advantage of the built-in tools like bash and ssh. This allows our Windows-based developers to work seamlessly on our many Rails projects. It also allows for an easier installation and implementation of tools like RVM (Ruby Version Manager). I am currently using WSL 2, running Ubuntu distro 18.04, to work on a new TensorFlow project, while leveraging the Tensor Cores on my GPU. WSL 2 has been an invaluable tool in our arsenal as it allows any developer to work on most of our projects without issue. I say “most” because you still need a Mac to build iOS apps but I’ll go into more detail in my future article, MacOS vs Linux vs Windows.

            Well, that’s it for this article, folks. If you enjoyed the read, have any additional information to add, or simply disagree with anything I’ve said, feel free to express yourself in the comments section below. This content does take time to create and we don’t ask for much in return, but if you’d like to continue to see articles like this please follow us on any of the major media platforms so we know that this is worth our time!

Leave a Comment

Your email address will not be published. Required fields are marked *

Share This Post

More To Explore

Do You Want To Boost Your Business?

Questions, Let Us Help