Friday, December 11, 2015

What Microsoft Can Do to Make Me Hate Windows a Little Less

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.


iJean said...


you can legally download a VM with Windows 7 from MS for IE11 testing (you can basically install/test anything on the VM). The VM is valid for about 3 months:

Garrett D'Amore said...

Can I run developer tools there? Can I get to a command prompt etc. I need more than just Internet explorer. (I used this actually in the past to get to that expense site.)

The three month expiration is onerous for a development environment. Having to reinstall all your tools etc every three months sucks.

This was a token effort by MS to assist web developers in making sure their sites work with IE. It isn't a real developer environment.

iJean said...

Yes, it is a full Windows 7 VM. You can install everything. Just keep in mind that it will expire in a few months (I think you can freely reactivate it 3 times or something like that, not sure though). I've installed Visual Studio for some tests in a Windows 7 machine and it worked just fine.

Agree about the reinstall the world every 3 months. What you can do is to download the VS 2015 iso image (1 download) and use this to install the dev tools every 3 months. Not sure, but I think if you keep a copy of the original VM you can start to use it after 3 months (if I'm right you will only need to download this once).

Obviously, MS intended this for web development, but it can be used for general development as long as you have a quick way to install the dev tools, like some scripts that install what you need. Not ideal ...

Unknown said...

I agree that it would be in Microsoft's best interests to set up a licensing program for open source developers. But while we grow old waiting for them to do that, you still might have some options.

* You can also download the Windows Enterprise Evaluation Edition, which is another way to get a free 3-month activation.

* You can sign up for Azure and run a Windows VM there. The $200 introductory credit lasts a long time if you only use the VM occasionally.

* If you happen to be a student, you can sign up for DreamSpark, which gives lots of free MS licensing, Azure credits, etc.

* If you happen to be associated with a startup, you can sign up for BizSpark, which also gives you lots of free MS licensing, Azure credits, etc.

* If you have an email address and a credit card, you can sign up for Amazon Web Services and run a "micro" Windows instance under the free tier for a year, and cheaply thereafter.