Favoured Desktop OSs

So this is something I've wanted to ask for a while, but I was never sure where, as it seems impossible to have a sensible discussion about this on any Linux/Windows boards as it just brings out all the partisans. However I saw a tweet from Abner recently saying that the Handmade Dev team were now mostly using Linux, so I thought this might be the place.

I guess my main question could simply be put as "which desktop operating system do you choose to use and why?", but I think it's worth refining this a bit.

My experience has primarily been on Windows. However I've used Macs at various times, had Linux installed on all kinds of devices from old laptops to embedded devices, to netbooks and VMs and servers etc. Having just got a new PC a couple of months ago, which shipped with Windows 10, I decided it was time to make the leap to using Linux as my main OS.

Now the thing is, my experience of Linux has always been that it is extremely flaky, and installing it on a modern powerful machine as the main OS doesn't seem to have changed this one bit. I should probably be a bit clearer about what I mean by "flaky". First and foremost, I find that the OS actually crashes/freezes quite a bit, definitely more than once a week. I remember this kind of thing from Windows 95/98, less so from XP, and quite honestly, I only ever remember a couple of bugs actually bringing down Windows 7 for me (both dodgy drivers). In addition, the software on top of Linux always seems much more unstable too. Sure, the Aero desktop used to crash on me now and again, but KDE crashes several times a day. Often, core functionality doesn't seem to work either (e.g. hibernate). For me, Windows 10 doesn't seem particularly stable either. I've had a whole string of BSODs since I got it, not to mention numerous minor irritations. OS X, of which I have fairly fond memories, prove troublesome when I used it most recently (El Capitan) because it seems to make it extraordinarily difficult to install some pieces of software without jumping through all kinds of hoops.

The strange thing is though, when I ask people about this, I have met people who swear by all three of these OSs. I know lifelong Mac uses who never seem to have had any trouble with it, people who run all kinds of Linux distros on all kinds of hardware and swear it's rock solid, and I know a number of people who have been using Windows 10 since its public beta thing and are extremely happy with it. And when I say "people" here, I specifically mean other developers, not just users.

So my second question is, am I just unlucky? Do other people here face these problems? What causes the difference in experience? Is it just pot luck? Do I have more problems because I tend to have gaming PCs with more heterogeneous/esoteric hardware?

That all leads to the third question which is, if you do suffer these kinds of problems, how do you work around it? Which OSs do you find to be the most developer friendly? The most stable?
My particular favorite is still Windows 7, although that's really only because I'm use to it. I don't have any serious Mac experience to draw from, but I've always heard the same complaint you gave. My personal impression of the difference between Linux and Windows is that on Linux I have about a 3% chance of having a serious crash level issue in any given day of use, whereas in Windows I have about a 1% chance of a crash level issue BUT on Windows I have a 99% chance of stupid non-critical problems, and on Linux that's more like 10%. So, since I'm used to the annoying things Windows does ALL the time, I prefer it, but I can totally see why people would prefer Linux, of course my experience may differ from others.

In general there is no system I'm particularly happy with.
For Linux what I've found to be problematic is the desktop environments. This goes deeper than just stability, although I've had a Mint crash that corrupted GDM and made it unbootable. And its not aesthetics either although I have to admit to finding everything just off somehow, regardless of distro. The best solution I've found is just to stay away from them as much as possible and use a tiling window manager (i3 in my case although as far as I can tell they are mostly identical) without an accompanying desktop. It's particularly gratifying to get away from gnome, which almost looks fine now but is secretly terrible once you start using it

But I find casual pc use, when im not in work-mode, kind of unbearable on i3, so I don't use linux for that
For personal use, I've found Arch Linux to be rock solid for me. My serious problems have always been caused by broken software I've used from their User Repository, similar to Ubuntu PPAs. The almost constant stream of stable updates is quite good.

Ubuntu and Debian were unpleasant for me to use. Ubuntu, especially, was rather broken. Mint was kind of okay. But Arch really stood out to me for its package manager and solid community. Never been happier.

I find that Linux's stability really depends on your hardware. Intel and KDE? Expect buggy hell here and there. NVidia or AMD plus KDE? Much smoother experience. I'm quite lucky I haven't run into any of the multimonitor issues that affect other folk as of yet.

Hibernate is something that I just avoided, because I don't use it, it's quicker for me to cold boot, and because I'd rather not have a swap partition. Sleep, I rarely use as well.

A custom Linux kernel, plus BFS CPU scheduler and BFQ IO scheduler, no swap partition, with these two lines in /etc/sysctl.d/99-sysctl.conf:
vm.swappiness=0
vm.vfs_cache_pressure=50

These simple changes made Linux far smoother an experience for me. No glitches, no slowdown, nothing, anymore.

Edited by Kyle Devir on
I do almost all of my work from OS X. I don't think that OS X significantly better overall, its just that Apple seems to change least between OS releases, so I rarely regret upgrading. And other basic things are easier than I have found on Windows or Linux, like automatic whole system backups through time machine for example.

I usually have Linux and Windows VMs running in VMWare fusion all the time, I have SSH servers running on both of them and I use Aquamacs (emacs clone) and I when I run a build, it initiates a remote build over SSH, I also use a mounted filesystem, so pretty much all the source files are local to the Mac.

I use Slackware Linux and Windows 7, would probably ditch Windows entirely if I didn't still sometimes need it for doing Windows development or running game engines like unity and ue4 (which as far as I know still have pretty crappy Linux support for their editors), for a while a few years back I was running Linux only but then I went to uni (finished last year) and needed to run Visual Studio for doing some of my assignments and just really haven't found the momentum to jump back to Linux yet so mostly using Windows 7 atm.

Personally the only times I've had stability issues with Linux has been either hardware related (eg. AMD/ATI graphics drivers - main reason why I use nvidia) or using modified kernels for things like real-time scheduling for low-latency audio. Generally I've found Linux pretty stable and has pretty good hardware support (the main reason why I use Linux over FreeBSD).

I kinda hate both Linux and Windows for different reasons so it's always easy for me to argue one sucks or the other sucks when something about one or the other is pissing me off lol, but overall I still like Linux better because it's more customizable so I have to live with less of other peoples bad design decisions. As for OSX, everything else could well be perfect and I still wouldn't use it because I just can't stand it's UI.

I'll probably switch from Slackware to stali if it ever reaches a usable state as generally suckless seem to have a pretty good way of doing things (although I don't like st, much prefer urxvt) and dwm is pretty decent.
I'd like more people to know about stali. I follow suckless progress since they identified the same modern software problems we did; we tend to approach solutions differently. For example, we're OK with code complexity if it's a result of the features we're trying to enable for our users (although considerable effort is made to minimize unnecessary complexity). Seeing applications try to do everything inefficiently/uncaringly, though, and I can't help but wonder if their New Jersey Style Worse is Better philosophy is entirely justified: "Software that is limited, but simple to use, may be more appealing to the user and market than the reverse."

Edited by Abner Coimbre on Reason: Add suckless link
Thanks for all the thoughts on this. Interesting to see a couple of people mentioning Windows 7. I'm almost tempted to go back to that myself, but I'm not sure how long it's going to continue to receive security patches. Have MS announced an end-of-life for Windows 7 yet?

chronokun
Personally the only times I've had stability issues with Linux has been either hardware related (eg. AMD/ATI graphics drivers - main reason why I use nvidia) or using modified kernels for things like real-time scheduling for low-latency audio.

This is interesting, especially when combined with @Valmar's comment about Intel. My current PC has an Intel CPU and an AMD GPU, and I will admit that most of the crashes I've been experiencing, both on Windows 10 and on Kubuntu 16.04 have originated in the AMD GPU drivers. When I was looking into this, I was told that AMD had the better Linux drivers, but since then, everyone seems to be telling me the opposite, so maybe I should have gone with NVIDIA instead... Ah well, you live and learn! Is this the consensus? Do people generally find NVIDIA drivers more stable on Linux than AMD ones?

@chronokun @abnercoimbre suckless does look quite interesting. I'd not come across it before and it does sound like they're at least thinking along the right lines. I'll keep an eye on their software.

@Quarter @Mr4thDimention The experiences you describe very much align with my own experiences of Linux/Windows. I definitely get that feeling that by moving to Linux, I've traded a lot of minor irritations for a few major ones. And I definitely have that split between development and usage too. Development on Linux does seem to go a little smoother for me, but for usage, and especially games, Windows does still seem to have the edge.

@Croepha As you seem to be one of the more experienced OS X users here, could you say any more about how you find OS X these days? How is it development wise? Is it reasonably easy to break free of Xcode/Cocoa etc. and follow a handmade style of development? Why do you keep your Windows and Linux systems running all the time? What is it you prefer to use them for rather than your OS X machine?

chronokun
Generally I've found Linux pretty stable and has pretty good hardware support (the main reason why I use Linux over FreeBSD).

Interesting that you bring up FreeBSD. Does anyone have anything to say about non-Windows/Linux/Mac OSs? I used OpenSolaris for a while back when that was a thing. It was OK as I recall, but I never tried to use it as my main Desktop OS so I can't really judge it on that front. Anyone have much experience with any of the other members of the Unix clan like FreeBSD or Oracle Solaris? Or outside it for that matter? Haiku has been around for a while now, and RISC OS got a bit of a revival when it shipped on the first Raspberry Pis.
John_Uskglass
When I was looking into this, I was told that AMD had the better Linux drivers, but since then, everyone seems to be telling me the opposite, so maybe I should have gone with NVIDIA instead... Ah well, you live and learn! Is this the consensus? Do people generally find NVIDIA drivers more stable on Linux than AMD ones?

In my experience yes, however:
A. It's been a long time since I used an AMD card so _maybe_ they have improved their drivers? (one can hope)
B. Only when talking specifically about the proprietary drivers - AMD are much more open with hardware docs so when it comes to open-source drivers I'd expect the AMD drivers to be higher quality.

John_Uskglass
Anyone have much experience with any of the other members of the Unix clan like FreeBSD or Oracle Solaris? Or outside it for that matter?
Not a lot but enough to gather the other unixs are generally less disorganized and tend to follow more of an overall design rather than just aggregating assorted independent projects as Linux distros tend to work so there's definitely advantages to them (and supposedly the quality of the source code is generally better too). Also there's always features that FreeBSD or Solaris has and Linux doesn't or the reverse so if any of those happen to be a _must have_ feature for the particular user then that makes a difference (eg. I've heard people rave about how great DTrace is and likewise for things like zones, ZFS, KVM, bhyve etc. though most of that's only really relevant to servers). Whether that should enough to sway people from Linux's wider software and hardware support though I don't know. Personally I probably wouldn't use anything more exotic than FreeBSD because the hardware support seems to just drop away too much beyond that point.

As for the other non-unix systems, Haiku, AROS, ReactOS, 9Front, etc. I'm doubtful they have much to contribute as they're mostly either nostalgia over recreating an old dead system or created out of "I didn't like the UI/programming language" and not really out of OS design goals or any problems they had identified with POSIX or the OS internals of other systems. 9Front I still find somewhat interesting because it's at least born out of Plan 9 trying to improve on Unix, the problem is 9Front takes 'Worse is Better' way too far imo, they seem to be opposed to _any_ significant change so I wouldn't hold my breath that they'll be getting anything like 3D graphics acceleration any time soon. I guess things like Amiga OS 4 & MorphOS are still usable if you don't mind using outdated hardware but then again the same could be said of old macs and old sgi workstations running Irix and so on.
John_Uskglass

@Croepha As you seem to be one of the more experienced OS X users here, could you say any more about how you find OS X these days? How is it development wise? Is it reasonably easy to break free of Xcode/Cocoa etc. and follow a handmade style of development? Why do you keep your Windows and Linux systems running all the time? What is it you prefer to use them for rather than your OS X machine?


This next bit is about general casual user experience, if you only care about coding skip down:

I think the thing I like most, is that while I do enjoy hacking on code, when I'm done, I like to be able to turn it all off and have a pretty decent/stable user experience. Most of the other things that I like about OS X are purely associative, they aren't really impressive by themselves but when paired with enough other Apple products you really start feeling it :)

Apple, usually doesn't change their products very much. They do add things with every release, but these things are minor. You don't have to learn a new UI after upgrading. Most of their updates are pretty much just maintaining what they have and fixing bugs.

I like the fact that Apple tends to steer away from cloud services, for example, every "Messages" client maintains their own history database, and messages aren't stored in some database in the cloud (They do get cached(per device) for when you are offline). "Photos" is an application for managing your photos that provides features similar to Google's cloud photos service, but works entirely offline. When you buy things like tv shows on iTunes, you can download them to your laptop, and stream them to your Apple TV offline...

Hardware vendors make good drivers for OS X. The OS basically ships with almost every printer driver already installed, so hooking up a printer is basically just connecting it via USB or Wifi and hitting print. You never have to edit your Xorg.conf file or re-compile your kernel to get some peripheral to work...

File-sharing and remote access are very easy, as easy as they used to be on windows XP, you can also share files via bluetooth. OS X ships with an SSH server, VNC Server and Samba server.

Airplay is awesome, I can stream anything from my laptop or phone to my home entertainment system, and play music when I'm in the living room, with one click or get an extra display on the TV, with surprisingly ok latency.

Whole system encryption, on by default

Automatic, every hour, whole system incremental backups are done when you are in range of your time-machine target, so that if your laptop gets stolen or run over, you can buy a new one, attach it to the home Wifi and the OS X installer will find and restore your backups, and you are right where you left off when you did your last backup.

I could go on and on about Apple hardware, but thats probably out of scope...

For development:

I don't think that Xcode is really any better than Visual Studio, (except that I don't think Xcode has ever crashed on me) I just use Aquamacs and use a build script similar to what Casey uses.

Homebrew provides a package set almost as good as you would find on Linux, but way better than Cygwin on windows.

I run Linux and Windows, because most of the time, I am shipping applications that run only on those OSes, I prefer to ship applications for Linux, because I think that most of the APIs are better on Linux (better than OS X or way better than Windows)

If you are developing a GUI app for OS X, there is no practical way to avoid Cocoa all together. You can however, make a minimal layer to just get you some input, a window and an OpenGL context...

For fairness: Things I don't like about OS X:

OS X is really bad at customization. Don't even think about themes. You have to install a bunch of little programs that do customizations if you want to do things like make the system not sleep when you close the lid, or if you want to globally remap keys, or if you even want to change resolution to all the resolutions that the Macbook hardware can do. Apple in their infinite wisdom decided that those weren't things that they wanted to support. Over all, Apple really only focuses on a narrow set of use cases, whatever they think is most common...

Apple is very stubborn, and are slow to adopt things that other OSes do first.

While most of the Apple UI follows a consistent pattern, I find that keyboard only navigation is impossible in most applications.

Game vendors don't support OS X as well as they do Windows, also Apple hardware isn't very cost effective for gaming.

Going Apple is very expensive, often their hardware is much more expensive then what you would get by building equivalent hardware yourself, but whether or not it is "overpriced" depends on hard to measure qualities such as build quality, misc features, and their support and integration into their ecosystem

Also, not necessarily a negative for OS X, but OS X is very different from Windows, so a typical Windows user will need some adjustment time to get used to the way that OS X does things. Most things will click in a couple weeks, some things might take a few months. This usually includes trying to install things to make OS X do things the way that they were done in Windows, but eventually just learning how to do it the OS X way...

Edited by David Butler on
I use mostly OSX, but I prefer Linux. Lately I have been disliking GUI (expect for web browsers) and loving command line because it's much easier, for example, in almost any command line program you can type -h or --help and it *most of the time* will display the options with very good descriptions. You don't need to search a menu then a gui to get to the one option you need and most of the time it doesn't change so you end up having to find it again in a new version of whatever software. You also have grep if the help is too long.
Also, I always hate the bloatness in most popular OS and love just something simple like X with openbox or whatever and very light in ram usages and space.
I like the three of them. It as a rule of the universe that Everything Sucks®, but the three of them suck in different ways.


Why Windows is awesome

- Gaems. All the gaems.
- Win32 is a stable target API. Hasn't changed in forever.
- Visual Studio is the best debugger I have used so far.
- AppVerifier, RenderDoc, VerySleepy, I like the tools and if there is a shiny new tool I might want to try, it is likely to be Windows-only.

Why Windows sucks

- Windows as a Service is mostly a Very Bad Thing.
- Font rendering is not as nice as OSX and Linux
- I have to fix my [family member]'s computer all the time.
- I would like to have AddressSanitizer. AppVerifier is OK, but it's not as good.


Why Linux is awesome

- Linux is a nice IDE (with a shitty windowing system tacked on).
- I can apt-get install my project's dependencies. If I have a problem, I can apt-get the source and step into the code.
- AddressSanitizer and Valgrind are godly gifts from the heavens.
- I don't feel like I'm betraying my morals by using it. Also, street cred.

Why Linux sucks

- I waste too much time on random BS every time I give Linux a try. Every. God damn Time. It is unreliable as a Desktop Operating System.
- GTK+ is about as close as you can get to the Win32 API experience on Windows, but it is still a moving target.
- Package managers are a double-edged sword. Linux fixed the dependency hell problem and now every open source project depends on a thousand different things.
- A zillion distributions, a zillion ways your code might break on a system that wasn't tested.


Why OSX is awesome

- It's pretty. Everything looks so... pretty. Using the same monitor and the same applications and switching from my Windows machine to my macbook, it feels like everything is cleaner. This stuff matters.
- It is Unix. I get most of the things I like about Linux
- It is a product made by a company with a hierarchical structure. I get the things I like about Windows. That said, I don't have enough experience with Cocoa et al to have an informed opinion of how much of a moving target OSX is at the API level. iOS tends to change more than I would like but it has not been unreasonable.
- I like the OpenGL tools for iOS. (The OSX counterparts were not as good last time I tried them.)
- I like the way that applications work. Bundles are a good idea.

Why OSX sucks

- The OS is tied to the hardware. If I don't agree with the hardware decisions made by Apple, I am boned. (I know about Hackintosh, but I don't consider that a viable option)
- Apple hardware doesn't age well. I'm typing this on a mid-2012 Macbook Pro and it feels sluggish. It is not unusable, but it is far from OK. A 4 year old laptop in 2016 should work just as well as it did in 2012. There's no excuse.


Everything sucks, but overall I am optimistic. I would rather be a programmer now that 10 or 20 years ago.
serge_rgb
- I would like to have AddressSanitizer. AppVerifier is OK, but it's not as good.

Try Dr.Memory: http://www.drmemory.org/
Thanks! I will try it out
Great answer Serge - I'm with you, each OS has its good and bad parts, and actually (in my experience) Windows users get all the hate but most frequently have tried all the alternatives.

I don't have an OSX machine anymore because they're expensive to keep up-to-date in third world countries - but one thing that *really* bothered me about OSX were the slow animations that you can't turn off. And not having Cut and the "wrong" shortcuts - should be easier to get Windows/Linux (CUA?) keybindings there. Actually that was another reason I sold the machine - couldn't get used to different shortcuts from work to home. Been living in Windows/Linux for too long now...

Linux: the graphics part feels broken and bolted on the rock solid layer below. Everything else is "awesome" - you can compile projects from Github and a simple make works 95% of the time.

Windows: snappy, fluid... but not Unixy. Anyone that lived on linux+bash a couple years knows how much "productive"
you get in that environment.

(Then I saw Casey working and had to rethink about what productivity means... Some linux users will waste a lot of time getting the perfect terminal/bash/zsh/vim/emacs configuration so they can START getting shit done..)

Edited by hugo on