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.
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.
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?).
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.
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.
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.
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.
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.
> 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.