I’m doing some cross-platform development but it can get pretty crazy… I’m interested in how the Sublime team tests ST3 for different platforms? I tried using VMs but it got kind of hectic.
I use a VM for windows and other linux distributions, as well as an old iMac for macOS.
First of all, thanks for the answer!
If I understood correctly, you do all development on your linux PC and use the other environments to test across different platforms? Do you host the VMs on a server or do you use a hosting service (AWS?)?
I was also wondering if you use any CI\CD platforms, if so, which do you prefer?
I do all development on Linux, I then cross-compile for the other platforms (Using darling for macOS). My Windows VM is just locally on VirtualBox.
That’s interesting. What Linux distro do you use (Ubuntu?)? Is this the practice for the Sublime team or are these just your personal preferences? Have you ever tried developing on Mac or Windows instead?
I use Ubuntu. I think I’m the only one who’s got VMs and full cross-compilation from linux. Production builds are usually done from a mac due to code-signing requirements, otherwise dedicated machines are generally used. Personally I’ve used Windows and Mac in the past. Windows has always just been really slow with terrible CLI support and no package manager (and the more I have to work with it the more I dislike it). I got given a macbook at some point, didn’t like the UI for various reasons, ended up running linux on it. Wouldn’t buy apple hardware due to pricing, which doesn’t really leave any other option for mac.
I have two laptops - Mac and Windows. I find Linux easiest to virtualize, although I will hopefully invest in a Linux laptop at some point in the next year or two. I find that physical machines are much faster for non-Linux OSes, and there is no decent way to debug hardware, input and video/display issues through VMs. Trying to debug touch events on Windows through a VM running on a Mac without a touch screen is a non-starter.
Virtual machines can be helpful in a pinch, and are useful when trying to reproduce an issue, especially on the Linux side. I’ve got around 50 or more VMs from over the years on my NAS that I pull down when necessary. I also use a Windows VM occasionally on my Mac when I am on the go and don’t want to bring multiple machines.
As screen resolutions increase and hi-dpi becomes more prevalent, VMs get slower trying to push 4k worth of pixels to the screen.
We use clang on all three platforms. Of particular note is that a Linux VM on top of my 2013 rMBP can actually compile Sublime Text faster than natively on the Mac, or on my 2018 Surface Book 2 running Windows 10.
Overall, I think a key component of developing cross platform software is to try and use each platform as a daily driver so you get used to the conventions and when things just don’t feel quite right.
Personally I tend to default to Mac since you have commercial software options, you can virtualize Windows and Linux on it, and they have generally good hardware (barring the keyboard fiasco recently). Sure, I could have tried to use Inkscape on Linux, but Affinity Designer is the right tool to create the vector-based theme, slice it into textures and export them at all of the required resolutions. Trying to recreate that in Inkscape would have been a huge time waste, and would have cost more than the difference between a Thinkpad and MacBook Pro. Affinity Designer cost $50 and is available on Mac or Windows. In the end you are probably going to need some sort of a Mac, if only because you legally can’t virtualize macOS on Windows or Linux, and performance-wise you really don’t want to.
In a previously life as a web developer I spent years on Windows with a desktop and then years on Linux with a ThinkPad. My least favorite from the perspective of being a software engineer writing desktop software is Windows, mostly because process creation and the filesystem is so slow compared to Mac and Linux. The requirement of running antivirus also slows things down since it has stick its grubby fingers in everything going on.
All that said, this is mostly like guitarists talking about their gear. In the end, the fingers and brain matter way more than the guitar (or computer). The biggest exception to this is dealing with something very intensive like machine learning or huge data sets.
Not that we actually use it, but as an alternative to buying a mac there are services that provide macs in a data center. Not as good as having an actual device, but much lower upfront costs.
What a neat thread. Will Jon weigh in too?