Ask HN: Why did OS X win out over Linux for so many developers? - coned88
======
im_down_w_otp
It's the best possible bridge platform for *nix development.

POSIX enough that tools and environments work pretty well without a mountain
of hacks and workarounds (e.g. Cygwin).

Mac enough that the user experience is coherent and consistent across the
overwhelming majority of applications. (e.g. drag n drop, key bindings, media
interop, etc.)

Popular enough to have native MS Office in orgs where that's still a hard
requirement.

I tried to force myself to go full Linux by swapping out my Macbook Air for an
X1 Carbon Gen 3 running KDE Plasma 5. The environment was nice and
customizable and I was able to get pretty comfortable with it, but the instant
I wasn't using a qt5 & KDE 5 frameworks application, the user experience fell
apart. Couldn't set my key bindings the way I like in GTK apps because the
GTK/GNOME teams apparently gave up entirely on accels files and key-themes.
Media interop was pretty much non-existent, and there were lots of annoying
little bugs (e.g. resizing a window would drop its focus leaving in a context
where there was no active window and I'd have to click back in it.)

I still use Kubuntu 15.10 on a 12-core Dell T5500 w/ 48GB RAM for running
larger distributed systems simulations/tests, and it seems about a hundred
times more usable than the Windows 7 machine my job originally provided, but
when I want to move fluidly between development, making arch diagrams, writing
docs, or creating conference decks I can't escape how much better the complete
experience is on my Macbook.

Also, LibreOffice Impress somehow managed to make a UX more bewildering,
broken, and obtuse than PowerPoint, which I'd previously thought to be
impossible. Viva la Keynote!

~~~
rebootthesystem
I used to react negatively to all the Windows + Linux bashing because I've
never had issues. I also use Macs. No issues there either. They are tools and
they have different personalities. I thought I was just, well, somewhat
unique.

Maybe something was wrong with me that I just didn't get it. I just didn't
understand just how bad it was to use Windows as an engineer (and like it) and
not have one iota of interest in becoming a vim guru (while still using it as
needed) while rejecting graphical code editors and IDE's. So, yeah, even with
over 30 years in computing and engineering I sometimes thought I was a little
nuts for note getting it.

That's until this year, when a contract we won gave me the opportunity to
spend a non-trivial amount of time (12 to 16 hour days) inside one of the most
highly regarded technology companies in the world. What I see is thousands of
engineers doing amazing work and, interestingly enough, every desk has a
Windows machine on it. I see IDE's everywhere and not a hint of vim. I see
Linux everywhere running on virtual machines and no problems at all. I also
see all kinds of other applications and the amazing way the Windows ecosystem
just absolutely hums when setup and managed professionally. Not a Mac in
sight. Well, actually, just a handful, out of thousands of PC's (I'm guessing
>30,000). What's also interesting is I have never heard a single engineer
complain or worry about anything Windows or Linux. Ever. Far more important
stuff to focus on.

I don't know what I can conclude from this experience other than, yeah, it
works like a dream when setup correctly. In fact, some of what I've seen has
caused me to rethink some of our internal setup. The other realization is that
the OS largely becomes irrelevant in the context of an organization. What is
important is how the web of computers, users and applications are setup and
configured in order to create a larger tool-set with which to run a business.
I've seen how a very large Windows deployment becomes largely transparent to
an organization to the point where everyone can focus on the job at hand. It's
awesome.

~~~
plinkplonk
"inside one of the most highly regarded technology companies in the world."

any reason not to name the company? I'm trying to think of a technology
company where Windows (and not Mac/Linux) dominate engineering workstations
and failing.

~~~
rebootthesystem
Sorry, I just can't name it.

You have to remember that "engineering" isn't just "software engineering" or
"web development". The vast majority of the engineering world does not use
Mac/Linux. There are countless major engineering tools that only exist on the
Windows platform and this has been the case for decades.

None of what I said is to imply these platforms are inferior in any way. We
use both Mac and Linux. I prefer to do web development work on Linux because,
well, you are working in exactly the environment you are going to deploy on
and tools like PyCharm work great under Ubuntu. Outside of that, yes, doing
web dev on a Mac is the next best thing. On Windows I always have to run an
Ubuntu VM, no point in jumping through hoops to make believe you have a Linux
environment, a VM works great.

Once you shift your focus to circuit design, layout, mechanical engineering,
CAM and other high-power commercial tools, Windows is pretty much king. And,
once you look at how smoothly Windows, Office, Exchange and other tools
integrate at an enterprise level, well, it's hard to ignore how awesome of an
environment it turns into.

~~~
im_down_w_otp
Yeah, I hadn't used Windows in many, many years, but when I did it was to run
Mastercam and SolidWorks.

I used it briefly to do Visual C++ and .Net CF development after that, but
relatively quickly moved onto projects with a lot of open source
underpinnings.

That was the problem with being originally compelled to use Windows at my
current job. Trying to build infrastructure automation pipelines and Erlang
software on Windows that will eventually be deployed on Linux is a colossal
pain in the neck.

------
officialchicken
It seems the migration to laptops as primary dev box was the biggest driver.

The linux driver issues were much more severe when running linux on a laptop
(power management, CPU C-states, etc). I need dependable wifi, sound, video
and other driver updates... I got absolutely tired of wondering wondering if
X, network, and/or sound was going to work after each and every minor update.

Apple was/is the only vendor shipping a "working" system in laptop form for a
reasonable price.

~~~
acdha
Seconded – you could see the trend start rolling in the early 2000s at
conferences, meet-ups, etc. I knew a number of Linux / BSD users who switched
and every single one of them cited driver issues as the primary motivation –
having a coherent UI is _nice_ but not having to choose between an hour of
battery life or daily kernel panics, playing audio/video easily & stably, etc.
was compelling.

------
kawera
\- OS/hardware integration "just works" out of the box, with occasional
hiccups on major OS updates. Overall, very little wasted time.

\- Trackpad and MagicMouse are generally well above the mainstream.

\- Good iOS interoperability.

\- Excellent screen, battery life, weight and finish.

\- Most unix dev tools/apps run well. Homebrew.

\- Aesthetics. Yes, it counts.

------
ramtatatam
Through 15 years I was working on OS X, Windows up to Windows 7 and Linux
(KUbuntu, Mint, Arch). In the end Arch Linux won.

There is no argument about the fact that OS X / Windows are much easier to use
by people who start their jurney. However at some point cons are simply
overtaking all the pros.

Although I disagree with some other commenters that Linux is hard to use on
laptops (linux went through long way - "normal" people can enjoy it just like
pros). I also do not agree comments about sharp look or battery life - I
personally use Samsung Ativ 9 and find it way way more aesthetic than mac
book. No problem setting up Arch on it. No waste of time to make things
working.

And none of my devs is using OS X. They went through long way themselves and
probably know better than me. My observation is that Macs are much more
popular in US so since I'm based in London my view may be biased.

~~~
oxplot
For me, Arch won on every machine, desktop, laptop and RPi and I think it
mostly had to do with how Arch stays the closest to unix philosophy. I used
Fedora for a few years and before that Ubuntu and I think I only ever rolled
my own package or modified an existing one once or twice because of the sheer
complexity of it. With Arch, from day one I was fiddling around and every time
I need something that's not packaged already (and that's rare), it takes me
minutes to do it myself. I'd much rather know how to build my way through (and
not suffer) than cross my fingers that someone else already has.

Adding to that, I find Arch to be so clean and minimalist and more importantly
unsurprising. Because of its rolling release cycle, I never have to plan an
upgrade which always stressed me out with Fedora and Ubuntu.

Regarding hardware support, I'm running Arch on a mid 2015 manufactured Lenovo
X250 and everything works out of the box and I get a solid 8 hours battery
life out of it.

~~~
acehack
Well I'm one Arch + Gentoo user. Though I've optimized both to be as energy
efficient as possible, I've never been able to get something comparable to
Windows in terms of battery life. So once it's fully optimized (and I'm on
XMonad, not GNOME, so power consumption should be fairly less), I can draw
about 3 hours or so, as long as my browser (Chrome) isn't running Javascript.
The moment I start some decent browsing, I cannot get more than say 2 hours
from my laptop. Video watching? Again, not more than 2 hours. On Windows I
could go on to watch movies for more than 4 hours (this might be less because
of the smaller battery on my device). Do you do some special magic to get that
much juice out of your battery? I'd love to know some cool tips. I myself
wrote some on my blog.

P.S. Not to mention, running Emerge on Gentoo with -j9 lands me at a battery
life of less than half an hour :P

~~~
oxplot
As boring as it may sound, I didn't do anything special, just the run of the
mill practices: lowering brightness, running `powertop` and setting all
tunables to "Good". At idle, this gives me ~3 Watts usage. With the 46 Wh
battery, that's 15 hours. Of course when I start using the laptop that's
halved more or less. With the screen off (when I'm using the external screen),
it goes down to ~2 Watts, for a whopping 23 hours battery life at idle. I
remember an Acer Travelmate I purchased back in 2009. The lowest I could get
the power consumption was 7 Watts at idle. I'd say Intel for the most part,
has come a long way in power efficiency.

EDIT: I use Mate Desktop BTW.

------
racerror
Corporate procurement practices and policies definitely come into play, as
well.

With Linux, there isn't a consensus laptop model that everyone will request.
One ends up with a lot of one off business cases, vendors, service contracts,
etc.

With Mac, you have a consistent upgrade cycle, one service contact, and no
fragmentation of OS distribution usage, etc.

TLDR; It's easier to say "I want a macbook pro w/ cinema display..." and "we
hired another developer, please re-order a mac dev setup", than any similar
Linux setup.

------
edoceo
Hmm, I've been using Gentoo on desktop, laptop and servers for over 10 years.

My Mac devs make work around in our code (geared towards Debian servers) so it
runs in MAMP. Linux all the way through is a win.

As far as having to edit config files to make things work: I think it's good
to know what's under the hood.

We get recent CS grads who know very little about how computers work. Linux
might force you to learn the fundamentals but, I argue that is a good thing.

And, my Gentoo desktop (primary dev box) has been happy for a decade - through
upgrades to hardware and software. Cheap & stable. What's not to love?

------
mschuster91
The hardware is pretty solid, you can literally beat up someone with a MBP,
and 8+h battery life when coding (on the shell, not phpstorm/idea)... nothing
even comes close to it.

And it's reasonably enough unix-y (and modern if you use macports to install
current versions of core tools) to allow daily work on OS X instead of Linux.

------
maxharris
It gave users unix with a visually consistent desktop environment right out of
the box. Also, the hardware integration makes it easy to just get started
right away without fiddling for days.

------
Ologn
One obvious thing is OSX runs on top of a BSDish architecture. So while using
Macos 9 or Windows could be painful in some respects, OSX has a shell etc.
similar to Linux already.

Prior to Ubuntu, this was a no-brainer, setting up things like a wireless
adapter could be a trial. I run Ubuntu on a System76 laptop and have been
happy with it. I like being able to get the source for everything I use and be
able to patch it.

------
gamedna
There are lots of great techical reasons already discussed, but I would like
to add one factor to consider: the "mercedes effect". Apple devices do have a
certain status associated with them. Combine that with many startups like to
showcase their developers in videos working on dual monitor 27" imacs and
macbook pros.

Food for thought.

~~~
paulddraper
People have Macs for similar reasons as iPhone for similar reasons as Apple
Watch

------
colept
OSX is a lot more refined and the GUI programs available for developers are
more rich. If you're switching from Windows, you're likely to find more of the
programs you're familiar with or alternatives. Also Mac hardware is often
found in Universities which gets students familiar with the environment.

------
fian
My understanding is that the OS X EULA does not permit OS X to be run on non-
Apple hardware or in a virtual machine that is not also running on Apple
hardware.

So if you want to test on OS X (including Safari) then you need at least one
Mac.

Sharing a single Mac for testing could be enough, but given a team of more
than a few devs and it may become a bottleneck.

You can run Windows and Linux VMs on a Mac - without breaching any EULAs.

For web devs who care about Safari, Macs become almost mandatory.

Note, I do not own or develop on a Mac. I primarily work on a desktop
simulation software written in Java. I found the Mac love professed by other
devs I know somewhat bewildering for a long time. I was only when I dabbled in
some web development with a Rails app that I realised how much pain came from
browser differences across platforms. Now the strong preference for Macs made
more sense.

------
dmritard96
Not sure what it is exactly but the retina display doesn't play nice with
Ubuntu 14.04 LTS.

Webcam drivers also broke when apple switched from a USB Webcam implementation
to pci or something.

Power consumption on osx is probably a half or third of 14.04 LTS.

I founded a company and need MS Office (unfortuantely), Fusion 360 for CAD
work (FreeCAD didn't quite cut it) and once things got rolling the number of
Skype calls picked up.

I still dual boot and prefer Ubuntu, but now I am 90+% in osx.

Before this computer and startup, I had been using Ubuntu for 6 years and
loved it. Looking forward to going back one day, but for a while, I'm going to
be on osx.

------
ranedk
I have done .NET programming on windows for 3-4 years and felt the programming
environment was pretty neat. The frustrating part was windows upgrades and the
OS eating up all resources and the frequent need to upgrade the machine.

I switched to Linux(redhat and then ubuntu) for the next 8 years and loved vim
and programming tools that linux had to offer. The resource utilization was
never a blocker. The frustrating part was wireless drivers and machine hanging
up because of them.

I recently shifted to OSX and installed iTerm/vim and all that. There have
been no issues with wireless hardware and resource utilization. However,
setting up production-like environment, which runs on Linux is a huge pain.
Running a dual-boot ubuntu is also not as seamless and there are quite a few
display driver issues. My take:

\- If you have just started programming, start with Linux (if you haven't
fought enough to compile drivers for your machine, you are one bit less of a
real programmer)

\- If you are doing a lot on the server side which largely is Linux driven,
then you better use Linux to understand systems and deployment.

\- If you are using eclipse, then you better shift to OSX because no other
hardware-os combo at that price can let you code in peace.

------
LarryMade2
I could guess that the bar for entry to develop via OSX is a bit lower than on
Linux.

While Linux Distros like Ubuntu make it really easy to set up a developer
system (with localhost web, languages and database) it is even easier on OSX
via MAMP: install MAMP, configure with a GUI, ready to roll.. Linux you might
be tweaking some config files to get the optimal setup.

On Linux you are partially a dev-op not only working on your code but also
learning and tweaking your OS, services, etc. for one reason or another.

Another factor is there are some shinier tools on Macs, (i.e. the Adobe
lineup, and a easily installed Sublime Editor) And many that went to learning
institutions will be comfortable more with Dreamweaver/Photoshop/Illustrator
than Eclipse/GIMP/Inkscape.

I took the Linux route, even though I already owned a Mac, I felt on Linux I
was closer to the metal where Mac OSX had too many safety rails (both for the
user and many publisher's safety)

~~~
pdex
I'm not sure why the adobe suite of products is misconstrued as an "apple
only" set of tools, it's a myth I've run into many times before. They run
rather nicely on other platforms, not to mention sublime isn't mac only
either. I'm forced to use Mac at work (employer wants the same platform to be
used company-wide), but I have always used a wide number of graphics and
development tools (the adobe suite, sublime, maya, zbrush, etc) on windows
over the years and will continue to do so. I haven't played with Linux yet,
but I detest Mac OS as I don't need training wheels.

~~~
snowwrestler
Saying that OS X has "training wheels" just basically discounts you from a
comparative discussion of OS's in my opinion. It's substance-free denigration
that adds nothing to the conversation.

If there are parts of OS X that you don't like, fine, post about those,
specifically.

Adobe products run fine on Windows, in fact Premiere runs better on Windows
than Mac. But the parent was comparing Macs to Linux, and Adobe does not run
on Linux at all.

~~~
pdex
There is nothing denigrating about using "training wheels" as an analogy,
Apple's bread and butter are media consumers and not developers, in my
experience it shows in the OS."Training wheels" are for kids to learn how to
ride a bike without hurting themselves, similarly Mac OS is primarily geared
towards providing a "safe" home computer experience to the computer illiterate
media consumers where user is protected from destroying their system by being
passively prohibitive. These "training wheels" are particularly irritating
although they can be worked around, but they also make simple tasks far more
complicated than they need to be this is rather frustrating/irritating for
some developers. All platforms have their share of problems.

~~~
snowwrestler
> Apple's bread and butter are media consumers and not developers, in my
> experience it shows in the OS.

I mean, have you been to a developer conference lately? That wasn't a
Microsoft conference? Did you happen to see any Macs there?

> Mac OS is primarily geared towards providing a "safe" home computer
> experience to the computer illiterate media consumers where user is
> protected from destroying their system by being passively prohibitive.

OS X has shipped with a complete Unix shell since 2001. Pretty much every
dangerous command you can think of on Linux will execute the same way in
Terminal.

~~~
pdex
>I mean, have you been to a developer conference lately? That wasn't a
Microsoft conference? Did you happen to see any Macs there?

I haven't been to a MS developer conference and saw a mix of platforms at all
other conferences I've been to. Have you actually watched apple's product
launches? Ever notice the media consumer is whom they are marketing to?

>OS X has shipped with a complete Unix shell since 2001. Pretty much every
dangerous command you can think of on Linux will execute the same way in
Terminal.

There is so much more to an OS than terminal, so it's not all that matters. I
suppose if one only worked 100% out of terminal and nothing else it would be a
non-issue.

~~~
snowwrestler
This Apple product launch was for consumers?

[https://www.youtube.com/watch?v=w87fOAG8fjk](https://www.youtube.com/watch?v=w87fOAG8fjk)

Again: if there are aspects of OS X you don't like, that's fine. There are
certainly some things that I don't like. But the idea that it's somehow got
"training wheels" and is therefore not suitable for developers, is just not
supported by any evidence.

~~~
pdex
You're offended by the term, but I assure you I'm being quite objective- the
"safety measures/training wheels" clearly exist. Why is it that you feel it's
not suitable for developers? I'm curious because I never said that, but you
did.

------
pdkl95
Why? Because far too many developers are distracted by technical baubles
instead of prioritizing the long term freedom. We are losing the War On
General Purpose Computing, and apple - having convinced a generation of
programmers to develop for their closed platforms - has done a lot of damage
to computing freedom.

~~~
__44x0
Absolutely. I would continue to use Linux even if I thought my development
environment / user experience were worse than on Windows or OS X. Fortunately
I don't though!

------
mxvanzant
Seems to be the case in US. I work for a small dev shop and everyone else is
using OS X, except me. I'm running Linux Mint 17.1 (Mate Desktop) on a Toshiba
Satellite w/4K screen, SSD, and 16GB ram. Love it. And I like PC style
keyboards better than Mac keyboards :)

------
sgtpepper43
I know the only reason I use OSX for work is because we have an iOS app. If we
didn't have that I, and probably half the other developers, would be rocking
some flavor of Linux. You can write software for 99% of users on OSX (with a
windows VM, anyways).

------
oxguy3
For me at least, I made the switch to OS X simply because of software support.
There wasn't a good Linux equivalent for Sequel Pro; there's no git gui tool
on Linux that matches SourceTree (which my team was standardizing on for its
gitflow integration); etc.

And damn, the hardware is just nice. If I could run Fedora on a MacBook Pro,
that'd be my ideal setup. Or if OS X wasn't so terrible at customization --
the number of sketchy hacks I've had to install to get my setup how I like it
is just depressing.

------
eecks
There's still no good linux laptops* that come with Linux as the main OS.
MacBook Pro blows away all the compeition.

*I've seen poor reviews of System76s stuff.

~~~
jononor
Pretty darn happy with my Dell XPS 13. Use Arch Linux instead of the included
Ubuntu LTS, though.

------
bewe42
I have worked on Windows, Linux, Mac. Nowadays Mac-only:

\- least amount of hassle, 95% it works \- very good piece of hardware \-
great number of OS-X only tools

expensive, but it's the tool of my craft so I'm willing to pay for it

------
proyb2
On the hardware side, Repairability, same hardwares and less waiting time to
repair than competitors which are too fragmented and far less hardware
defective.

------
AznHisoka
Because Apple products are very popular. What laptop/pc comes with Linux
preinstalled?

~~~
Ologn
System76. I use a System76 laptop right now.

~~~
monster2control
Well I'll give them that the options are awesome, 64 GB of Ram and PCIe solid
state drives with top of the line graphics and CPU for about the same as a top
of the line MacBook Pro $3+k. But it is heavy, kind of ugly, and low battery
life. Which to me means I might as well just buy a desktop for less.

------
jordsmi
Works out of the box.

Most dev things work exactly the same as on linux.

You can use photoshop

------
stefantalpalaru
For the same reason so many developers use javascript in the back-end -
misapplied laziness.

~~~
codemonkeys
I agree with ya. It takes a lil work to get Linux tuned to your needs, but
once set up it rocks hard. I use Ubuntu server with the i3 wm and a bunch of
shell scripts. I control my world with just my keyb and I love it.

------
j_s
Ain't nobody got time for that [Linux]!

