Disagree on macOS being a really good development OS. It may be so for iOS/macOS development but for many other use cases, package managed Linux OSes are superior. Case in point, macOS has no built-in package manager that can manipulate what toolchains, runtimes and libraries are installed on the system and available for software development. You have to resort to Homebrew or Macports, both of which are inferior options than say apt in Debian-based Linux OSes. And then there’s the fact that macOS doesn’t support Linux containers without virtualization. Given how useful and how widely used containerization is for software development, it really puts the nails in macOS as a great development OS. Yes you can use containerization but at the expense of significant resource overhead. That’s not great at all. I had a 6-container stack to run for development on a MacBook Pro a few years back. It was nearly unusable on that hardware due the RAM overhead and slow macOS<->container IO. The same stack was flying on equivalent hardware running Ubuntu LTS. Beyond that, you can distribute whole consistent development environments fairly easily using Linux OSes and trivially using containers. Having used Windows, Linux and macOS for professional software development, I think macOS is easier to live with for companies without IT departments, but not necessarily as easy to live with for developers. That said people who are used to work with it might find that easier than learning something else even if that something is easier in absolute terms. Which is fine.
Sure, but Linux doesn’t champion good package management. You either resort to the package system of the distro you installed, or slowly switch to flatpak/snap, and then likely the package manager of the language you are developing in. It’s no different to using brew on macOS.
I would argue basing your entire OS on the package managers makes dev add more friction, not less. Perhaps the only Linux example trying to escape that is nixos, which is nice when you get the hang of it, but it’s a little restrictive. For straight Linux development of course Linux will be the best choice. For straight macOS development of course macOS will be the best choice. For straight windows development of course windows will be the best choice. Distributing docker containers is mostly OS agnostic now, and though you mentioned it, the performance payoff for virtualization on apple M hardware is minuscule.
Most IT departments at big software companies will opt for macOS for their software devs nowadays, unless they explicitly request Linux. That’s not exclusive, bigger tech companies will let you choose because they have the bandwidth to support multiple OS’s, but they do that because supporting one *nix based OS is much easier than supporting every Linux based distro, with a different package system.
I’ve used arch. The community repo is amazing, but flawed in its own way. I’ve used Ubuntu, figuring out the PPA system sucks. I’ve used Fedora/Redhat, trying to get deb packages to work when they aren’t in the rpm library is a ride. I’ve used SUSE, Yast is great, and again become frustrating when the package you need isn’t there.
There are far more variables working with Linux distros, and usually those variables, when you’re just trying to write code, make things more difficult, not easier
At the end of the day it sounds like we’re tackling very different versions of the dev world anyway. You are trying to emulate Linux servers on apple hardware. I’m writing native apps for iOS and Android that use web views to render our components. Of course macOS wouldn’t be the best for Linux container infrastructure work, but that’s a small subset of the dev work that exists, just as my work is a small subset, however I’d still argue that on a larger scale, macOS is a better dev OS.
Disagree on macOS being a really good development OS. It may be so for iOS/macOS development but for many other use cases, package managed Linux OSes are superior. Case in point, macOS has no built-in package manager that can manipulate what toolchains, runtimes and libraries are installed on the system and available for software development. You have to resort to Homebrew or Macports, both of which are inferior options than say apt in Debian-based Linux OSes. And then there’s the fact that macOS doesn’t support Linux containers without virtualization. Given how useful and how widely used containerization is for software development, it really puts the nails in macOS as a great development OS. Yes you can use containerization but at the expense of significant resource overhead. That’s not great at all. I had a 6-container stack to run for development on a MacBook Pro a few years back. It was nearly unusable on that hardware due the RAM overhead and slow macOS<->container IO. The same stack was flying on equivalent hardware running Ubuntu LTS. Beyond that, you can distribute whole consistent development environments fairly easily using Linux OSes and trivially using containers. Having used Windows, Linux and macOS for professional software development, I think macOS is easier to live with for companies without IT departments, but not necessarily as easy to live with for developers. That said people who are used to work with it might find that easier than learning something else even if that something is easier in absolute terms. Which is fine.
Sure, but Linux doesn’t champion good package management. You either resort to the package system of the distro you installed, or slowly switch to flatpak/snap, and then likely the package manager of the language you are developing in. It’s no different to using brew on macOS.
I would argue basing your entire OS on the package managers makes dev add more friction, not less. Perhaps the only Linux example trying to escape that is nixos, which is nice when you get the hang of it, but it’s a little restrictive. For straight Linux development of course Linux will be the best choice. For straight macOS development of course macOS will be the best choice. For straight windows development of course windows will be the best choice. Distributing docker containers is mostly OS agnostic now, and though you mentioned it, the performance payoff for virtualization on apple M hardware is minuscule.
Most IT departments at big software companies will opt for macOS for their software devs nowadays, unless they explicitly request Linux. That’s not exclusive, bigger tech companies will let you choose because they have the bandwidth to support multiple OS’s, but they do that because supporting one *nix based OS is much easier than supporting every Linux based distro, with a different package system.
I’ve used arch. The community repo is amazing, but flawed in its own way. I’ve used Ubuntu, figuring out the PPA system sucks. I’ve used Fedora/Redhat, trying to get deb packages to work when they aren’t in the rpm library is a ride. I’ve used SUSE, Yast is great, and again become frustrating when the package you need isn’t there.
There are far more variables working with Linux distros, and usually those variables, when you’re just trying to write code, make things more difficult, not easier
At the end of the day it sounds like we’re tackling very different versions of the dev world anyway. You are trying to emulate Linux servers on apple hardware. I’m writing native apps for iOS and Android that use web views to render our components. Of course macOS wouldn’t be the best for Linux container infrastructure work, but that’s a small subset of the dev work that exists, just as my work is a small subset, however I’d still argue that on a larger scale, macOS is a better dev OS.