Due to circumstances outside of my control, I will have to give up my Macbook pro and move to a 5 year old Lenovo thinkpad very soon. I am now considering whether to use Windows + WSL or to directly install a Linux distribution (Ubuntu probably).
My laptop time can be decomposed into Julia (25%), internet browsing (30%), gaming on GeForceNOW (30%), TeX + other programming languages on VSCode (15%).
Did you people have to go through a similar choice recently? What were/are your thoughts?
It sounds like you’re not using any software that requires Windows. Do you like using Windows? Personally, if I were in your situation, I’d be installing Linux on the machine, not Windows.
You could also dual-boot: split your disk into two partitions, keep Windows on one of them and install Linux on the other. I have this setup, Ubuntu installs GRUB which lets you choose whether to boot into Windows or Ubuntu. I use Ubuntu for programming and Windows for gaming, all on the same machine.
I had a beefy gaming laptop as an undergrad student, but eventually the GPU fried. With my budget during that time, I had to get a cheaper laptop and decided to run Linux on it to save some system resources from Windows bloat. I was initially afraid that I have to sacrifice something big when switching to Linux, but it turned out that I could do all my study and research work perfectly fine with the setup.
I later saved up some money and now I have a decent desktop setup also. I can play all my games with Wine and Proton. Once I get more proficient in Julia, I’m thinking of leveraging my GPU for some nice simulations.
Based on you description, I’d say the choice really comes down to small nuances.
WSL2 is pretty cool for development purposes, I’d even say better then containers (or virtual machines, well, actually it’s a virtual machine). Despite some WSL2 advantages, of course, it’s not the same as using a native Linux instance
On Windows, there is also an option of MSYS2. It provides a programming environment similar to Linux, but you operate directly on Windows. It is also pretty cool, you might feel a bit like using Windows on Arch Linux. Of course there are some limitations.
There is no official GeForceNOW client on Linux. There is unofficial client natively available via snap. The officially recommended way to use GeForceNOW on Linux is to play via a browser which works fine.
If you don’t need a GPU and your computing requirements are moderate, I would recommend using the Oracle Free Tier Virtual Machine for a persistent development environment, and Google Cloud Shell for ad-hoc prototyping and experimentation. You can access both easily via “ssh”.
Personnally I use Refind as a (dual) boot manager, I find it much friendly than Grub.
On another point, if you use WSL - WSL2 surely - remind to give it sufficient space (the .julia will be duplicated inside the virtual hd). And know that it is difficult to use the GPU (eg, with Cuda.jl or Amdgpu.jl) from inside WSL. That said, Vscode inside WSL2 ( in fact windows Vscode) is working very fine.
It’s nice to have two SSDs for dual-booting Linux and Windows. Even better if you can disable one of the drives in the BIOS (for lower power usage and risk of interference between OSs).
Unless they have a specific reason to want to use Windows that the OP neglected to mention, I don’t see any reason to bother with dual-booting. Linux does all the things the OP mentioned just as well or better than Windows for free, with less spying, and lower system overhead.
Dual booting just means more time wasted fiddling around setting up two computers instead of setting up one computer.
I do a lot of my work in WSL2. It’s a full linux distribution running on a lightweight VM. I don’t need all the bells and whistles. My work requires Julia, R, some python, and coding tools like vscode and git and so it’s absolutely great for that.
That being said, I do find myself using it less and less. Sometimes it’s just too much to spin up a VM just to launch Julia to do some basic analysis.
Age and computer specs matter a lot too. I have a 12 year old computer that could barely run Windows 10, and it even is laggy with Ubuntu. But I put on a lighter weight distro (MX Linux), and the OS is snappy enough that I’m going to use the computer until the CPU or HDD dies.
I’d say if you’re at all concerned that the 5-year old computer can’t handle the new Windows 11 requirements, then go Linux.
And the constant possibility that Windows overwrites the bootloader for whatever reason, and you lose valuable work time when you ought to be doing something else, instead having to fix the bootloader and getting GRUB back.
Happened to me recently, and searching up on it at the time, it seems like there has been no change in Windows’ behaviour in this regard over the years, no acknowledgement of other OSes or bootloaders - it will overwrite your choice for the boot manager on your computer with its own choice, and that’s just as likely today as it was ten years ago, no signs of improvement or even recognition of this as a problem.
This happened to me too several years ago. I partitioned my drive to dual boot Windows/Linux with grub, and after one particular Windows system update it wiped the bootloader and I nearly lost all my data. After that I switched to having Linux and and Windows on separate hard drives and just booting into Windows from the BIOS when necessary.
I have a 10+ year old Dell laptop used infrequently for one program, still running XP as the OS. I was able to replace the CD drive with a hard drive for Ubuntu and I use the BIOS for dual boot. This works nicely with no GRUB to worry about.
If you decide on WSL, my recomendation is also to use MobaXTerm.
When a WSL instance is installed Moba magically sets up a session to log in to that WSL.
You get lots of other goodies - X server of course, VNC, ssh, port scanner…
I’m sorry you have to have to transition from Mac to PC hardware. I was issued a Windows laptop at my workplace and attempted to use it with WSL2 for from 2022 to 2023. Many things worked but with finicky little bugs and config issues. However, I eventually gave it up and used my personal Mac at work (the small company fortunately allowed it). The final straw for me was some WSL init process consuming 100% of a core seemingly randomly, i.e., it was not reproducible:
That ticket (and a linked ticket) are now closed, and so maybe it is no longer an issue. But to me it was clear that M$ doesn’t really care about WSL because this issue went on for years with no direct support from M$'s WSL developers.
FYI, an annoying bug (with a workaround) that is relevant to Julia is this one: