Linux vs OSX vs Windows for Web Development

tl;dr

Growing up, my home computer always ran Windows. From Windows 98 all the way to Windows 8.1, I used it almost without interruption. I used Macs occasionally in school, and when I was in high school, my parents bought one for our home computer. Once I started learning to code, I started learning Linux as well, and actually dual booted it with Windows for a while before removing Windows altogether and only running Linux for a few months. I've used all three of the major operating systems at one point in my life, for an extended period of time. Seeing as I'm a web developer, I probably use my computer a bit more than the average user and put a bit more demand on it as well. By no means does that mean that I don't run typical programs like iTunes and Outlook, however, so I can still give an opinion from a standard user's perspective of the three.

Linux

About a year ago, I left Windows to give Linux a shot. At the time, I was just learning to code and all the references and tutorials I read said that the best programming operating systems were OSX and Linux, and that Windows complicated everything. I also saw several job postings that required knowledge of Linux systems so I figured it was my best shot, especially considering I didn't have the money for a MacBook. I started off with Ubuntu - the standard version that ships with Unity - but also tried out some of the flavors like Xubuntu and Lubuntu, and eventually branched out to other distros (read "distributions" or "variations", for those who aren't familiar with Linux-speak) like openSUSE, Fedora, and Arch. My two favorites are Ubuntu and Arch. I really like how easy everything is to set up and get going with Ubuntu. Of all the various Linux distros, I feel like Ubuntu is the most commercially ready, and has the biggest chance of someday being a serious competitor for the desktop (and possibly mobile) market share. Arch is great because you literally have to put together your operating system from scratch, with nothing more than a basic installation that provides no more than a console. I learned so much about Linux in general from using Arch, and I truly found it enjoyable. What I didn't find so enjoyable about it, was that sometimes, things didn't quite work as well as I would hope, and for a primary workstation, I need to have a solid machine that I can count on to get the job done. Unfortunately, Arch couldn't provide that for me. I would love to run it on a spare computer, however, if for nothing else than to further learn about Linux. Overall, Linux provided me a great environment to learn on and I'm very happy with it.

For me, from a standard user's perspective, Linux is not a solid choice. Many distros, like Debian, are pretty adamant about not using any proprietary software, and even distros like Ubuntu that embrace it are still limited by the willingness of the companies to port their software to Linux. In my experience, these ported versions are often outdated and unstable, assuming you can even find them for your distro. This isn't usually an issue for Debian- and Fedora-based distros but other newer distros are often left out. Software isn't the only problem, either. I've had numerous issues trying to find drivers just to get various features of my computer to work with the proprietary hardware, and even then there are some things (like my fingerprint reader) that I never could find drivers for. Don't get me wrong though, Linux is still a great operating system. If you only ever use your computer for basic text editing and web browsing, or you prefer to purchase your music or use web app versions of popular programs, you'd probably be fine with Linux. For someone like me, however, who likes to use tools like Spotify, iTunes, Steam, and Office, to name a few, Linux just doesn't make the cut. Granted, there are alternatives that exist for these, but I was never content to use them.

From a developer's perspective, on the other hand, Linux is fantastic. Considering that many web servers today run Ubuntu, Debian, or CentOS, to name a couple, you're only about 5 minutes away from a basic web server setup on a fresh installation with nothing else. The advantage of working on a machine that's running the same OS as your server is that your code almost never fails after deployment due to differences in environments. Tools like Docker remove these advantages and give them to everyone though, so I don't think Linux is worth the extra effort unless you're just starting out and learning the ropes, or you're on a really tight budget and Windows or OSX is eating up too many system resources for you to actually be able to get any work done.

While I don't think Linux is practical enough for desktop use, at least not for me, I love it for servers. At home, I run a Raspberry Pi with Raspbian that serves as my home router and cloud/media server. I haven't had any trouble with it at all and absolutely love it. Somewhere down the line, I may even get a second one to use as my development environment to free up some memory and storage on my laptop. And, as I stated earlier, it's the primary server OS used in my work environment.

Another thing that I must admit that I truly appreciate about Linux is the community behind it. There are hundreds of forums and groups and IRC channels dedicated to Linux in general or its various distributions, full of people who are willing and able to help anyone who asks, and not even with things necessarily related directly to Linux. While learning to program, I received help on many occasions and learned a lot from the Linux community. I highly recommend checking out some Linux forums, even if you have questions regarding something that has nothing to do with Linux. It would of course have to be at least related to open source software and programming, though. If you go asking about how to set up iCloud backups or using advanced functions in Microsoft Word, you may get lucky and come across someone who actually knows, or you may end up with no further along than when you started.

OSX

One of my favorite things about Macs is their aesthetics. Inside and out, they're just gorgeous machines with a beautiful operating system to go with them. However, quality comes with a price and Macs are a prime example of that. With prices upwards of a grand, you'll need to drop a sizable amount of money on one or else go the used/refurbished route (which I have had very bittersweet experiences with myself.)

As a user, Macs are great. The App Store provides you with access to thousands of secure and reliable (most of the time at least) apps, and you can always find what you're looking for online with a quick search if the App Store lets you down. You can pretty much run anything without any problems, so for standard users who can get past the price, Macs are a solid option. They are very durable too, so it may be worth the investment in the long run, unless you're one of those people who always have to have the latest tech. One thing I must say about proprietary software as opposed to open source software, is that there is generally less openness in regards to content as well. Take, for example, purchasing a movie in iTunes. That movie is only accessible from devices made from Apple. Got an Android tablet? Tough luck. Windows phone? Should've got an iPhone. I realize that almost any major multimedia provider out there imposes these restrictions on the content you purchase from them, but at least buying a movie from, say, the Google Play Store, gives you access to it on Android and iPhone devices through their app (possibly Windows as well, but I'm not 100% certain, at least not for mobile.) You either have to be willing to commit to a certain provider, or else find third-party services that are independent of any OS.

As a web developer, Macs are also pretty good. I never really got into local web development on my Mac, so I can't speak for how good or bad MAMP setups are, but I did find comfort in the command line being relatively similar to that of Linux's. Having a plethora of development tools that look as good as the rest of the OS is also pretty nice, and for designers I'd say OSX is a must-have. And again, with tools like Docker and Vagrant, you can pretty much get up and running with no trouble whatsoever.

I've never used OSX on a server, so I really couldn't say anything about them. I don't imagine it's cheap though, since nothing produced by Apple is.

Windows

With great power, comes great responsibility. Windows is probably the least secure OS out there, but I think it's also the most versatile as far as software goes. No matter what you want to do on your computer, it's almost certain that you can find some piece of software that can at least somewhat accomplish the task you are taking on. You just have to be always vigilant against viruses. Granted, if you only download files from trusted sources and only open emails that appear to be safe, you should be fine. It's still a good idea to have an active firewall and antivirus running, but for the most part, a little common sense will get you a long way. Part of the reason for so many viruses is because Windows is hands-down the most popular OS. According to Net Market Share, between 2015 and 2016, Windows held around 85% of the total market share. That's some serious control there. Having that many users means they must be doing something right. Generally speaking, Windows computers are more affordable for the average user, and being honest here, if you take care of your computer, it will last you more than long enough. Furthermore, this goes without saying, but anyone who even remotely thinks about PC gaming will absolutely need Windows.

When it comes to developing, I'm relatively new to Windows. I've been on Windows fairly consistently since Windows 98, before I decided to switch to Linux and later to Mac, then back to Linux, and then back again to Windows. I found that Linux was a bit too unstable for my needs, and lacked many pieces of software that I enjoy using in both my personal and professional uses of my computer. Macs are nice but they're really expensive, and even more so to get a decent development machine. With Windows, I get the perfect balance between stability and cost-effectiveness. I'm still learning the ropes, and figuring things out (I'm looking at you, PowerShell), but so far, I like what I'm seeing. I'm also very excited to be able to run bash on Windows, and with Windows phones soon allowing you to sync and send messages from your desktop, I may have to look into getting one of them as well.

I haven't been able to work with Windows servers yet either, though I will as soon as I get the chance. From what I can tell, Windows is a bit more popular among enterprise-level IT systems, so it's certainly worth the time investment. The Amazon Free Tier actually offers various versions of Windows Server, so I will absolutely be playing around with that once I have some down time.

Conclusion

All three OSes are great in their own regards, and deserve credit where credit is due. I personally have chosen to stick with Windows, because it's what feels the most comfortable to me, and best addresses my needs. After having grown up with it, it's only a matter of time before I get back into the hang of it and truly learn to appreciate it. Even once I have the budget for a higher-end computer, I'd rather try out the latest Surface Pro or Surface Book. At the end of the day, it all boils down to personal preference (your budget may have something to say about your preference too, however), so I recommend trying out all three and seeing which works best for you. Linux can be run from a USB stick so you don't even have to put your computer or your wallet at risk to try it out.