A long time ago, when I was much younger, I used to see Microsoft as this gigantic, unapproachable power that was popular in homes.  I saw Linux as this operating system that truly hardcore geeks played with, geeks who were anti-social and more like hackers.  This was my misperception as a youngster.

As I got older, my friend Nivex introduced me to Linux – a friendlier, gentler idea than I had perceived.  Sure, I may have had to compile my kernel and install the distro quickly on my own since I kernel panicked in a record amount of time.  But Slackware Linux… it was still totally hardcore in my mind, hardcore and made me wonder “why was I trying to learn to work with an operating system that I felt was out-of-my-league?”

I also saw the flame wars and vitriol in the Linux community whenever Microsoft was mentioned.  Seeing the immaturity of that community steered me away from that.  For a community that embraced open source, they were closed minded, not open-minded.  It wasn’t something for me to dabble in, community-wise.

However, as time has gone on, I have continued to use both operating systems while staying on the mindset that one day they may come close.

Running .NET on Linux

Fast-forward to 2008/2009… I had caught wind of the Mono project.  Mono is an open source implementation of .NET that would bring .NET technologies to Linux, or so they claimed.  I didn’t believe it – Microsoft technologies on Linux without being in a Windows emulator… this idea just wasn’t computing.  I had to try it out for myself.

Being the polyglot that I am, I also heard about running non-Microsoft languages on top of .NET – specifically IronRuby and IronPython.  Again, mixing Microsoft with communities that aren’t typically friendly of Microsoft… I was skeptical of the idea and had to see it myself.

So what did I do?  Since Ruby has a stronger community than Python in Cleveland, I decided to take the road less traveled and venture down exploring IronPython.  But wait… Mono does .NET on Linux, and python runs on Linux…. could IronPython run on Linux?

PyCon 2009 – Showing IronPython on Linux

In my adventures of clearing up my skepticism, I had fun playing with IronPython and learning how to work with it on Linux.  Somehow, I decided it was a good idea to submit a talk to the national Python conference – PyCon – on running this.  What I hadn’t known was that the IronPython team and the father of the language (Jim Hugunin)  would be in my audience.  To this day, I remember this presentation experience clearly – from Jim taking over the Q&A session (politely!) and then waiting for me after my talk to tell me that it was cool to see since Microsoft didn’t let him play with Linux at work.  These are my slides from that conference:

So there I was, in 2009, showing that the community was wanting Microsoft technologies to be cross-platform and friendly with other languages.  But… it was truly at the community level.  Corporate marketing wasn’t there.  So Microsoft had to rely on polyglots and adventurous devs like me to help draw attention to this move.
Fast Forward to Today
Microsoft has come a LONG way since then.  They had CodePlex for their open source projects, but thanks to listening to the community, they have moved from CodePlex to GitHub.  They have moved a lot of their .NET functionality to the open source realm – check it out on their .NET Foundation repos website.
Mono has grown since then with more support and more ported libraries than it did back then. It is compatible with .NET 4.6, .NET 4.5, .NET 4.0, .NET 3.5, .NET 3.0, .NET 2.0, and yes, even .NET 1.1.  Check out Mono’s compatibility documentation for more details.
Microsoft is playing nicely with Linux.  In 2014, OpenShift mentioned that you can run Microsoft .NET apps on their platform.  Mark Russinovich reached out to the Linux faithful to encourage them to send in their resumes – they want to work with people who want to help the two come together.  Microsoft just announced a partnership with Red Hat  for cloud solutions.  Check out this demo of Microsoft .NET over on OpenShift:
They also are encouraging developers to write code for multiple platforms and adding tooling for this. With Visual Studio 2015, Microsoft brought in Visual Studio Tools for Apache Cordova.  Through this tooling, we can use Visual Studio to write apps for iOS, Android, and Windows via web .  They’re also getting their tools cross-platform, with the introduction of their code editor called Visual Studio Code – which can run on Windows, Linux, and Mac.  Visual Studio  Code has syntax highlighting for a variety of languages.  Below are screenshots of Visual Studio Code with Python, XML, and Java files:
java-vscode
Java in Visual Studio Code
python2010-vscode
Python in Visual Studio Code
xml-vscode
XML in Visual Studio Code
Conclusion
Youngster me thought that maybe one day Microsoft and Linux would get closer together and may one day play nicely.  However, I had no idea it would get to where it is today.  Microsoft has made great strides to get here, and I can only imagine where it will be going in our future.  Youngster me is very teary-eyed and proud of Microsoft and where it’s been going.