As I’m starting to travel more while simultaneously seeing a ramping up in software development work I’ve had to consider my laptop situation. I prefer to do most of my work on Linux thus my I need a solid Linux environment on the road. I have a “nice” Gen1 M1 MacBook Pro laptop but for it to fill that role it needs to be able to at least run it in virtualization. My Linux laptops are either long in the tooth (my trustworthy System 76 Galago Pro from 2016) or woefully under powered for development tasks (my PineBook ‘Pro’ ). It was therefore time to decide whether I needed to ditch the Mac for a new Linux laptop or see if I could make a go of it with virtualization technology. I got this M1 MBP when it was first released. I tried virtualization at that time and the situation was not good. In the mean time Parallels Desktop has come a long way. While there are some other options which I dabbled with over the years they didn’t provide enough “just works” for me out of the box. For this experiment I therefore decided to try my hand at using Parallels intensely on my holiday travel trip to see if I can make a go of it. Early results seem mostly promising.
The Good
There are some really good aspects to my Parallels experience so far. Installation is as easy as VirtualBox, my usual go to system on x86/x64 systems, or VMWare. The configuration of virtual machines is usually where things get more dicey but even that is pretty streamlined. The machine setup assistant comes out of the box ready to load the latest Ubuntu, Fedora, Debian, or Kali Linux machine or Windows 11. The whole process is mostly a one button operation. Supposedly there is a way to run macOS in virtualization too but the buttons for doing that mentioned in the documentation just aren’t there. Once the machines are running the necessary “guest additions” are automatically installed which allow pass through of the clipboard, shared drives, etc. This is where Parallels is really shining.
My years of using VirtualBox have conditioned me to just accept that 3D Acceleration is going to be wonky, especially with Linux guests. VMWare was always better on that front but also still not without its warts. Parallels however has had none of those problems. 3D has worked out of the box with their preconfigured operating systems. While I would love to use some other Linux offerings the easy configuration makes me not need to jump to try that. That’s especially true since my favorites are not supporting ARM64 yet.
Along with flawless 3D Acceleration another huge good thing is that sharing with the host “just works”. Printers are automatically added so I was able to print from the VM with zero configuration. That was again something that I have accepted being wonky in VMs. The shared clipboard just worked as did shared drives. While those last two are par for the course the integration of USB sharing with the VM is far cleaner than I’m used to.
Beyond the sharing just working so too is the multi-monitor support and necessary resolution scaling. I’m writing this in an Ubuntu VM running in full screen mode on the laptop and it looks gorgeous. When I have an external monitor plugged in the VM seamlessly jumps from the Retina display resolution of the laptop screen to the normal resolution external monitor without any intervention from me. It all “just works”. I was expecting some wonkiness with that but have been pleasantly surprised.
The battery performance has been incredible even with running multiple VMs. I was on battery power over a 24 hour period which included: a few hours of doing builds and such on the VMs (yes plural), a couple hours of writing (in yet another VM), a few hours of standard web browsing and playing YouTube videos. I expected the VMs to be major energy hogs compared the Mac apps running on bare metal but that wasn’t the case. I could easily do cross country travel without plugging in even if subsisting in the VMs totally. That means that I could treat this mostly as a Linux laptop with dropping to the host macOS only when needed.
Lastly I was concerned with only having 16 GB of RAM and 4 fast cores that the VM performance would be substandard. It is anything but. Due to smart memory management and memory compression I have had several VMs, some with 8GB of RAM requested, running simultaneously. They can all be doing their own thing and still the system chugs along. When one or two VMs are busy doing builds or something resource intensive you can tell it’s taking a bit longer for things to happen but not in a way that impacts user performance. I’m sure the extra cores of one of the new MBPs would be helpful in those conditions but for most of the time they will seem superfluous.
The Bad
While the performance is impressive overall there are some problems which I am noticing. First when doing fast scrolling on larger documents in a VM there can be some jankiness. I can’t tell if it is the graphics card causing the stuttering or if it is the way the trackpad is being interpreted in the VM. Either way fast scrolling in big files can show off some perceived performance problems.
The inconsistent documentation and lack of support also is also a bit of a let down. Supposedly with the “pro” version, which is $99 a year versus $79 one time, you get better tech support. Perhaps I shouldn’t be skeptical but with the radio silence on glaring issues like the missing macOS installer button in the installation assistant, I’m thinking that may be more marketing shtick than reality.
Because I probably can’t do macOS development from with a VM, I have to do triaging of environments with multiple users instead of VM silos. That’s what I’ve done up until now anyway. The macOS sharing mechanism seems to be working against me to getting it working. Ironically I was able to get it working fine with an external disk drive plugged into the USB port but on the same computer with changing around permissions like I would on Linux the VMs still don’t want to start correctly. A little more configuration may help with that.
The last bad part isn’t really Parallel’s problem it is just the way things are. ARM64 support isn’t the best right now on Linux or Windows. Yes they have installations for it but installing my standard software runs into some problems. IntelliJ under Linux has no ARM64 installation and can’t figure itself out with regards to JVMs like it can on AARCH64 ARM platforms. I am able to manually fix things but that was only after doing some internet sleuthing. Microsoft doesn’t support ARM versions of VisualStudio therefore the entire Windows development stack is running in Intel emulation mode under ARM64 Windows 11. While that is essentially Microsoft’s “Rosetta” the perceived performance penalty is far greater than under Rosetta on Mac. A plus side of that is I can still build x64 Flutter apps under Windows 11 in Parallels. Related, since I can’t run an x64 OS under Parallels on M1 and Linux doesn’t have the x64 “Rosetta” like environment, I will still need a cloud-based build chain to build x64 targeted Flutter binaries when on the road.
The Ugly
There is one ugly but it is a huge one. I haven’t nailed down the exact cause but Parallels can cause the entire host OS to kernel panic thus rebooting the whole machine. When I was messing around with external displays that could happen a couple of times a day. When putting the Mac in and out of sleep or switching users it seems to happen about once a day. That’s true even with the latest patch which was just pushed. Hopefully all the reported crashes are going back up to them for fixing. I would probably be able to live with it at this current rate but it is far less than ideal.
Conclusion
Overall I’m very impressed with Parallels. If they fixed the crashing behavior, got their documentation more consistent, and bring back the ability to install macOS under emulation on Apple Silicon I’d say it will be a slam dunk. The performance is so impressive that I’m even considering upgrading my Mac laptop to be able to support multiple external displays and just making the laptop my one and only computer. My desktop is getting long in the tooth as well. Simplifying to one machine that could run Mac, Windows, and Linux to give me my one stop shop on software development is pretty tempting. The price tag necessary to do that with two monitors is an impediment, at least $2500, but it is something that may be worth considering if these few rough edges are smoothed out.