Microsoft ♥ Linux and Open Source

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.

Microsoft in Open Source

I know that the title sounds deceiving, especially to those who’ve been watching the open source realm over the past couple decades.  However, Microsoft has been dabbling with open source for awhile, and they even have a website that talks about it.  Let’s look into this a bit more.

Background

I’ve had my eye on the open source world for at least the past decade.  While my roots may be in Microsoft technologies, my first presentations at user groups and conferences were on open source projects and programming in Linux.  Even when I keynoted at Software Freedom Day – Cleveland 2011 – talking about “Keeping an Open Mind About Open Source”, I made sure to mention that yes, Microsoft is included in the list of those involved with open source.  It was nice to be able to mention their company name and get more intrigue than groans.

Microsoft’s Involvement in Open Source in Terms of Development

One myth people have believed is that developers who use Microsoft technologies don’t understand open source.  However, that myth is just that – a myth.  The truth is, developers of all types, including those who use Microsoft technologies, are interested in the open source movement.  Whether they’re contributing to their own projects or encouraging developers to contribute to projects or create their own open source projects, Microsoft has provided developers with a home for open source projects over at CodePlex.

In addition to providing a place to host these open source products, they have encouraged developers to help with the tooling in Visual Studio.  One package management system that’s used commonly in the Microsoft development realm is NuGet, the open source developer focused package management system.  This tool allows those developing with Microsoft’s Visual Studio to easily add 3rd party open source libraries to their applications.

We have a place to host open source packages and tools to give us access to open source libraries.  Microsoft is also known for promoting open source packages and pro-open source solutions in their Web App Gallery, which can be accessed on desktops via Web Platform Installer and can be installed on webhost’s servers for those webhosts that support the Microsoft Web App Gallery. You can even play with these packages and customize them on your own, even if you don’t have Visual Studio.  Microsoft’s WebMatrix tool ties into the Web App Gallery as well and makes it easy to work with applications found in the Web App Gallery.

Microsoft’s Open Source Initiative

Recently, my friend Marques – also known as @tromboneforhire on Twitter – tweeted about stumbling upon the Microsoft Openness site.  I had never ever heard about it up until that point, but I figured I’d poke around the site to see what their site was about.

Microsoft is all about building bridges across platforms.  The Openness site covers how Microsoft is about building these bridges, looking at how openness influences Microsoft and its audience.  It contains stories of Microsoft paired with common open source technologies and packages – including PHP and Drupal.  There’s also a list of resources on openness and interoperability – including standards, Microsoft projects, and other helpful links.  You can also get your short updates from them as @OpenAtMicrosoft on Twitter.

In addition to the Openness site, there’s the Port25 blog that covers communications from the open source community at Microsoft.  Here you can find where Microsoft technologies meet the open source community.  Whether it’s Microsoft appearing at OSCON or something like PhoneGap on Windows Phone being complete, you’ll find all sorts of details on Microsoft’s relations in open source.  As they put it on their site:

Port 25 is about having a healthy conversation with customers and the industry to talk openly and honestly about their biggest interoperability challenges, whether it is on UNIX, Linux, Windows, or other open source packages.

We believe that healthy and productive discussion only occurs when the parties listen and respond to each other, and this is the foundation on which Port 25 is built.

Our goal is to be accessible, approachable and smart, which means our door is always open, that no comment goes unread, that ideas (common sense required) can be openly discussed, and that while change takes time, we’re committed.

Conclusion

In “Keeping an Open Mind About Open Source”, I challenged my audience to keep their mind open for the rest of the conference, as they may have been surprised with what was covered in the conference.  As for now, I challenge you, whoever you may be, to get past the myth that Microsoft isn’t interested in open source.  It’s a myth, and the reality is that Microsoft is interested and has taken big strides over the years to show how they’re interested and want to be involved in the open source realm.