Those who know me know that I have little love for Microsoft Windows. The platform is a special snowflake, and coming from a Unix background (real UNIX, not Linux, btw), every time I'm faced with Windows I feel like I'm in some alternate dimension where everything is a little strange and painful.
I have to deal with Windows because of applications. My wife runs Quickbooks (which is one of the more chaotic and poorly designed bits of software I've run across), the kids have video games they like. I've had to run it myself historically because some expense report site back at former employer AMD was only compatible with IE. I also have a flight simulator for RC aircraft that only works in Windows (better to practice on the sim, no glue needed when you crash, just hit the reset button.)
All of those are merely annoyances, and I keep Windows around on one of my computers for this reason. It's not one I use primarily, nor one I carry with me when I travel.
But I also have created and support software that runs on Windows, or that people want to use on Windows. Software like nanomsg, mangos, tcell, etc. This is stuff that supports other developers. Its free and open software, and I make no money from any of it.
Supporting that software is a pain on Windows, largely due to the fact that I don't have a Windows license to run Windows in a VM. The only reason I'd buy such a license for my development laptop would be to support my free software development efforts. Which would actually help and benefit the Windows ecosystem.
I rely on AppVeyor (which is an excellent service btw) to help me overcome my lack of a Windows instance on my development system. This has allowed me to support some things pretty well, but the lack of an interactive command line means that some experiments are nigh impossible for me to try; others make me wait for the CI to build and test this, which takes a while. Leading to lost time during the development cycle, all of which make me loathe working on the platform even more.
Microsoft can fix this. In their latest "incarnation", they are claiming to be open source friendly, and they've even made big strides here in supporting open source developers. Visual Studio is free (as in beer). Their latest code editor is even open source. The .Net framework itself is open source.
But the biggest barrier is the license for the platform itself. I'm simply not going to run Windows on the bare metal -- I'm a Mac/UNIX guy and that is not going to change. But I can and would be happier to occasionally run Windows to better support that platform in a VM, just like I do for illumos or Linux or FreeBSD.
So, Microsoft, here's your chance to make me hate your platform a little less. Give open source developers access to free Windows licenses; to avoid cannibalizing your business you could have license terms that only allow these free licenses to be used when Windows is run in a virtual machine for non-commercial purposes. This is a small thing you could do, to extend your reach to a set of developers who've mostly abandoned you.
(And Apple, there's a similar lesson there for you. I'm a devoted MacOS X fan, but imagine how much wider your developer audience could be if you let people run MacOS X in a VM for non-commercial use?)
In the meantime, if you use software I develop, please don't be surprised if you find that I treat Windows as a distinctly second class citizen. After all, its no worse than how Microsoft has treated me as an open source developer.