Hacker News new | past | comments | ask | show | jobs | submit login

I am a software developer, and I detest working on my mac laptop. At $lastjob I had a Linux desktop and it is, I believe, the most productive environment I have ever developed in. The job before, I had a windows desktop, and I prefer that to mac.

You say you want to just "get things done expediently," but in my experience apple software is flat out inferior and OSX is the worst of the 3 major operating systems I have to choose from.

Lastly, what does Apple have to gain by switching away from Intel? Not much, at least, not much that benefits me as a customer. Likely they are interested in making their laptops have more in common with their iOS devices, which does little to nothing for me. Apple's behavior towards OSX and macbooks in the past few years should be of great concern for anyone, especially if you actually like the devices.




2/3s of all PR activity on Github is on a Mac, for what it's worth. Certainly the platform punches above its weight relative to market share.

https://developer.apple.com/videos/play/wwdc2017/102/?time=2...


My last couple of jobs have given me no choice aside from a MBP and OS X. They do this because they don't want to manage multiple kinds of machines from an IT perspective. (I'm not sure I agree with this, but it is what it is.) Depending on how widespread this is, usage may not reflect actual user desire (though I would wager quite a large number of users either don't care what they're using, or care, but a MBP is adequate, but would also be fine on something else.)


In my second to last company (a web development shop), they had originally the policy that a new developers can choose if he want either a mac, linux or windows machine. When i arrived there it was 75% mac and the rest used linux, not even one had made the choice for windows. After a while some new guys get hired and one of them wanted to use windows. We found out immediately, that this caused a lot of problems, because he had serious problems to get our projects to run under windows, even though we thought this shouldn't be an issue because all the dev environments were running in VMs managed by vagrant. After while ago watching this guy not getting productive, because he ran from one issue into another, cto forced him to install linux on his machine to end this horror show and windows was removed from the new guys choices at least for developers. The company i went after that and my current one are 100% mac environments, for the reasons of homogeneity you mentioned.


We run a Mac and Linux setup here - me being the admin, this is tolerable. Mac's still-essentially-Unix underlying OS makes this reasonably consistent - I can SSH between either platform fairly easily, for example. We offer new starters the option, and are about 50/50, though I've had a few surprises - one user had only previously used Windows, and from experience these sort of users switch to Mac more easily than Ubuntu, but he gave his MBP back after a day and switched to Ubuntu instead, which he's stuck with. I could not be more proud :D

It's very nice to give end users the option - when I joined, I asked for Linux and was given a brand-new Dell XPS with Ubuntu pre-installed, root access, and told, customise it to suit you. I keep that spirit with my users.

Throwing Windows into such a setup is a nightmare though - two users actually installed their company laptops with their own personal Windows 10 licenses without my knowledge or approval - I still hold a grudge because I had to actually read the MS EULA to make sure they weren't about to cause trouble! It means I can't manage them (I have no real tools to do so on Ubuntu), so they're on their own for that. Fortunately management has my back, declaring the company to be a *nix shop.

Our actual product is all containerised so it should run anywhere.


> I have no real tools to do so on Ubuntu

Ansible works pretty well for managing Windows machines but it requires a little bit more up-front setup on the Windows side and as always YMMV depending on what you're trying to do.


I would have been pretty upset with that. Unless you're writing machine-native code, development environments should work on anything, especially if they run on VMs deployed by Vagrant.


Well the thing with Vagrant is that it (in theory) runs your application code inside the VM, but you typically run all your development tooling in the host OS.

I suspect that it was on the local tooling side that things fell apart for this Windows developer, if he was grabbing a project mostly built on Mac or Linux.

A lot of popular dev tooling built around web technologies (node, Ruby, PHP, etc) isn't as mature on Windows as it is on MacOS or Linux.

My source on this is me. I have a Mac and a Windows box at home, and I've had projects fail to set up and build on the Windows machine for these reasons.


I’ve had problems even getting anaconda (scientific python distro) to work in a VM on windows (because the file system of the host OS lacks certain UNIXy features).


In theory there is no difference between theory and practice. If no one is testing the build on platform X, no one should be surprised if it doesn't "just work" on platform X.


You would think that right? Except then you actually want to run a simple python script on Windows and observe things like: os.rename not being able to replace opened files, the default encoding not being UTF-8 (wtf), not being able to just `pip install scipy` because of some weird BLAS/MKL dependency...


I guess from a business point of view it makes sense, but I really get frustrated when I find an open source project that's completely unbuildable on Windows.

Maybe the developer in question would have been better using a manually created VM or WSL?


Now, take this with a grain of salt, as I'm no open source maintainer, and I only rarely use Windows, and even then for development. Up until very recently, to get real developer tools that are supported by Microsoft one had to buy visual studio. VS2017 has a community edition that's usable for open source projects.

Not to mention, the windows environment is completely different to linux and OSX. Until x64, they had a different calling convention. On OSX and linux, also until recently, I could use the same compiler for both platforms and still be supported by the platform vendor.

All of these non-trivial differences make it a lot more resource-intensive to support a codebase on windows that already runs on Linux and OSX. Asides from my work VMs, I don't even have a windows device that I could use for development. So to me, it's no surprise that most open source projects don't build on Windows.


Community Edition is really nice nowadays, usable for day-to-day professional usage as well. If ReSharper works - it works for me.


Student and hobby editions of Visual Studio exist for decades, before they introduced Community, there was the Express editions.

Also, mingw and cygwin also exist since late 90's.

OS X tools are kind of included on Apple's hardware price.

Apple hardware costs in many countries is similar to average PC + VS License costs.


Whilst I agree with you on all but mingw and cygwin, these tools are wildly different. Integrating microsoft's C/C++ toolchain into an existing makefile would be hell. And again, most people who have a mac don't have to buy the compiler. Most people don't buy extra software after the fact just to compile open source libraries. I can't imagine a reason to buy visual studio for personal use, and I can't imagine a reason as to why I'd dick around with visual studio in my free time.

As for mingq and cygwin, most regular people don't have it installed and configured. And cygwin and mingw are not _platforms_ which receive first party support, as unfortunate as that might be.


I once had to use cygwin to port an old C library from UNIX (I don't recall the flavor of UNIX) to windows. It involved editing makefiles to use the MSVC toolchain, amongst many other things.

It was pure pain. Especially when the boss kept asking me what was taking so long (it's just a recompile right?).


People that have a Mac already payed for the compiler.

500 € PC + Visual Studio vs 1000 € Mac.


I don't believe that the majority of people who buy 500€ PCs would spend money on Visual Studio. In the Mac case, nobody pays for the compiler because Clang is open source - this is a massive oversimplification, but whilst the fact that Clang and Make are distributed in the standard OSX base install is a value add in my book, I don't believe that it's something that people pay for. Also, the people who buy Apple hardware are a completely different set of customers to those who buy 500€ PCs. However, this is all a bit moot as you and many others have pointed out that the community edition is out there and it is usable.


Windows is a bad product made by a company that has historically been a bad and unethical actor that has attempted to limit user freedom and destroy freedom of choice by illegally destroying competitors. Recently we are to believe that they have found jesus and ethics via quiet contemplation and peaceful regime change.

All projects are ultimately created to scratch somebodies itch. If it doesn't work on windows out of the box that isn't their use case. What you are wondering is in effect is why people don't pay money to purchase a windows license which will ultimately fund a bad and evil company in order to enable the projects software to run on an inferior OS that the dev doesn't run or care about. If its not end user software for desktop users it doesn't even have the positive effect of enabling a substantially bigger group of potential users to benefit from the software. For anything server related they are either already running linux or can as easily run a linux vm as a windows one.

Further the users who would benefit will by and large buy a license if the software is non free but probably wont contribute anything but complaints phrased similarly to the support requests they would make for paid products that had failed to perform adequately.


A windows developer just needs to create a build


What was the problem just install an xwindows server (the new bash environment should support it) or just turn on the telnet clinet.


The new bash env is a bit of a let down for development currently, at least for me. I love this move by MS though and am willing to give it another go in the future once it’s more complete.


> My last couple of jobs have given me no choice aside from a MBP and OS X. They do this because they don't want to manage multiple kinds of machines from an IT perspective.

Not that many years ago that was the same reason IT departments would give for only giving people Windows machines.


Apple shot themselves in the foot for this market with the touch bar. It adds such a small amount of utility for annoying every VIM user.


15 year VI and VIM user here. This is a stupid complaint: anyone seriously using VIM remapped Escape a long time ago, or learned to use Ctrl+[.


I've been using vim seriously for years, and I've had escape on capslock for many of them. However, not all users know how to do that or haven't thought of the amazing benefits that can be obtained. There's people who are only picking up vim today. Give them a chance.

To those who haven't: Give it a go. Put Escape on Caps lock. If you've got Control there and you're running Linux or Windows with a standard PC keyboard, you probably actually want to swap Control and Alt. If you haven't, you probably want to swap Control and Alt anyway. (This will give you bindings similar to the Mac's Command key. The thumb is a much stronger finger and far more suited to these combinations than the weak pinky.)


I got lucky on that one! I have been remapping caps lock to escape for years now on every machine I use. It's great, until I need to use literally anybody else's machine.


I have the same experience with the Dvorak layout, which is what I used when I learned to type, at age... um... nine? People crack up when I try to type on anyone else's machine, because my WPM drops by a factor of ten.

This is part of the reason I basically refuse to customize anything on a new linux machine; my needs are already weird enough that I'd rather just adapt myself to the defaults for everything else.


Not to mention every IntelliJ user, and every touch typist.


Vim users commonly map escape to caps-lock.


Caps to Ctrl

Ctrl to Escape

Escape to Caps

I mostly use Ctrl-[ for Escape. I have a lot or weird Ctrl bindings. Not an emacs level of Ctrl bindings, but enough that I use this particular rearrangement.


I don't, because my agency uses a very locked down Windows env and I can't even remap keys (shell?! You jest....)


Then you don’t have the touchbar anyway.


No, my main work environment makes the remapping inaccessible, so I have declined to buy a touchbar. A consultant offered me one free and I still declined, requesting an original rMBP instead.


> map! jk <Esc>

Remap the sequence "jk" to escape, you don't even have to take your hand off the home row to exit a mode.


> It adds such a small amount of utility for annoying every VIM user.

You have to love Emacs and Vim users.

Quite sure Apple's world doesn't revolve around the needs of such a small user base.


FWIW I'm an Emacs user on a MBP with Touch Bar.

No issues.


> My last couple of jobs have given me no choice aside from a MBP and OS X. They do this because they don't want to manage multiple kinds of machines from an IT perspective.

This is a huge improvement over when I started developing and was forced to use Windows.


The managing multiple kinds of machines issues is a real one, speaking from the other end. For uniquely talented software engineers I might let them use what they want but from managing an IT department you definitely want anyone who has no reason to be otherwise on the same exact hardware and software configuration.


Yeah, at my last place, the deal was: First we have to find 5 - 10 devs who want to switch to linux (there were 50 - 100 in total). Then we get a PXE boot image to install linux and, well, DHCP. We get to try it for a couple of month, while producing documentation on how linux works with the infrastructure.

That feels like a fair solution.


I don't trust that for two reasons:

1) There is a lot of cargo-culting around the MacBook because hurr durr Windows is terribad (though, to be fair, Docker does work better natively with OS X than Windows, even under WSL), and

2) Most companies give their developers the choice of a MacBook or the shittiest Windows machines known to man (because of irresistable volume deals from Windows OEMs). I bet the spread would be more even if companies were willing to offer the Surface Book as an option. This laptop is nice.


While I do prefer MacOS over Windows, I believe that you have a point in regards to the computers companies (and people in general) run Windows on.

Most of issues people have with Windows can easily be explained by low quality hardware. If you need a decent laptop, you're looking at price tags above $1000. Depending on where you live, I wouldn't buy a Windows laptop below $1400, if you expect to be happy with it.

Honestly Microsoft should take steps to prevent the sale of Windows 10 on laptops without an SSD and at least 4GB of RAM. That would help the Windows brand tremendously.


What I do every few years: buy a refurb/clearance business-class laptop (latitude, precision, et. al) from the Dell Outlet. The specs may be merely ok, but the build quality is pretty good. And you'll spend less than $1000 :)


Do you think that they want to cede the entire low end market to chromebooks/linux?


Satisfaction rate among surface owners is abysmal. At this point, I'd call the surface brand a failed experiment.


I was going to say; most people I know brought them back for many reasons. One of my Windows fan friends had a surface book 2 and brought it back for repair because of random battery life a few times; ended up buying a Lenovo T470 (I think) instead as they kept insisting it was his fault instead of the glitchy laptop. No issues with the Lenovo ofcourse.


Do you have stats for that? Maybe I'm an outlier, but I loved the Surface Pro so much, I bought a Surface Book for work and a Surface Book 2 for personal use.



The first year was a really bad. Plain and simple. Now it is a decent device, but I'd take a Lenovo today if I had to make the choice. However, for note taking, the Surface Pro is second to none. The form factor, pen, and OneNote is a really good combo.


Until the screen breaks and you can’t turn it on...


If that kind failure recovery is important, then no tightly integrated device is a good choice.


Had two surface pros fail just out of warranty, if that’s the price of a tightly integrated device it’s too high for me. No more surface devices here.


That is indeed poor reliability. The SP4 I used and others I know people have had since launch, are still working fine.


We had the choice between MBPs and surface books (the good ones) and still only management opted for windows.


When I asked for a newer MBP, i got bitched out by the purchasing director. He made the point that I was one of only a handful of people in a 500 person IS department allowed to have a Mac.

Many companies don’t allow mac purchases, even for developers.


A company that balks at spending 2k to enable an asset who costs 50k-250k annually to perform maximally isn't very wise. We are talking about spending 1-4% more.


Docker has a native Windows client for like a year now. Just FYI


Yes, it does, if you're on Windows 10. And volume mounting from within WSL doesn't work with POSIX paths (at least it didn't when I used it last over six months ago) regardless of the container engine type you select (HyperV or Windows Native Containers, which has its own quirks).

Docker for Windows doesn't exist for Windows 7 (still used in a number of enterprise environments). You're stuck with Docker-Machine in that case.


My only complaint is that if the mac were truly a developer-centric device, I wouldn't need homebrew to install software. It should just be in the apple store for me to download.


I think that'd be a disservice to both developers and non-developers alike. It'd clutter the app store and force developers to use the app store and whatever approval process they decide.

I think it would be cumbersome to say the least...

  * Would you have to install through the app store gui?

  * How would it manage dependency chains and conflicts (system ruby vs local ruby)?

  * How about explicit paths or build parameters?

  * How would it handle different shells?
I know other operating systems do this but I've never liked it... I guess I just don't mind installing and managing command line/developer tools from a terminal window ¯\_(ツ)_/¯

And, with all that said, I have a quite a bit of negative sentiment towards Apple lately for their hardware and platform choices. So I would still say, it's not a developer-centric platform (the Mac)...


> Would you have to install through the app store gui?

Possibly or not. Ubuntu gives me both a gui and a command line option for apt. Thinking about being able to type "app-store install openssh" gives me goosebumps.

> How would it manage dependency chains and conflicts (system ruby vs local ruby)?

First, that example is a problem for ruby, not for the package manager. Second, software can be in the store statically compiled. Third, apt handles dep management really well. Perhaps that's something apple can learn from?

> How about explicit paths or build parameters?

This is a solved problem in ubuntu.

> How would it handle different shells?

Again, this is a solved problem.

> So I would still say, it's not a developer-centric platform (the Mac)

The question I have is if we deploy on linux, why are we using a mac to develop software on?


As someone who lives on linux and has to touch OSX for things like building for iOS devices, I find it really odd that OSX doesnt just solve these problems like all the FOSS distros do. It's insanely odd that Apple gives me a bash shell which is years out of date, and it feels hacky to just use what i want. I know Propietary and free software kinda have a hard time co-existing on operating systems built on free or mostly free software, but if OSX is half free software and its posix compliant, Its hard to believe that apple couldn't give you both propietary software and an easy package system for developers easily.

The sad thing about linux is that as much as I love it and its ecosystem, i cant recommend it to anyone who wants things to "just work":

- X and wayland crash on me all the time on this laptop because of its HiDPI screen and my kinda-works-but-is-wonky fixes to work with multiple monitors.

- Hardware support is the best its ever been, but graphics cards, wifi, exotic devices, laptop power states and embedded devices can still be a pain because manufacturers simply dont care.

- desktop applications can still be a little glitchy, Web browsers work fine, as do first party DE apps, but the more you get away from things which arent in the big name gui toolkits and have custom controls and behaviour, the more problems you seem to run in.

But aside from all that im happy here in ubuntu. When your software library feels as easy as picking a book from a shelf and 90% of the system updates by the update manager and says "hey restart when you feel like it" Im quite comfortable.


GPLv3 appears to be the reason for shipping that ancient version of bash.

If you look Apple ship a modern version of ZSH with their OS, I believe because it isn’t affected by the same potential licensing issues.


But why? That doesn't seem like a rational choice by Apple.


Apple wants to use open source code, but doesn't want to make their proprietary code open or to license patents to anyone who wants to build off of their code.


Ultimately apple will sell developer devices at the price point of their Mac pro devices that come with all the approved tech you are allowed to use to build end user services/apps. In addition to the high purchase price you will have to sign up for a developer account and pay annually.

Everyone else will buy consumer oriented devices that are as open as the ipad.

It's not a bicycle for the mind its a train and if you dress appropriately and pay your fee you may set up a concession stand on the route.


* Would you have to install through the app store gui?

With various linux package management systems you have multiple interfaces to the same same system thus you can at one moment use the gui to install foo and having closed that you can fire up your favorite terminal and run install bar.

* It'd clutter the app store and force developers to use the app store and whatever approval process they decide.

It also has a concept that neither Microsoft Apple nor Google has opted to pick up on because they desire control of their platform and to extract a substantial tax on all software sold on same via such control... sources also called repositories.

Linux package management systems draw from not a single centrally managed source but a user editable list of sources. Each source is free to run with their own set of requirements. There is nothing requiring a hypothetical dev tools source from being any more restrictive than whomever maintains the source used by homebrew.

Further packages can actually contain sources. It would be entirely trivial to package up a source of dev tools as a package and allow people to install that via the front end of their choice.

* How would it handle different shells?

Different shells is probably the simplest answer the arguments to a hypothetical install command would be simple text strings. If the argument command includes characters that the shell considers special characters they would have be escaped or wrapped in quotes like any other combo of shell and cli tool. Generally most package names just don't include characters like ([])$\~`'" in the name and most commands don't require any particular special attention to shell escapes.

* How would it manage dependency chains and conflicts (system ruby vs local ruby)?

* How about explicit paths or build parameters?

These are implementation details that don't go away by exiling developer tooling to officially unsupported channels. For example language specific package managers will probably remain a thing but it would be vastly easier if you could do officalmacpackage install developerrepo then officialmacpackage install cargo|node|whateverfloatsyourboat then use that to deal with whatever.

All your concerns are basically lack of experience with more reasonable systems there are zero good reasons not to do this. There are literally no downsides other than the work required for an official solution. However it seems vastly unlikely that we will ever see such a thing.

The logical endpoint of Apple's vision seems to be 2 classes of device. One with a very high introductory price and annual maintenance that allows you to create and run whatever you like so long as such software is distributed via blessed channels and you tithe the required 30% to apple and more reasonably priced but still expensive devices that only allow you to consume software.

The former will come with xcode and technology to deal with apple approved languages. You will be able to play with other tech on your local devices but it wont be able to be distributed to end users.

The latter will be as open as your ipad is now.


It's not a developer-centric OS and it's not supposed to be. But, that doesn't change the fact that a lot of developers prefer it over other OSs. I prefer because it has been more reliable for me than Windows. It's not right for everyone though and I completely understand anyone who prefers Windows or Linux.


I could see an argument that Apple should make a tool like Homebrew themselves or official support Homebrew development (maybe they do, haven't looked), but including it in the app store would just be confusing. Plus, I can type 'brew install <package>' far faster than I could type <package> into the search bar and make the necessary clicks to install.


That same argument extends to the users of Homebrew who are overflowing with cash from startup get-rich moments: please consider funding (if you have $1/mo or more to spare) the Homebrew patreon, which currently lists a total of 285 paying users out of the million developers that depend on it to earn a paycheck every month.

https://www.patreon.com/homebrew

(I do not participate in Homebrew other than as a user.)


I've been using homebrew for years and have never heard of this. Maybe the reason there's only 285 patrons is that the patreon page has not been promoted in any way that I can remember?


Can’t say I blame them for not promoting it through the only way any current user would see it: inside the brew command line tool. I can see the angry commenters now:

“How dare they inject advertising into a critical command line tool that I use to get paid money!”

“It’s inexcusable to promote your own financial success when someone types brew upgrade”

“No doubt they’re blowing the money on burrito delivery in SOMA”

“I’ve been a $1 Patreon since they launched three months ago and they haven’t implemented my favorite wishlist feature!”

“If they can’t do it for free, they should give up and shut down and let someone fork it.”


> ... or official support Homebrew development ...

From memory of speaking with an ex senior-Apple-dev-person, Apple doesn't support any 3rd party Open Source projects nor Communities. eg Homebrew, or even the software they bundle in their OS


Apple will never distribute gpl v3 software, this is the reason bash is ancient on mac and why samba is gone.

Any license with a Patent clause or Tivoization clause will be verboden. As an example you will never get something that depends on Postgres in the Apple store.


Postgres is BSD licensed. Apple even uses it in its Server app


Apple supports and hosts MacPorts

https://www.macosforge.org


macOS Forge shut down in 2016. All those links are to the new homes of the projects.


Macs are macOS and iOS developer-centric devices, those hardly need homebrew.

Other types of developers were a kind of nice to have regarding sales, but no longer relevant.


probably related to the fact that the top language on Github is javascript.

If you do anything else than UI scripts, I would agree with the above and say you are better off with a linux box.


I think you're probably right. I feel like the one thing Mac is really good for is writing the porcelain. node.js came out of the porcelain side, so it seems to fit really well there too.

When you get into plumbing, I feel like there are better alternatives.


Yes that, plus it could be that MacBook/Pros are popular with students: many of whom create lots of tiny Hello World etc repos.


That's because most GitHub activity is by frontend web devs. What about the rest of the world.


Those stats also don’t include GitHub Enterprise..


Do you have a non-video source on this? 2/3s seems really high.


That really is "2/3s of all PR activity on Github is unix-based". People don't use Macs to develop on because of OS X, but because it is unix-based. Sounds like they are going to iOS based which makes a Mac much less interesting to develop on for anything but iOS devices.


That does not mean anything. People can use Macs for development and still be miserable. I am practically the only Dev in my company using non-mac laptop, the amount of envy in people eyes is astonishing.


Couldn't agree more.

Finder is garbage compared to Windows Explorer. OS hotkey navigation is much better on Windows and GNOME/KDE/Fluxbox/xmonad. (I actually miss using xmonad; it was soooo good at this.) Office applications (still very real in a lot of environments) are mostly awful on the Mac. iTerm2 is fine, but I prefer PuTTY. Starting applications by their binary name with WIN + R is better (for me) than trying to find them within Spotlight. There are other little enhancements that I prefer Windows over to OS X, but I'm not remembering them right now.

I also hate the new MacBook keyboards. They take "getting used to," i.e. typing "lighter" than I'm accustomed to. Also, not having USB-A ports and requiring a 90W USB-C to USB-C power brick (i.e. not being able to charge the thing from common chargers, the most lucrative reason for using USB-C, for me) is garbage.

The one thing I like about OS X is that it's a BSD with GNU utilities built in. The thing that I don't like is that it's not a Linux and many of the dev environments I've worked in run on Linux, especially now in the age of Docker. While that's good news in that it forces me to do almost everything within Docker, it's bad whenever I need to maintain parity for whatever reason.


Odd I find hotkeys much better on Mac. They follow a more logical predictable pattern and are much more standarized. E.g. what is the standard windows hotkey for getting info/properties of an object. Never found one.

Also if an app doesn’t have configuration of hotkeys you are screwed. On Mac hotkey config is OS wide.

The command console experience on windows is horrible.

Office apps are better on Mac. Pages, numbers and keynote offer me a totally superior experience. The ribbon interface on Windows is a disaster. You spend too much tome hunt around among a zillion incompethensible icons.

In fact I do GUI design at work and use MS Office as an example of how to NOT design a UI.

Not sure why you complain about Finder. You got plenty of alternatives on Mac. I use Terminal and Finder a lot in combination and they interact with each other a lot better than on Windows. E.g. does windows have an “open” command yet?


"E.g. what is the standard windows hotkey for getting info/properties of an object. Never found one."

Alt + Enter (since Windows 95, at least)? You can find it in here: https://support.microsoft.com/en-us/help/12445/windows-keybo...


The Mac environment takes some getting used to, it took me years to learn all the little details, like if you select a bunch of folders and double-click, it will open all of them. To close them all, option-click the close button.

I do find Finder to be inferior to explorer in almost every way. That tree pane on the left is too useful.


I'm far more of a Mac user, but I use Windows, too, and I agree that the Finder is quite inferior to Win Explorer. The simplest, most obvious things, such as having 2 side-by-side trees for file organization, or right-click on anything and create a new folder there--things that are easy and obvious--are NEVER going to come to Finder, which occasionally adds trivial eye candy such as "album flow" views or colored "tags", but basic workaday functionality, no.

Yes, you can buy a 3rd party replacement with the hassle of deploying and maintaining on multiple machines, if you have them, but my main complaint is what decades of not caring about the most fundamental of all Mac apps (the only one you can't quit) implies about Apple's strategic attitude toward the Mac overall.

For those of us who find the Mac the best pro dev platform, the implications are not good, because what we tend to like about it (desktop unix where all the client stuff just works) is just a historical accident that Apple would not create again and does not intend to maintain longer than necessary.

Rather than make the Finder more powerful to make the Mac better for serious users, Jobs took the approach that people who couldn't understand the difference between a file and a folder were the real market for Apple, solving the problem by creating iOS with no user view of the file system at all.

This turn from computer company to fashion accessory for those who don't care about computers per se was so successful as a business strategy that I can hardly criticize it. It just bodes ill for those of us who like the Mac for features its only supplier wants to be rid of.

Each time Apple has an event where Cook pointedly emphasizes that the iPad is "what we at Apple see as the future of computing", I google for an update on the current state of "best desktop Linux distro".


On OSX you can create a new folder with Command+Option+N. As for the side-by-side trees, I don't understand what you mean, I usually have 2 Finder windows open, then drag and drop as needed.

When I transitioned from Windows to Mac, 13 years ago, I needed some adaptation time, especially with Finder, but in the end I found it powerful. The main issue coming from Windows Explorer is that basic Explorer workflows such as copypasting don't have a Finder equivalent.


As I said, Windows lets you put a new folder (as well as various types of new documents) in any part of the tree that you right-click, while Mac's cmd-opt-n is limited to the root of the folder you're looking at. And having to separately position two windows that have/lose focus independently and can have one come to the front without the other is ridiculous compared to having both trees side by side in the same window like Win Explorer and every 3rd-party Finder replacement on the Mac.

Having been a Finder user since my 128K Mac in spring, 1984, I've had adequate time to get used to an application that hasn't improved in even the most obvious ways for going on two decades. It's fossilware.


Must be something about a particular way you are working. I have never experienced this as a problem.

Why would losing focus on one window be a problem?

Why would you need to create all these directories in multiple parts of the tree?

I can't quite comprehend what sort of work flow of work you do which require these things?

Perhaps I don't see it because I use the Finder and Terminal a lot together. I don't use one exclusively for very long periods.

But I am curious what you're workflow is like, because I see a lot of Finder hate, but don't really get what people's problem are, and how they are using Finder which is causing them so much problems.


Sounds more like you are not familiar enough with using a Mac. Putting two finder windows next to each other is easy, and so is quickly creating a directory.

Finder also supports tree view you know. OTOH does windows have as good filtering tools, smart folders, labels etc?


Option-Click to close is a novelty to me and a very handy one at that... the number of times I’ve accidentally shot myself in the foot by selecting and accidentally opening maybe hundreds of folders is not something I’ve kept count of, but it’s definitely happened multiple times. I’ve been using OS X (now macOS) intensively since 2002 and I’ve come to think of myself as a “Power User”, but I’ve never known of the option-close trick. Thanks.


On your last point: START "title" [/D path] [options] "command" [parameters]

It's been there since forever (Win95?).

start (without parameters) - open a new CMD window

start . - open an Explorer window of $PWD

start <DPATH> - open an explorer window of DPATH dir


What? As much as I'd like for the Excel dominance to end, I can't see how anyone would ever work quicker in Numbers over Excel for any work that takes more than an hour a month. The ribbon interface offers shortcuts to pretty much every single function through the keyboard in an interactive way. I can't say the same about Numbers.


What exactly is it you do in Excel which is quicker than Numbers?

Numbers excel at what a spreadsheet application should be about. Once you get very complex sheets you are much better off using more specialized software such as DataGraph, R, Julia, Matlab, Numpy, SAS


'open -a appname.app'

Is what i generally use to open applications. I never use spotlight


I have long said that Mac os X is only useful as a way to start Emacs, but since 10.10 I am not even sure about that.

Of course it is a matter of taste. I get that. I still have to bite my tongue to not yell profanities whenever I hear anything about productivity and Mac OS.

Most of the time I keep my mouth shut. Now I just wanted to tell you that you are not alone. I have to use Mac OS at work. To avoid frustration I have started to let my soul and will leave my body before logging in and let my lobotomized shell I left behind just go with the flow. At least until Emacs is running full screen.


I don't suppose it's any consolation, but I feel the same way if I have to use Linux or Windows as a workstation. Different strokes for different folks.


I guess it depends on what work you do.

As for writing software macOS is nice since it is quite close to Linux and does contain a lot of the UNIX-thinking.

Windows is, IMHO, a user experience mess. Mac is more gentle and aimed to be simple and useful for everyday people. Windows feels like it was designed by a lot of different groups that in the end glued their pieces together in order to ship it.


> As for writing software macOS is nice since it is quite close to Linux and does contain a lot of the UNIX-thinking.

You know what's even closer to Linux?


OpenBSD?


Nice thing on windows is I can open the command line type >bash and I've got vim, ssh, sftp, bash whatever immediately. I still don't use that because other telnet, x-window setups are better for me. I never found out how to be productive in OSX vs what I can do in Windows.


> Nice thing on windows is I can open the command line type >bash and I've got vim, ssh, sftp, bash whatever immediately.

Yes, macOS has a terminal emulator as well.

> I never found out how to be productive in OSX vs what I can do in Windows.

Open Spotlight, type in "Terminal" and hit return.


Unsure how that magically makes OS X productive. Stuff is just easier and faster on windows or linux. And I’m tired of OS X randomly crashing or freezing. It’s like windows 98 now.


>Stuff is just [...] faster on windows

Windows is the slowest of OSes, see http://www.bitsnbites.eu/benchmarking-os-primitives/


Then how does opening the command line in windows magically make it productive? They're just citing a counterpoint.


It's a trendy way to start Emacs. I used one just to use vim.


I was with you until the "I preferred Windows" part. Windows right now is the most infuriating piece of software I can imagine for a developer. Forced upgrades? Forced advertisement? Gigantic, expensive SDKs with incomprehensible versioning and install times measured in hours, no standard library installation facilities, no standard build facilities, a default compiler that is markedly inferior to the alternatives, it just goes on on and on.


No idea where you're getting most of this from.

I was a C# developer as recently as 2017, and I'd say that I prefer Windows 10 to OSX as a development environment, but going through your points:

* Upgrades are handled by the system administrator at most companies, so it's unlikely that automatic upgrades will be set up if you've got anyone remotely competent handling your IT. * I can't say I've ever seen an advert when working on Windows. There's some Cortana crap, but that takes a few seconds to click away, and you'll never see it again. It's no different to your standard desktop setup for OSX or Linux. * If you're a .NET dev, it's extremely unlikely that you're paying for the OS or the platform, in the same way that you're not paying for OSX. Admittedly, Microsoft tools take an age to set up, but the latest versions of .NET and Visual Studio are much quicker - if anything, I spend far more time upgrading/installing stuff on OSX. Hell, sometimes setting something up on Homebrew will take longer than a standard Windows installation for a given tool. * I'm yet to see a Windows machine, outside of a brand-new one, set up without the necessary .NET framework. If it's not on there, Visual Studio will install it for you. Again, not an issue. * Not sure what you mean by build tools and a default compiler - IMO building/compiling is ridiculously easy for .NET apps, either through the command line or through Visual Studio.

In my view, as someone who has worked on all three sides (OSX, Linux (Debian), and Windows) I'd say that Windows is just as capable as the other platforms for its main use cases. Where Windows struggles is in its differences. It's a very different experience, and people from each side struggle to make the switch, and it's a switch where you feel that you can run before you can walk at times. You have your own way of doing things efficiently, but even though you're looking to do something similar on a different stack you're using entirely different tools.


I don't understand you guys, it significantly depends on the programming language you use, what you said would apply to certain languages only, for example we use Delphi and Delphi runs only on Windows, I believe c# programmers are in a similar boat too.


For C# there's .NET Core nowadays, which iirc is a crossplatform JVM / JDK-like thing, runs on linux and everything too.


Developers really should be using Windows Server for Windows development, particularly if the software is going to be running on Windows Server in production. That solves at least some of the issues you mentioned.


Good point. But the license cost would be too much. I don't think there's an upgrade path to server from consumer. You have any helpful tips?


If you are a Silver Partner or better you don't have to pay to use Windows Server for internal purposes, including development and testing. It's not expensive to get that.


As mainly a Windows developer, with UNIX experience going back all the way to Xenix I can enumerate similar complaints about developing on UNIX.

Expensive SDKs? You should have seen UNIX compiler prices before GNU and BSD actually mattered.

Don't try to use non-UNIX OS as if they are UNIX and the experience will be much better.


This is contrary to my experience. I've been on various Macs for years, tried to switch to a Surface Pro (i7 model) + WSL. Nice machine, but it didn't work. I ended up running Ubuntu in a VM just to get `npm install` to work reliably. And that was horrible and slow, even with VMWare. Installing Linux on that thing looks like a lot of work (there's a whole SurfaceLinux subreddit...)

You know what I ended up doing after nine months of this crap? I switched back to my trusty old 15" MacBook Pro. The backlight is dying, but it works a lot better for me than Windows or Linux!


I wish I could agree. Half of the time I spent on my last linux laptop was spent frustratingly trying to get things to work. The screen font was too small for some stuff, too big for others. It didn't wake up from sleep properly. sometimes it didn't GO to sleep properly. It was death by a thousand cuts.


This has been my experience too. I love Linux, but its just too buggy (And I had all these issues on a ThinkPad that was marked as 'Linux Ready'). It really does give me a nice environment for development but the lost hours and days to fixing problems made it a total time sink. MacOS on the other hand has all the tools I need and works incredibly well. I also cannot stand Windows, its a total mess and drives me mad. So I am stuck with MacOS and for now I couldn't be happier.


Thing is. I could honestly say the exact same but change Linux to Mac and otherwise around.

I had so many issues with Mac and all my Linux devices just work flawlessly for years without issues.


As a counterpoint, I installed Arch Linux on a Lenovo gaming laptop and I'm delighted with the result. Arch being Arch, I had to configure lots of things manually, but there are no bugs to speak of. Maybe you mean weird behavior instead of bugs? That would make more sense.


What does Linux give you that macOS doesn’t?

I use both a Mac and an Arch Linux running i3/awesomewm, and to me macOS is like any Linux distro with a user-friendly desktop environment.

I guess it doesn’t have an « official » package manager, but homebrew has most packages anyway?


Package management is core to the OS, not bolted on. I can change the desktop environment as I please, and potentially run different environments for different purposes, if I so choose. For any piece of software on the system, I can have a part in its development process, if I choose to. I like a non-GUI-centric system. I'm not limited to Apple's drivers, or Apple hardware in general (it's pretty and sleek, but I find some of the design choices grating).

I feel like Apple provides a computer and OS that are user-friendly to the general population. But it also seems like the whole culture is "No, don't do it that we. We've provided this method as the One True Way."


How is package management via apt any different than using homebrew? They're both equally "bolted on".


Apt is the update mechanism for the system. OS updates, application updates, etc. It's a core piece of software on a Debian-related system. Brew behaves more like an alternate software repository...it's not like you're using it to fetch your kernel updates in macOS.


Why does the method of updating the core OS matter? Unless you're a system admin, and have to do it a lot. If not, that's hopefully something you don't spend a significant amount of time on each day.

Most of my concerns with regards to the OS I use has to do with the stuff I do 10s or 100s of times a day.


> Why does the method of updating the core OS matter

Because updating Arch is about 100x faster than updating a Mac to a new version. The loading bar looks nearly complete and then "About 17 minutes remaining."


I’m not sure Arch Linux is the best thing to compare it to. It might update quickly but it might not boot up next time, either.


That's a popular myth, but nothing more. I've been running a single Arch install for close to 4 years now, no problem.


> Why does the method of updating the core OS matter?

Because it's part of the answer to the question "How is package management via apt any different than using homebrew?", and (I think) supports my assertion that Apt is more of a piece of core OS functionality than Brew is.


So, it's more of a philosophical hang-up than a practical one.

I love apt, but I have no philosophical stake in the game. Both allow me to install things from command line. In that respect, they are functionally identical to me.

Then once a quarter or half-year, I need to do an OS upgrade, and then I use two different systems depending on platform (I use both regularly). Let's say one takes 15 minutes and uses apt, and the other takes 45 minutes and uses App Store.

Then I amortize that over the preceding three months, and in both cases the attention required, confusion created, and effort expended approaches zero rapidly, regardless of system.

Like I said, if you're a system admin, then sure.


try 'brew install gnome-desktop' maybe?


Wait this works? Gnome shell? The full gnome experience?


Nope :-/

        $ brew install gnome-desktop
        Updating Homebrew...
        ==> Auto-updated Homebrew!
        Updated 3 taps (caskroom/cask, caskroom/versions, homebrew/core).
        ==> Renamed Formulae
        php70 -> php@7.0

        Error: No available formula with the name "gnome-desktop" 
        ==> Searching for a previously deleted formula (in the last month)...
        Error: No previously deleted formula found.
        ==> Searching for similarly named formulae...
        ==> Searching local taps...
        Error: No similarly named formulae found.
        ==> Searching taps...
        ==> Searching taps on GitHub...
        Error: No formulae found in taps.


I only realized later that it wouldn't really work anyway guessing from all the missing dependencies.


Uniform platform support for multiple architectures. I have Linux desktops on i686, x86_64, arm and aarch64. Same desktop environment, same programs, same easily mirrorable configuration, same firewall system, wireguard, same or fairly equivalent package management between systems.


I work on container-tech and the absence of namespaces and cgroups in the macOS kernel is a continuous source of frustration for my team since you need to work through a VM abstraction for Macs.


What you're talking about is way over my head, but I do understand Linux might be more appropriate for more low-level stuffs and hardcode users like you at the kernel level. I'm happy doing React on my Mac :)


> What does Linux give you that macOS doesn’t?

perf, case sensitive file systems, non stupid alt-tab behaviour, strace, pstack, gdb (these don't seem to work without sacrificing animals), gnome-shell (better than finder by a long way, imo).

I've got a mac. I don't install programs except for things through brew. It's basically shitty linux with outlook.


perf, strace, and pstack can be replaced with dtrace on MacOS.

You can have a case-sensitive position. (Separate from root so it doesn't break some apps)


Do you need to add dtrace to the key chain each time it's updated or do they just not update it like most of their command line software?


What do you mean "add dtrace to the key chain"? I've never done anything related to keychain while using dtrace.


gdb needs to be added to the keychain as a signed program in order to attach to programs. But brew is a rolling release so I might need to add this frequently. It's painful.


DTrace is built-in software.


I took some time to try dtrace out. Sadly it's broken unless one turns off SIP:

https://apple.stackexchange.com/questions/193368/what-is-the...


Only when tracing the operating system, not your program. But yes, that is still a shame. You don't need to turn off SIP globally, you can just enable DTrace while keeping the rest of SIP on.


Thanks for the tip!


I was trying to work with some students with Swift and the Mac character encoding ending up causing no end of problems.


> the Mac character encoding

You mean UTF-8?


..with outlook?

Sorry man, but you’re doing it wrong.

And the Mac file system is case sensitive.


Alt-tab behavior is more of a preference thing.

>It's basically shitty linux with outlook.

Linux is shitty Linux. Except on the server. (IMO, of course).


I can accept that alt-tab is a preference if you want to use alt-tab and alt-`. It's heresy to prefer alt-`, but whatever -the vim-spaces-only(but automated code formatters are best and I dont care what they use)-alt-tabbers will eventually win out.

But on multiple desktops if you alt-tab to the previous application again, it only brings up the application windows in the current screen instead of bringing you to the last window you used (on another screen). Wrong! Broken! Sad!

Also, on mac alt-tab raises ALL the application windows. So if you have shed loads of terminal windows or loads of browser windows open, then alt-tab brings them all to the front. This is definitely broken since it stops common workflows like copying between windows; or finding some text that you want to type into a terminal and then alt tabbing to the terminal only to have the screen covered in terminal windows. SAD.

Mac is low energy (That's the reason I think I have it for a laptop).


I find separate inter-app cycling (cmd-tab) and intra-app cycling (cmd-`) much superior, faster, giving you better control.

However, agreed that on a Mac with multiple "spaces" it's completely broken.


Compared to a optimized Arch, or even a non overloaded windows 10 mac never appeared to me very energy friendly.


> What does Linux give you that macOS doesn’t?

Stable, long term, OS support. I'm running CentOS 7 x64 now, as I got completely sick and tired of Apple's "new OS release every year" bullshit.


You can run things like the Adobe Suite without any ridiculous overhead. Where Xcode is important you've also got that.

For a lot of people that don't care the differences are largely subjective and the difference between Ubuntu, for example, and macOS are largely academic and aesthetic.


With academic, I'm not sure if you also include 'philosophic'. Personally, I'd rather develop on mac than on windows but I'm the happiest on Linux.

A large factor in this is that I like to contribute to FOSS and find that 'ideology' to be a match with my beliefs regarding software.


For work I prefer the macOS environment partially for the software, but mostly because the machines are standardized and interchangeable. If one machine dies I can swap it for another without any fuss. Restore from Time Machine and get on with life, something that takes about an hour or so.

This is really not the case with Windows or Linux. These require a lot of tinkering and tuning. A recent swap from one Windows 7 machine to a Windows 10 one took days, the migration procedure is basically garbage.

I've never had much luck with desktop Linux even though I use it all the time on servers but those get rebuilt with a new OS when they're out of date. Upgrading them is just too much of a fuss.

If you've got a workflow for keeping desktop Linux up to date and rolling over from one machine to another as you upgrade hardware, that's worth sharing.


> Upgrading them is just too much of a fuss.

Switching to a rolling distro will eliminate the upgrade pain. Keeping dd backups is also relatively easy.

And unless you're on a custom kernel, you can just roll over to a new machine with your image and the appropriate kernel modules would get loaded for the new hardware at boot.


> What does Linux give you that macOS doesn’t?

For one, you largely don't pay strategy tax, which is under discussion in the very title of this submission.


freedom.


Strange, I have the complete reverse experience. Mac is by far the best. Windows is worst.

I use Linux at work daily but miss my mac. It is much more unstable and unpolished. The app selection is really weak and the integration between gui and console is weak although better than on windows.

Windows is an utter mess these days as Microsoft is jumping between so many different UI paradigms.


Can you give examples of the GUI and CLI integration? I have a mac, but mostly use a Linux desktop, so I don't know what I'm missing.


Drag and drop an item from Finder to the terminal and it expands to its full path. Not sure if Linux does something similar as I'm not a regular user.


It does, under modern DE, KDE/Plasma does this.


No comparison is fair if someone hasn't used Plasma.

I could not care less about "freedom" or these other philosophical aspects of Linux.

Plasma is just straight up amazing on every level.


I also quite like the 'open' command to do the opposite.


The Linux equivalent of this one is "see", an alias to the run-mailcap program, which on Ubuntu is in the "mime-support" package, which is probably installed by default.


Drag and drop almost anything into the CLI produce a sensible result. Open command works as if you double clicked the item in Finder, which means it can be used to open directories, launch a program associated with that file etc.

In addition because mac use commad+C, command+V for copy paste rather than ctrl+C and ctrl+V as Linux and Windows, you feel no different working from a CLI than from any other app. You don't have to mentally jump in and out of two different ways of working.

This extends all the way into GUI apps. Typical CLI commands keys work in all mac GUI apps. I can use readline keys such as ctrl+a, ctrl+e for moving the cursor e.g. Works even in office apps like Keynote and Pages.

It is very frustrating to not be able to use these Unix conventions on Linux!!

There are lots of little things like this which makes a superior experience IMHO.


I only use KDE, so I can't comment on Gnome etc.

Dragging a file into Konsole (KDE's terminal) gives a menu with the options "Copy here", "Link here" and "Paste location". Seems reasonable.

Dragging a hyperlink or image from Chromium gave the same options. "Copy" downloaded the file, although set a timestamp in 2106 for some reason. This doesn't work from Firefox.

Dragging selected text pastes it in.

"see ." opens the current directory in the file browser thing, "see thing.odt" opens LibreOffice, "see my.pdf", etc. "see http://example.org" doesn't work, although I can right-click the link to open it. (Naturally, "alias open=see" if you prefer that word.)

I set a custom shortcut for Konsole for "Super+C" etc (Windows/Cmd key), but I don't use it very often. I mostly select + middle click to paste, which is a Unix convention I miss on a Mac! The readline keys are nice, they seem to work about 80% of the time on a Mac, and I haven't found a way to get that working in Linux.

My "lots of little things" favours KDE. Properly maximizing a window, having a "keep above" button for any window, focus-follows-mouse, and the general feeling that the computer does what I ask in a boring way, not what it thinks I want in a stylish way.


So why are you sticking with it? Go out and get a nice Linux machine. Expense it. If you're working at a company too square to approve that, install Linux on your Apple laptop. If you're working at a company that won't even allow that, well, you have my condolences. Things to ask before you sign, I guess.


This works, but only for simple environments. Given a work environment where you have a choice of: a) prepared environment with all application dependencies available and a tested-by-everyone, one-click-install/update on a bad system, or b) preferred system, but you have to do all of that from scratch yourself... Sometimes the reasonable answer is "a", even if you're allowed to do "b" (on your own time of course)


I've always been a b guy, and it's helped me understand how things work. One time, I joined a company, and two weeks after joining, poking around with a weird custom machine setup, I found that the machine was running a world-writable batch file as SYSTEM upon boot. Who knows how long this huge gaping security hole would have gone unnoticed if I hadn't felt compelled to poke around with Cygwin?


I asked for both a and b.

I could make do with an older computer for Office and Outlook.


Windows is good, but getting hardware working is a lottery. I recently built a PC with pretty standard components (Asus MB, i5 CPU, Asus GTX 1060 GPU), installed Windows 10, it worked fine until I enabled Hyper-V. With Hyper-V enabled it BSODs few times a day because of buggy NVidia driver.. I had to disable it because of that. While macOS is pretty buggy and I experienced crashes, they are not that often, may be few times a month or less.


I must be very lucky. Didn't saw BSOD in 5+ years now while using Windows nearly every day


May be I'm unlucky, I don't know. Hardware seems to work fine, because with disabled Hyper-V long stress test performs just fine. I'm trying to prepare a bug report, but NVidia doesn't seem to even have a proper Bugzilla, so I'm not sure if it'll go anywhere. I hate to interact with corporations.


What exactly does your development workflow look like where Linux was so much better than MacOS?


Apple frequently introduces changes to its OS that caters to the average user without any hindsight for developers. A good example I had to deal with; I wanted to change the port the SSH daemon listens on. With El Capitan and future versions you have to temporarily disable SIP (System Integrity Protection) - which requires two reboots - in order to make the change to the ssh.plist file. As you can see it's a common problem: https://apple.stackexchange.com/a/208481 It's lots of little things like this that require extra effort on OSX but which are straightforward on a decent Linux distro.


Flatly, This isn't true.

I can still go into /etc/ssh sudo vim sshd_config, can my values, and they stick.

Just to test it, I did it right now, and I'm running 10.13.4, for what its worth.

What exactly was the issue with changing the sshd config? This isn't a SIP protected directory, which is the only thing that would prevent such a move.

Perhaps the requirement of sudo? I feel like most linux distros force that in the /etc directory too.


Changing /etc/ssh/sshd_config was my first attempt as well. But since this is OSX things are a little different, see here: https://serverfault.com/a/67616/


  this security feature that is great for the vast majority of Apple's user's isn't convenient for me.
Luckily, Apple shipped SIP with the option to disable it, and it's not hard. So you can disable it once and then you never need to deal with issues like that again. It's weird because it sounds like you want the protection of SIP without the inconvenience of SIP, but that's never been possible with pretty much any security measure ever -- more safety means less convenience. That being said, to me Apple has actually been the best when it comest to safety/convenience ratio. Linux distros don't even have the option of SIP or something similar, so I can't say I find your argument compelling.


It's not the fact that the SIP is there which bothers me. It's that Apple introduces these kinds of things with little notice and without caring if they break compatibility. This has always been Apple's approach and it's just not friendly for developers.


Is there anything stopping you using a separate sshd to run on a different port? Or using one from homebrew instead of Apple's bundled one?


What was the workflow in which windows was better than anything UNIX based....


I’m missing the logic as well.

Linux > Windows > macOS?


Desktop software development, graphical debugging tools.

The only UNIX based that tops it is macOS.


But Linux is better for that?


Not all all, Linux is the culture of command line, where people improving UI/UX on GNOME/KDE always get bashed as taking the power away doing irrelevant work.

There is not a single cohesive stack of desktop technologies, what macOS calls Kits, Android frameworks, Windows UWP and such.

Something like Glade still fails short of what XCode or VS Blend are capable of.

Sure there is something like Qt QML designer, but that isn't Linux specific anyway.


You are missing context. Grandparent was claiming that Linux was the best OS he’d used for development (fair enough), but that he’d rather have Windows over macOS otherwise. That part I was hoping for clarification on.


Not OP, but the LLVM toolchain provided by Apple is a bit clunky and missing features relative to what you get from a typical Linux distro.


Something I don’t quite understand, coming from a scripting-language bqckground: why are you using your OS’s provided compiler toolchain (for anything other than building OS packages for distribution?) Is there no version manager for clang the way there is for e.g. Rust?


Speaking about the classical C/C++ mainstream, and more from the Linux perspective:

Tooling for C and C++ mostly relies on some external package manager, often the OS-provided one (on most Linuxes, for example). There isn't a standard cpan/npm/pip/cargo for C/C++, although there are plenty of tools that can do kind of the same thing.

There's also not much support for virtual environments (there are tools out there, but not ubiquitous tools). It's pretty easy to point the compiler to a different set of header files and libraries, even on a per-file basis, to get a similar effect.

And from the Apple side (which I have a vague understanding of, having dipped my toes in a few times): Most of the documentation assumes that you're using XCode, and I'm pretty sure that the version of the compiler is just tied to whichever version of XCode you're using (which has a somewhat looser tie to the version of MacOS you're running). So in that case, you'd be using the XCode-provided toolchain rather than the OS-provided one.


You can install GCC from Homebrew if desired. Personally I don't bother because, well, Apple's clang works just fine!


> Is there no version manager for clang the way there is for e.g. Rust?

Not an official one for sure, Cargo is a blessing for people used to dealing with C/C++ dependency management.


Macs ship with outdated versions of common bash commands and tools as well. Homebrew goes a long way to fixing this for me.


I have the same problem on Ubuntu LTS distributions. Eg the ancient version of git in 16.04LTS.

You can fix that of course but homebrew does the same job on macOS.

Roll on 18.04LTS.


Homebrew exists on Linux. I like running LTS distros because they just work. For newer per-project exceptions, I put everything into a container (again layered on LTS), it is esp nice for things like specific versions of LLVM which I wouldn't want to pollute my base machine with. My peronal userland gets shipped via, cargo, go, pip, npm, etc.

https://github.com/Linuxbrew/brew


I try to put everything our team does into a container for the same reason. I'd point out though that the version of docker listed by apt on 16.04LTS is also really ancient. Pre docker-ce.


Yeah, I install docker on to 16.04LTS via this install guide [0]. I'd happily use something else, and probably will, but docker is low friction.

[0] https://docs.docker.com/install/linux/docker-ce/ubuntu/


The most enjoyable and productive dev workstations I have used/setup have all used rolling release distro's for this exact reason.

It does have the overhead of requiring you actually understand (or know how to google) your system/packages that you use though.


It's not just understanding the packages. When I upgraded from 16.04LTS to 17.10 I had to relearn how to compile the kernel because my laptop would no longer boot.

Wasn't that hard to do in the end but it's not something I've done for many, many years and doesn't fill me with confidence.


BASH is outdated, but I compile the latest version and install it in /bin (I have system integrity protection turned off).

Other UNIX utilities are actually standard POSIX ones. If you are used to GNU extensions to these on Linux, then Mac ones may seem outdated, but ironically (macOS kernel is called XNU which stands for X is not UNIX) Mac is certified UNIX, while Linux is only UNIX like.


StumpWM & a full GNU userland just like the machines we deploy on are killer.


It's sort of apples and oranges .... I'd thought the parent was talking about day-to-day consumer stuff (which even computer scientists and programmers do) like managing music, photos, various online accounts, and so on. Very different from all the stuff that software engineers specifically do. Of course there is some overlap but overall its two vastly different sets of user experiences.


I can concede Linux might be superior, but were you comparing apples to apples with OSX vs. Windows? Most Windows development seems to be on MS-based development stacks. A lot more of platform-independent development happens on OSX, I'd be willing to bet, and that iOS development on OSX would be commensurately productive as .NET development on a Windows machine.


The issue seems to be many equate developer == UNIX developer, as if there wasn't anything else.

Also UNIX underpinnings on macOS, just like on NeXTSTEP, was just a mere convenience, the OS culture was never about crufty CLI programming, and many that only jumped into Apple after OS X have not yet grasped it.


Aww this thread is such a waste of time and space. Bunch of totally subjective thoughts without any specific examples.


What apple software do you need to use? Sure, it's annoying not having the GNU command-line utilities. But `brew install coreutils` basically fixes that for me. I admit I don't work heavily with compiled languages on macOS so I can't comment on technical aspects of that. iTerm2 is not inferior to linux terminal emulators. The Apple laptops are quite obviously the best hardware experience out there. I mean obviously iTunes is a complete insult to humanity, and I've no fucking clue how to use Finder etc, but does that matter really?


I mean the laptops are great.

Provided you don't need a HDMI port. Or more than 1 spare USB port. Or am ethernet port.

You could get the touch-bar version, but I've read literally nothing but bad reviews and stories about that thing, plus tb versions have smaller batteries.

Yes, I could get a dock, but here's a better idea: how about apple chills out on their unnecessary-thinness fetish, and givese back some actual functionality in my laptop.


With touch bar i agree, it hate it. But the thunderbolt dock thingie totally rocks. It's really nice to only plug in one cable to connect the complete hardware on your desk (multiple screens, ethernet, power, etc).


In theory the dock is nice but in reality they don't work at all. Does Apple make their own dock?

Every time I come back to my desk with my laptop I have to go through some ritual involving opening and closing the laptop lid and connecting cables in a certain order to maintain screen orientations and try to get the thing to even wake up. I power cycle my dock at least three times a week to try and make it all work

I used to have a 2014 RMBP with the Apple display and it was fantastic because it was all built by Apple and Just Worked (TM).

Hopefully moving to their own chip fab is the start of them going back to owning the entire device solution.


Yeah, this is why I'm so happy with a Surface Book. In a couple of generations once all the bugs have been ironed out I'm sure third-party Thunderbolt docks will be great, but for the time being I want a first-party dock.


TB3 is definitely an improvement over the TB2 ports on previous Macs. But there's no reason Apple couldn't build a laptop that has both TB3 and HDMI/USB-A ports.


Here's a counterpoint: I have mbp tb and I like it. Only problem I had was esc, but after a while you get used to it. I also like how light and thin it is, I can go to work now with my backpack pretty much empty.


I mean, I used to ride to work/uni with my 2009 macbook in my backpack without any issue (along with textbooks, notes etc). Compared to today's machine's that thing would seem like a tank, so I don't know why everyone goes on about these new ultra-ultra thin mbp's like they're the first laptop to be portable lol.


I've heard it said that the greatest minds of our generation are thinking about how to make people click ads. However, I feel like the greatest minds of our generation are spent trying to figure out how to enable people to build Linux software on OSX. Whether it is:

* a convoluted process involving Vagrant, Docker, or both, because you depend on one or more pieces of software that don't run at all on OSX, including Docker itself.

* slogging through bugs specific to services running on OSX because they really only support Linux well, such as Cassandra or Kafka, or even MySQL.

* Getting shells scripts that work reliably on both OSX and Linux, especially as the tools used to do so break backwards compatibility, either by Apple itself or by 3rd party tools like HomeBrew.

* Getting a consistent development environment at all on OSX. Doing so seems to be much easier on a Linux distribution than on OSX.

And that's not even talking about general issues like:

* incredibly flaky bluetooth drivers, often requiring a full restart to fix, if not having to reset some weird hardware bit.

* My laptop randomly not waking up properly from sleep and requiring a restart.

* My laptop randomly beach-balling more often than I ever saw BSoDs on windows.

* OSX seeming to just run really slowly compared to Linux whenever it is stressed in any meaningful way.

* My laptop's wifi not working with random wifi endpoints, such as at the airport or hotel. Whether it's router software bugs or OSX bugs, I am always able to connect just fine on my windows laptop.

* Having to deal with OSX's incredibly outdated userland and its BSD-specific userland. Yes, there are workarounds, but they are generally a pain to figure out and have not been standardized in our environment in any way.

* For a few months my OSX terminal was SEG-faulting about twice a week. I learned to be very grateful for screen/tmux during that time. At some point Apple seemed to fix it, at least.

At $lastjob we were actually developing a Linux service that relied heavily on Linux APIs because it was essentially creating full-on Linux containers like Docker. Before I joined, the previous developers, all big apple fans, were actually going through the tremendous effort of trying to make the service at least build and run on OSX, even if it no-oped most of the things it did.

When I joined, one of my first acts was to completely remove OSX support for this service, and I promise you that life got way easier ever since. Our development processes got simpler. Our build system got simpler. And most of all, our source code got simpler and easier to read.

Granted, most of us aren't developing software that directly calls into Linux APIs, but even then I think you'll find huge productivity wins if you just use a Linux laptop or desktop, assuming everything else is equal.


Everything you listed under your general issues section is my exact experience when running Linux. I don't seem to have any of those issues on OSX.


I did maintain a Linux laptop (Ubuntu) for all my personal and development usage, from 2003-2011. Based on my experience at that time, it is entirely incorrect to claim that the experience with device drivers (wifi, bluetooth) and sleep/suspend/hibernate is better on Linux. Those things basically never worked right, battery experience was terrible, and many times during that era I lost a day's work because something was broken early in the boot sequence, and I couldn't even start X Windows.

In 2011 I switched to macOS due to my job and I have never had to deal with any of that. Ever. Perhaps the Linux laptop experience has improved significantly since then though.

Furthermore, there was no hardware nearly as nice as Apple laptops on which to install linux. (Yeah, other than Apple laptops, but I felt like I didn't have the money to justify that).

However I of course agree with your points regarding Vagrant/Docker and shell scripting. It is a shame that MacOS could not be based on Linux.


The device drivers compatibility and availability on Linux these days has never been better. Even better than Windows and OS X out of the box in many cases. Seriously, there has been huge improvements in the last few years.

If you want to run Linux on a laptop and get the best experience, a Mac is not the best option. Thinkpad (business class X and T series) is what you are looking for.


Linux has come far in seven years. I haven't had issues with wifi or bluetooth for years on quality hardware (Thinkpad, Dell.) YMMV


I begrudgingly use a MBP now after many years dealing with similar issues on Linux. The hardware is great, things adjacent to hardware are great (drivers, external monitors, configuration) but I would prefer to have the windowing system behave more like Gnome. Things like Alt+click to drag a window, Alt-Tab cycling through windows not apps (and stick to the same desktop workspace at that) menu bar location etc.


FWIW Alt-Tab, for me, does cycle through windows not apps, and windows within the same workspace only. Check SystemPreferences => Keyboard => Shortcuts => "Move focus to next window"


for everyone who wants to expirience a hell of developing software for linux under OSX i suggest to try to build apache httpd server from source on mac. it seems to be a trivial task on Linux but it is a hell of nightmare on OSX. I am saying this just because having a custom build version of apache is a commin need for many web projects.


Once you've got to the point of needing to match your production server technology, doesn't it feel like you should be using a VM or docker (assuming you're tied to MacOS as the development environment)?


Yeah, i don't understand this argument. Even all the devs i know working under linux are doing all their development under docker or VMs to match the live environment and being able to switch between different projects more easily. And even when you have only one project, who wants to run debian stable or centos as his main OS?


I do use docker. Do not worry about this part.

But first of all development without docker is much faster. Setting up a docker container takes some time (especially with a custom built apache server).

Secondly running a docker machine (needs a Linux VM) on mac in parallel to Vagrant (I have to use it too) is CPU taxing as both (docker machine and vagrant) VMs take a lot of power from main CPU.

Add to this constant port conflicts and network paths resolutions issues between different docker containers and hosts. Also it forces me to use Oracle Virtual Box (who likes Oracle ?) These little things all add up.

My point is that what should be a trivial task, is not so trivial when deployment is done on one platform and development is done on another. I agree with original comment that it probably makes sense for industry as a whole to switch to Linux development workstation instead of Mac.

The only reason I use Mac besides it is a company policy is because OSX somehow able to render better fonts. My eyes are getting tired after looking on poorly rendered fonts from Linux machines. If you use Mac and want to see how Linux fonts look like - install SeaMonkey browser. It turns off all proprietary patented algorithms available on OSX and renders fonts exactly as on pure Linux where due to some licensing issues many nice font rendering technics are disabled.


Do an intermediate container, and it shouldn't take very long for repeat builds.


> Even all the devs i know working under linux are doing all their development under docker or VMs

I don't, because docker is a buggy, embarrassingly-poorly-designed system and VMs are a pain. I develop on the same system I deploy on: Debian stable.

> And even when you have only one project, who wants to run debian stable or centos as his main OS?

I loathe CentOS, but I love Debian stable. It's a wonderful, solid (one might even say … stable) system. Why wouldn't I want to run it as my main OS?

One of the things I really hate about our development culture is the cult of the new. It's a good thing to use stable, well-tested systems. Let others find the bugs; I'm happy to get work done.


> who wants to run debian stable or centos as his main OS?

I haven't used these two in particular, but if they support flatpak, why not? You'd have the same packages as on the server plus the latest versions of GUI apps.


Interesting point, is flatpak already a mature thing?


I've used flatpak on an Ubuntu 16.04 base without issues. There are limitations, for example you can't easily replace/update your window manager through flatpak or snap. But for user-facing apps, it's really a great step forward.


The macOS system shell, python, compiler etc. are out of date, and out of your control. They're good enough for basic tinkering. However, as soon as you develop on a Mac professionally, you should create your own dev environments and stack independent of the macOS maintained one, starting with brew for example.


I thought it was common knowledge that you should not rely on system provided Python, Ruby, Tcl etc. They are there for scripting the system and nothing else.

If you are Python developer, install specific version your project needs and use that. Same for any other language.

Not sure what you mean by outdated compiler? For what? C, C++ etc are distributed with Xcode and clang is usually standard compliant and recent.

BASH is the only problem. Newer BASH versions switched to GPL v3 and Apple will never upgrade to that.

My personal solution for that is to disable system integrity protection, build latest bash and install in /bin.

This way most scripts that have #!/bin/sh or #!/bin/bash and rely on new BASH features just work.


You always ought to build on the same hardware you deploy on - to be blunt having multiple developers messing around on n different macs is just madness!


Just use docker or a VM for matching your production environment. Then your devs can use whatever device they're comfortable with. Add in a CI environment and then suddenly you don't need to force the same OS on everyone. Everybody likes something different.


Its better than nothing, but you still have added extra risk by doing it this way:

Are all the VM's exactly the same

Can you 100% prove that the vm behaves identically on all the varied hardware.

And no "professional" would consider "Everybody likes something different" is ever valid for a paying job!

No problem if its a hobby project but on a project with even a small number say 5 or 6 the risk isn't worth it.


Once again, this is why CI is important, it acts as a final test to make sure things build and run correctly. If your deployments go through the entire CI process before going anywhere important, the source of the work (developers' particular workstation setup) is not as important.

> Are all the VM's exactly the same

Is the silicon die on your processor exactly the same as everyone else on your team? If not, you're not a TRUE professional.

> Can you 100% prove that the vm behaves identically on all the varied hardware.

No, but I also recognize that I (and many other devs) are not writing space shuttle / train control / self-driving car software that is responsible for human lives. If I were, I wouldn't be advocating for the style of development I mentioned above. That is a different situation which I imagine most people on this site are not dealing with.

> And no "professional" would consider "Everybody likes something different" is ever valid for a paying job!

What does this even mean? Of course it can be "valid" for a paying job. There are literally companies out there who offer different OSes and machines to use for a job and the developers get paid. You get to deem they are not "professional" because...?

> No problem if its a hobby project but on a project with even a small number say 5 or 6 the risk isn't worth it.

The risk doesn't lie with the number of people on a project but the scope of the project itself: basically, can human lives be impacted in a significant way if a dev screws up? Then yeah, there are better, more rigorous ways. Are you writing a web app, a desktop GUI, some CLI tool, or perhaps...the Linux kernel? Then develop on the machine you like! Have a good review process, set up CI to build for the platforms you support, and implement a good set of tests.


"Is the silicon die on your processor exactly the same as everyone else on your team?"

Of course I have worked on projects where all the test dev and live hardware was explicitly brought from the same production run so the hard ware was identical down to the rev no of the pcb's - our hardware guy would have liked to have all the disk also from the same production run.


Can you "100% prove" that your destop Linux distribution has the same kernel modules and packages, and that none of the versions or patches diverge from the server your project is destined for?


I don't even know what hardware I'm deploying on. Amazon/Google/Azure has abstracted that away from me.


> What apple software do you need to use?

Not sure if you're asking about "Apple" software (eg from Apple themselves), or OSX Software.

Personally, I miss Affinity Designer, and SnagIt. Both OSX applications I've paid (though not made by Apple), and which have not-as-good-to-use equivalents for Linux.

I still find myself switching back to OSX when I need to get things done using them. Rare now, but still happens.


Quite obviously the best hardware experience? That doesn't seem obvious. I've been running Linux on Apples for many many years, but mid last year I bought a Dell. I'm certainly satisfied with it; I definitely miss the magsafe power adaptor, but that was a trade off I knowingly made. It seemed on balance that Dell had the better product.

What was so obvious that after checking out the options, I bought the wrong hardware?


I like Linux better than Mac which I like better than Windows. I don't use Linux for work right now because HiDPI support just isn't there for a lot of Linux software.


What has given you HIDPI trouble?

I have Kubuntu at home and a 4k screen, and also at work with a "3k" screen. I don't do development at home, but the general desktop works fine.


You're lucky that you get to have just one dev environment. I have 2 Windows, 1 Mac, 2 iOS and 1 Android device on my work desk and I have to constantly switch between them.

That said, I do most of my heavy lifting on the Mac, and all primary dev on a Mac. Doing the equivalent tasks is a chore in Windows. I used to be all-Windows, but once I understood that MacOS is file-oriented and not program-oriented, it helped a lot.


Really? I've always found Mac OS unpleasant, because it seems to me very program oriented. I typically work in a task oriented way (a collection of windows, probably from different apps, on one virtual desktop, referring to related files; another virtual desktop has windows from the same apps for another task).

This has always seemed to me to be a species of "file oriented" working, and I prefer apps that run in a file oriented way. For instance, a graphical file manager that shows a folder in a window, and you click to get open an item in the folder you so always get a new window - even if it happens that the item in folder is just another folder that is opened by the graphical file manager. Or office apps which always open each document in a new window, and when I close the current document, the only thing I notice is that the current document is closed - it doesn't try to focus some other window from the same app.

But Mac OS has always seemed an almost perfectly application-based interface with its fully application-based dock and it's application-based global menu (close a window for a file that was loaded by Cool App, and Cool App's menu still shows). I think it's Finder is a bit confused: it used to be mostly file based, at some point in the OS X years it got more and more application based but perhaps it's swung back - it's been a few years since I've bothered trying Mac OS. It had some of the most appalling virtual desktop support when I last used it, that made me think "the people who have implemented this only work in an application-based way". I can only imagine that's got better. But it seems that Mac OS is always: application-based workflow is prioritised, file-based workflow is secondary.

I have found that Linux can[1] excel in this workflow, Windows is ambivalent to all workflows, supporting all of them badly because it supports none at all, and Mac OS prefers you to think "what tool am I using", not "what task am I doing".

Is my experience entirely unique?

[1] i.e. it depends on what particular tooling you're using - it's possible a default setup is appalling.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: