Microsoft open-sourced MSBuild

The Microsoft initiative to open source the .Net platform (which the MSBuild tool is a part of) has been talked about a lot in the past (though I have something to say about this as well, probably later in this post), but the fanfare has died down quite a bit since the last announcement. One might say that the reason they didn’t open source the entire thing at once was so Microsoft can space out the announcement and synthetically generate continued buzz about their platform, but knowing how these things usually work, its much more likely that because preparing a project for open-source is difficult and time consuming and a project as large as .Net doubly so (or a thousand times so), so it makes sense to do so in parts.

But to the question at hand – what does an open source MSBuild means to you?

If you are not a programmer, then nothing – moves a long, nothing to see here. MSBuild is not even directly involved in creating the software you use, so don’t worry about it.

Great – now that we got rid of all those pesky non-developers, lets get down to business :-).

If you are not heavily invested in .Net, should the new announcement mean you need to look at MSBuild as your future build tool? I seriously advise you to not bother – MSBuild is a complex beast, with a large, complex and confusing XML based syntax, and it is very hard to do anything with it other than the very basic stuff (not impossible, just hard). There are and have always been better build tools available for developers – for example, Ant (which is no longer considered a top of the line build tool) is very similar to MSBuild in spirit and uses a much simpler thought at least as powerful syntax.

So why should you care? Let me tell you why:

  1. Microsoft has not reneged on their open-source promise, and they continue to play (kind of) by the rules of the open source community – they release on GitHub and it looks like they actually take patches from the community, discussing new features out in the open and add support for Linux. This means that Microsoft is still committed to playing in the pool with all the other kids (that nasty pool which some people, notably Microsoft in the past, pee in…)
  2. if you are invested in the .Net platform, it means that now you have a say in what happens with your main build tool. You can purpose features and even fork it to create new features and use them without waiting for Microsoft. Even without direct involvement by you, MSBuild is bound to move faster. They even talk about supporting YAML or JSON as the build language!1 Also, migrating your workflow out of Windows becomes more possible with future (promised) support for Linux.
  3. Speaking of Linux, MSBuild is one of the basic building blocks that Visual Studio relies on. Having that running on non-Microsoft operating systems is a required step in order to have Visual Studio run on such systems. More on why this is important, coming right up.

Microsoft’s .Net Open Source Move

By now it’s old news, but I’ll reiterate anyway – Microsoft has declared that the .Net platform will be released as open source, using an OSI approved open source license (not Microsoft’s weird “shared source” thing). This is considered a weird, though bold, move by Microsoft who were never being considered  open-source-friendly. But it actually makes a log of sense – very much like Sun open sourcing Java, quite a while ago2: the framework was never a direct income source for Microsoft – they always gave it away for free. The platform has been a way to drive developers to use Microsoft’s (rather expensive)  developer tools, from Visual Studio through ASP to Team Foundation, and to drive value added development to their other products such as SharePoint and Microsoft Office. The .Net platform is a complementary product to the products Microsoft makes real money on, and as such – exactly like Sun’s policy regarding Java.

Possibly the major and most interesting change indicated by this move is not the fact that Microsoft is embracing open source as a way to drive software innovation, but the fact that in doing that Microsoft is dropping its insistence of coupling any innovation to the MS-Windows operating system – by allowing .Net to run on non-Windows platforms it is allowing, and basically promoting, the replacement of Windows as the target OS of choice for developers, with competing operating systems.

With a retrospect of a few months since the original decleration, we can see other moves that reflect the same decision, from supporting Linux and other competing operating systems on Azure, Microsoft Office as an online browser application (that surprisingly supports non-IE browsers without a (much) degraded experience) and lately – promising a free Windows 10 upgrade.

The next stage is likely he to offer Microsoft’s developer tools on Linux, with Visual Studio as the prime candidate for such a move.






  1. though it probably won’t happen []
  2. you can actually say that Microsoft’s .Net is basically just following in Java’s footsteps in everything they do 😉 []

Leave a Reply