I’ve been using OSX for almost 10 years, then I switched to Linux (Mint and Ubuntu) for a year and then I switched back to OSX.
There are several things that I hate about OSX (from a developer perspective), but eventually I realized that is the best system that fits my needs.
So, in this post I’m gonna list all the pros and all the cons about mac OSX compared to Linux or Windows, by hoping it would be useful for other developers (but not only) in order to evaluate a switch (or not) to/from mac OSX.
Let’s start with the…
Things I hate about mac OSX:
No “native” package manager:
If you are a developer (especially a web developer) you need to install an huge number of libraries/packages/technologies on your machine and package managers like “apt-get” or “yum” in Linux make this task dead easy, by allowing the developer to download/compile/configure the required resources automatically and fast. On Mac OSX there are two “third party” package manager: MacPorts and Brew. While the latter seems to be the favorite by the OSX community, I slightly prefer the former for two simple reasons: it has ~4x the packages available for Brew, it’s better integrated with OSX and it doesn’t “break stuff” if you upgrade to new OSX versions. Anyway both managers are not as powerful/stable/rich as the ones available for Linux, so it may happens that a particular package is not available or that another gets updated later and upgrading/removing installed packages may be more complex compared to Linux.
Insensitive file system:
Yep! on OSX “a.txt” and “A.txt” are the same file, or better you can’t have “a.txt” and “A.txt” in the same directory. While this may sounds reasonable, it may cause problems with CVS systems like git (renaming a file uppercase to lowercase or vice versa is not automatically tracked as change).
Silly windows maximization:
The way Apple implemented windows maximization is just absurd! If I want to maximize a window I MEAN IT, let’s maximize that fuc**** window in order to expand to all the available space, don’t try to run “sophisticated algorithms” (I’m sarcastic of course) in order to adjust the window size based on its content!!! In OSX “el capitan” this issue have been mitigated, but maximization still sucks (especially in Finder).
.DS_Store files pollution:
it’s really annoying to have these hidden files everywhere, especially if you have to share external drives with other people who don’t use OSX.
Worst file manager on the market:
IMO Finder simply sucks! It has useless features like coverflow gallery and miss useful ones like split view, moreover due to the previously mentioned “Silly windows maximization” it’s really hard to make this software useful and easy to use in order to explore the file system
Things I love about mac OSX:
Love it or hate it, but Mac OSX is the most stable os on the market! In 10 years of active use I faced a kernel panic/system freeze 3/4 times only. On Linux you can “break the system” just installing/upgrading the wrong package and Windows is famous for its blue screen of death :)
Since I use a laptop, battery life is very important and OSX is HIGHLY OPTIMIZED for the hardware on which it runs, in order to get the most from the battery. A macbook with a new battery can work for 8 hours or more (it’s ~3x the average of laptop battery duration!).
My macbook pro has 4 years and it can still work for over than 4 hours!
Better performance and hardware usage:
In addition to a better battery life OSX makes a better use of the machine hardware ensuring better performances.
As a personal experience I recently noticed that a suite of tests I wrote for a Python project where running more than 2x slower on Linux (on the same machine).
Reliable suspension by closing the lid:
You know what? I never NEVER shut down my mac! When I finish to work I simply close the lid and it goes into hibernation by “stopping the system” and preserving the battery. It can stay in that state for days and once I reopen the lid in a couple of seconds I can continue to work with all my programs still opened and properly running. This is amazing!
I love Spotlight! It’s one of the best software written by Apple. It’s reliable, blazing fast and versatile. I use it to launch applications in a breeze, find files on the mac and as a calculator. On Linux Gnome there is something similar, but Spotlight is far better for performance and super-fast file indexing… a killer feature of OSX!
Another killer feature of OSX is its own backup software. It’s easy and reliable, nothing to configure but the external hard disk to use for backup storage. Time machine implements a smart incremental backup system (it means that it detects differences between the latest backup and the current system state and saves only the delta in the backup rather than the whole disk content).
I restored my system from a Time Machine backup more than once and all went incredibly smooth (my user folders, installed app, preferences and so on were properly restored on the new machine).
Did you erase your whole hard disk or did you messed up with the system so badly that it’s now not working at all and when you start your machine you see a grey screen with a question mark?
Don’t panic! Restart the system by holding CMD + R and you will activate “Internet Recovery Mode” in which your machine will connect remotely to the Apple servers in order to download a fresh new copy of OSX and restore it on your machine… this features is super cool and deserve an huge applause to Apple!
I can play with all the toys I want:
On OSX you can find several tools that are not available for Linux (Recently I’m experimenting with game development and for example Unity is not available for it a the time of this writing) and you can virtualize Windows and/or Linux or create multi boot machine with other os if you need/want to do so. The opposite instead is not possible since OSX runs only on mac hardware (ok, you can opt for hackintosh but I think it’s not the same as the native experience).
So by using a mac with OSX you can target the web, iOS, Android, Windows, Linux, Mac or any other platform you can deploy software on it :)