Main image of article Windows vs. Linux vs. Mac: What’s the Best Dev Platform for You?

If you’re just entering the tech industry and interested in software development as a career, you’re probably wondering how the respective operating systems—Windows, Linux, and macOS—match up against one another in the context of different development environments. Here’s a brief overview of what you need to know, as well as some handy links to documentation and tutorials for further exploration.

Desktop Development

Microsoft’s Windows 95 was probably the software giant’s first decent development platform. Before that point, many developers opted to build within the MS-DOS ecosystem. Nearly 30 years later, we’re collectively on Windows 11, and the OS has become a radically different beast, highly integrated with the cloud and capable of running an infinite array of apps and services.

Although desktop development is less popular these days compared to back in the 1990s, it still exists, and Windows dominates by pure market share. If you’re interested in Windows-based desktop development, familiarize yourself with the following:

  • Windows API: Exactly what it says on the tin: the Application Programming Interface (API) for Windows-based desktop and server applications.
  • .NET: An open-source development platform for building different types of applications.
  • WinForms: Also known as Windows Forms, this GUI class library is part of .NET and helps developers build applications.
  • WPF: A key .NET framework for applications, class libraries, and more.
  • Maui: This open-source framework is for Windows developers who want to build desktop and mobile apps via C# and XAML.
  • Visual Studio: An integrated development environment (IDE) with a free community edition and (very recently) a generative A.I. coding component.

A subset of developers also lean toward developing applications for macOS. If you’re interested in building for the Apple ecosystem, your first task is to become familiar with Xcode, the company’s IDE, and Swift, its new(ish) programming languages for all apps. In recent years, Apple has leaned heavily toward cross-platform compatibility for its apps, which means any developer building for macOS should also consider whether to port to iOS and iPadOS; that can quickly expand the audience for your product.

For those developers who prefer Linux, desktop development often starts with a key question: Which desktop environment would you like? There are tons of choices—for instance: Gnome (arguably the most popular), XFCE, Ubuntu, KDE Plasma, Mate, Cinnamon, Deepin, Budgie, Pantheon and LXQT. Your choice will dictate the documentation, workflow, and more; for example, here’s the breakdown of development for Gnome.  

Web Development

If you want to become a web developer, you have your choice of platforms and languages, but you also need to make some decisions about the type of web development you want to pursue. For example, you could pursue front-end development, back-end development, or full-stack development, all of which involve somewhat different skills and workflows.

If you want to become a front-end web developer, you’ll need to know the following:

  • JavaScript
  • Front-End Development
  • Software Engineering
  • React JavaScript
  • TypeScript
  • Software Development
  • Web Application Development

Meanwhile, here’s a selection of skills you’ll need for back-end web development, which is all the infrastructure that allows the front end of a website to successfully operate:

Full-stack web development involves both the front- and back-end; in the course of a typical day, you might do anything from debug a critical system to optimize a website’s speed and performance to ensure your ecosystem is in privacy compliance.

How does this ladder up to Windows, macOS, and Linux development? Here’s the good news: you can develop websites on any operating system; in a Windows context, for example, you just need Visual Studio and a web server to actually serve your content up to users.

Microsoft's web development technologies continue to develop with Blazor (running C# in the browser) being at the forefront—but when it comes to deployed web servers on the internet, it’s not doing too well, with a market share somewhere between 2.5 percent and 5 percent for their web server IIS, according to the Netcraft survey and w3Techs. Linux servers such as Apache and Nginx (including the Chinese modified Nginx called OpenResty) massively dominate.

Web development is one area where Linux and Mac both do very well. Linux probably has the edge because it runs on anything… especially cheap hardware. It's not that surprising given how much of the web infrastructure is based on Linux tools.

Mobile Development

For Android in particular, Linux is favoured because it runs Java faster and many of the development tools (e.g., Android Studio) are written in Java. That said, it is cross-platform, so you can also develop for Android on Windows or Mac. Development tools like Android Studio and VS Code both run on Windows, Mac and Linux. 

If you wish to develop for iOS devices (iPhones and iPads) then you need a Mac. Apple has their devices locked down via encryption and developer certificates, so only developers registered with Apple can submit apps to the App store, and that costs $99 a year.

Servers

Developing servers used to be a choice between Java, C or C++. Since .NET, the successor to the .NET Framework, came along, writing servers in C# for Linux and Mac has become much easier.

Playing and Developing Games

For a very long time, if you wanted to play games it was either on Windows or on games consoles—the collection of games for Linux and macOS was comparably small. Windows still has an edge now, but several things have brought games and game development into the Linux world.  Back in 2012, Nvidia were criticised for not supporting Linux by Linus Torvalds; now they are producing open-source Linux GPU Kernel drivers (AMD started a bit earlier, in 2015).

Also, Valve introduced the Steam Deck 18 months ago. It runs Steam OS, a Linux distribution based on Arch Linux and the KDE Plasma desktop environment. This uses Proton, which is a fork of Wine with extra bits and patches for running Windows games on Linux. By the time of its release, over 80 percent of the top 100 games on Steam were playable on the Steam Deck. There are currently 3,813 verified games on the Steam Deck, with over 11,000 verified or playable, according to the web site ProtonDb. Note that if a game runs on a Steam Deck, it will also run on any Linux that can run Steam Clients. There are a significant number of games labelled native; these have been developed or converted for Linux and don’t need Proton to run. Recently released by Apple, there’s a Proton-like tool for Mac called the Game Porting Toolkit that lets you run Windows games unmodified on Mac.

Not all games can be played on Linux; some seem to have issues with DRM anti-copying protection schemes.  ProtonDB has these games classified as Borked.

As for game development, C and C++ compilers have been around on Linux since the late 80s, but the battle for best editor was between Vim and others until 2015, when Microsoft released Visual Studio Code. You can use it on Windows, Linux and Mac. On Windows, Visual Studio is still the best development system bar none, and Visual Studio Code doesn't quite match it on Linux or Mac, but comes a close second. It’s also possible to develop using Visual Studio on Windows and debug on Linux over SSH using the WinGDB extension for Visual Studio, but that’s a commercial extension with a free trial.

Mac developers can use the Unity Engine to develop games on Mac. However, according to the Steam Hardware Survey in August 2023 the Mac OS’s market share in gaming remains very limited.  

ML

Machine learning is one of the bedrocks of AI; it’s the process of training a model to make useful predictions. You can perform ML development in Python, R, Julia, Java and other languages. You can develop for it on any OS, although the more powerful GPU (Graphical Processing Unit) you have, the faster it will run.