Happy Tuesday! It's indeed a happy day as I am (literally this moment) at a conference in Las Vegas and have just pressed Publish on this blog post to announce that we are open sourcing ASP.NET MVC 4, ASP.NET Web API, ASP.NET Web Pages v2 (Razor) all with contributionsunder the Apache 2.0 license. You can find the source on CodePlex . Be sure to read all the details on ScottGu's blog.

Ya, I bolded, underlined and italicized that last part and yes, it was gratuitous. Fight me. ;)

This is the culmination of a lot of hard work by a lot of folks in our organization. It's the very reason that I came to work at Microsoft. So, what’s happening here?

While the source for ASP.NET MVC has had source available since its inception, and converted to the MS-PL license in April of 2009, the developers didn't take contributions from the community. While we were open source we were not “open source with takebacks.”

Today we continue to push forward and now ASP.NET MVC, Web API, Web Pages will take contributions from the community. NuGet from OuterCurve also is open source, and now huge parts of ASP.NET are as well. We shipped community code in NuGet with Visual Studio 2010 and NuGet has taken community contributions. Now we will ship community code inside ASP.NET in this upcoming version of Visual Studio.

We are opening sourcing these ASP.NET components on CodePlex using Git as our repository. CodePlex now supports TFS, Subversion (via a bridge), Mercurial and now Git.

Why Open Source?

If you’ve been following our exploits, we’ve actually been shipping open source with ASP.NET and Visual Studio for quite a few years. We started shipping the jQuery open source JavaScript library back in 2008. Since then we’ve added Modernizr, Knockout, jQuery Mobile, JSON.NET, and jQuery UI. These are all shipping and available today. Betcha didn't know that.

Microsoft started using an open development style with the Windows Azure SDK last year. It’s worked and worked well, so now they’re expanding the style to include some of the popular frameworks like ASP.NET. This will let us get feedback and respond to it faster than ever.

Over the last four years at Microsoft I’ve worked closely with the community to get feedback and voices heard by the developers. However today, as we introduce more open source projects that take contributions, you can get more directly involved.

Find a bug? Send a unit test or fix.

Think our coverage isn’t sufficient? Submit a unit test.

Got a feature idea? Get involved more deeply with the developers and help write it.

Like every large open source project, every check-in (open source or otherwise) will be evaluated against the existing standards used by the developers. Even better, you’ll get to see our developers' checkins to the product out in the open.

It’s really important to remember that ASP.NET MVC, Razor, and Web API are fully supported Microsoft products and will still be staffed by the same developers that are building them today. The products will be backed by the same Microsoft support policy and will continue to ship with Visual Studio. Also, to be clear, Microsoft is maintaining the same level of development resources as we always have. There’s still a roadmap and actually, there are more Microsoft developers working on ASP.NET today than ever before.

Why are you doing this?

Why shouldn't we? We like open source and you do too. Many of us come from open source backgrounds and many of us work on open source in our spare time. We think our products are great and by moving to an open development model we think even more people will be energized, excited, and help make the products and the community even stronger.

Are you going to open source more things in ASP.NET?

Did I mention we love open source? We are going to continue to do open source in ASP.NET as we can when it makes sense.

Why isn’t ASP.NET Web Forms open sourced?

The components that are being open sourced at this time are all components that are shipped independently of the core .NET framework, which means no OS components take dependencies on them. Web Forms is a part of System.Web.dll which parts of the Windows Server platform take a dependency on. Because of this dependency this code can’t easily be replaced with newer versions expect when updates to the .NET framework or the OS ships.

What about Mono?

The Web Team digs Mono. We love that ASP.NET MVC can run on Mono and we look forward to getting contributions from the Mono community. In fact, I called my friend Miguel last week so he could be the first one to submit a pull request.

Why not on GitHub?

The Visual Studio Team has big plans for CodePlex, including adding Git support and modernizing the experience. Right now CodePlex supports TFS, Mercurial (Hg) and just added Git! As we're a partner with the Visual Studio Team we think the right thing for us to do is to support their plans to make CodePlex a thriving place for open source software again. We push them hard and they're releasing weekly now.

Conclusion

Here's how I look at it: Open Source == Increased Investment. ASP.NET is a part of .NET, it will still ship with Visual Studio. It's the same ASP.NET, managed by the same developers with the same support. It's ASP.NET except now you can get involved. You'll be able to see our developers' check-ins in public, offer feature ideas of your own, perhaps even become a key committer.

I'm pretty jazzed that we pulled this off at Microsoft. Still, it's just the beginning. I’m looking forward to working with you! ;)

Yay!

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

Congratulations! This is fantastic news. Thank you for your hard work. I know you and several others inside Microsoft have been fighting for this for years. Now, it's finally paying off, big time. I hope this is a sign of things to come and I look forward to seeing the .NET team continue to embrace open source and grow codeplex.

This is great news! Now if I run into a bug in ASP.Net, I can fix the bug instead of creating a workaround.

If this does happen, though, what's the release cycle? Suppose I send you a pull request for a small bugfix (and assuming you accept it), how long would it typically take before there's a publicly available version that I can tell my customers to download if they run into a problem?

This is pretty exciting. Now if only Visual Studio... oh, who am I kidding :)

What will "releases" look like now? MVC 3 was something you had to install (either manually or via Web Platform Installer). Will this be something easily updateable (the new VS 11 extensions we saw earlier?)? I'm just wondering how the assemblies will be distributed now.

Wow, excellent work Scott! I'm very impressed with the culture shift, and tremendously excited to see how the many brilliant and generous members of the community contribute to a framework they already love and depend on.

You're leading the way and have a chance to show the other development teams at Microsoft how much everyone has to gain from an open approach combined with a powerful dedicated core team.

@Dor KleimanThe release cycle will be unchanged as of right now. Moving forward things may or may not change. We're going to play it by ear and work with all of you.

@Kamran AyubAs of right now, nothing will change. You'll install it the same way. We will figure out moving forward if any of that will change or not. It's still going to ship with VS11 and VS10 as expected (and and a separate installer). The cool part now though is that you all will now have access to nightly builds!

@Jeff PutzTake a look at the latest code (since you can now!) that one should be fixed in source. :)

If this remark from Rob is true: http://wekeroad.com/2012/03/28/i-guess-that-was-a-bad-idea/ it's not all unicorns and rainbows in the .NET community.

Opensourcing something on Codeplex does not make something open source. Community and cooperation does. Forking stuff on GitHub does.

Scathing someone forking something to GitHub because he thinks it would be good to have a repo there (I concur) harms the community. Writing venomous comments to someone on Twitter who obviously had good intentions harms the community. Making that same (yes, a bit snarky, but insanely bright) developer consider to leave the .NET/MS community (the famous "last straw" as noted here https://twitter.com/#!/robconery/status/184854880689721344 and here https://twitter.com/#!/robconery/status/184855092808257536) hurts the community _a lot_.

You might consider looking into this and try to mend things (if it's already not too late and another awesome .NET developer moves on to the Ruby/Node camp permanently which would be a real shame, especially when caused by a situation like this)

Cyriel

Wednesday, 28 March 2012 07:17:43 UTC

Fantastic news! Kudos to the 'Scotts' and their teams. May their tribe increase!

It's like the ASP.NET team is a startup inside MS. Like with all start ups how long till higher ups question 'Revenue Model'? Hope, not till Azure becomes a nice cash cow :)...

Just being a devils advocate, I would hate for this super team to change (despite all the churn we have seen in the last 6-8 months) in any way !!! Love you folks!

Cyriel - I searched Twitter and Rob's @mentions and didn't seen any "venomous" tweets, and no one from our team mentioned this or reached out. From the timeline on twitter and his blog it looks like he forked it (a totally OK thing to do, we agree) then decided to delete it just short hours later. Unless he got a call from someone that we didn't see, it doesn't seem like whatever happened occurred in public. I'll give him a call.

Also, BTW, do include your email or website so you can I can chat also! ;)

Good answer, however why can't the source for this be "opened up"?*. Even if you don't accept changes (fair enough, given the dependencies), then at least we can all learn from it, and the likes of Miguel can hack it into Mono.

This is really really nice to hear, I deeply appreciate your work. Maybe it already exists something like that and I don't know, but I like very much how you can deploy pushing a branch to a remote server (heroku). Do you already have something like this? Is it possible in Visual Studio to do something like you do in Vim switching from insert, navigation and command mode? It would be helpful for example press esc and have support at least for basic movements and commands ( I really hate mouse and arrow keys); Maybe it is my ignorance again but in rails, for instance, I see clean separation from development, test and production environments, how can I accomplish the same through .net MVC, do you have other templates than the default one?; I see that GIT on windows is pretty slow and I miss basic tools that you have on unix for instance, like for ssh through command line (it's a bit boring to fire up putty, puttygen, click here and there...)

@Dario: In response to Maybe it already exists something like that and I don't know, but I like very much how you can deploy pushing a branch to a remote server (heroku), have you looked at App Harbour?

This a wonderfully encouraging move in the right direction. What better part of Microsoft than the web technology peeps to demonstrate the rewards that collective intelligence can bring to a product. It was awesome to see tweets from Miguel De Icaza's about the first pull request 2 minutes after the tweet from Scott Gu about open sourcing asp.net. So asp.net got a little bit better in just two minutes of open sourcing it..imagine what can happen in a day :).

Thanks for this Scott, this totally rocks! You are even more awesome than you were before...if that's even possible :).

Yes, this great news. Congratulations Scott! I can only imagine how hard you must have pushed the past years to get to this point.

PS. Why Git? Git doesn't play nice on Windows. You should have gone with Mercurial. I hope you guys can still fix this mistake, because you are going to get so much more contributions if people can use TortoiseHg!

Mike

Wednesday, 28 March 2012 12:58:51 UTC

Git doesn't play nice on Windows

Maybe I am missing something but having been using Git on Windows for the past few years, I've not had any issues. Sure, we don't get a fancy UI (changing with GitHub for Windows), but that's not stopped a lot of people from using GitHub or Git in general on Windows.

I don't mind Hg, either solution is good from my perspective but since I love GH, I usually stick with Git. It's like console wars, right? I love all consoles, like I love all DVCS.

I absolutely love that you're using git for version control. It's one thing to support it on CodePlex, but it's quite another to actually host one of your flagship technologies on it.

This might be just the leverage I need for us to start using git here at work. The standing line from management is "If the technology is supported by Microsoft, it's automatically OK and we can use it. Anything else has to go through a minimum 6 month vetting process." Nevermind how ludicrous that policy is to begin with, but I digress.

From a personal point of view, this is a very good thing, and I have to say congratulations are certainly in order for you and your team. That's an oustanding accomplishment at Microsoft.

My concern here is this, with so much of the web product going open source, where does that leave Microsoft support in the mix? For instance, many companies out there, especially State/County municpal organizations are very affraid of open source software because there usually are not support contracts that come with the license.

For instance, when my company buys X server licenses, and has an agreement with microsoft, we can call and get help when someone fudges up Active Directory. What if someone is using MVC4 now and fiddles with Knockout and Razor together and hoses their site - will Microsoft support those things or is abandonment a side effect of this fully open source movement?

Just curious...

All in all, good work Scott. I'm really stoked that MS is opening up and hope you and your team will drop a beer or two back in celebration.

First of all Congratulations, I'm happy to see such big step towards open source from MSFT... fantastic, but I have a concern about the security of open source software, how does this will be addressed, so that no malicious attacker could find and exploit before it is fixed?

Congrats, like others, I'm quite excited about this! Will we see Silverlight following suit? I can't think of a better way to calm the recent concerns over the future of Silverlight than to make it open source!

This is good news but your answer to "Why are you doing this?" wasn't convincing enough. You could have said "Why shouldn't we?... " in 2011 or 2010 or earlier. And you could have said it in the future as well. There's nothing special about 2012. Plus I am pretty sure you and the same level open source enthusiastic employees don't have the authority to make this kind of decision. My guess some MS higher ups eventually softened their stand and it took them THAT long. (Sorry to sound little negative but what I read was a bit washy!)

The shipped release code via installer will always be under Microsoft EULA. It ALREADY give you redist rights (see attached Eula or look at it on your machine at C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4). The source code is under Apache 2.0 license.

Scott Hanselman

Thursday, 07 June 2012 19:04:10 UTC

Wow, this is awesome.

I'll never forget when a teacher at a local high school submitted a binary patch to Windows 95 (a bug fix) and was promptly threatened with legal action from Microsoft.

Hey Scott, I was wondering what your thoughts are on allowing WebAPI to be contract based as well as ReSTFul. I am a big believer that both have their place and I could definetly see advantages to providing my current MVC applications the ability to use the WCF contract technique our WCF services provide while also providing a ReSTFul API for third party applications that need access to our data. Also, I know that most examples show the ability to do this by having the WebAPI part of your MVC project, but I wish to have them on seperate machines for various security or availability concerns.

I drop a leave a response when I like a post on a site or if I have something to valuable to contribute to the conversation. It's triggered by the sincerness displayed in the article I read. And on this post ASP.NET MVC 4, ASP.NET Web API and ASP.NET Web Pages v2 (Razor) now all open source with contributions - Scott Hanselman. I was moved enough to write a comment ;-) I actually do have some questions for you if you don't mind. Could it be simply me or do some of the remarks come across like left by brain dead people?:-P And, if you are writing at other social sites, I would like to follow you.Could you list the complete urls of your social pages like your twitter feed, Facebook page or linkedin profile?

to the conversation. It's triggered by the sincerness displayed in the article I read. And on this post ASP.NET MVC 4, ASP.NET Web API and ASP.NET Web Pages v2 (Razor) now all open source with contributions - Scott Hanselman. I was moved enough to write a comment ;-) I actually do have some questions for you if you don't mind. Could it be simply me or do some of the remarks come across like left by brain dead people?:-P And, if you are writing at other social sites, I would like to follow you.Could you list the complete urls of your social pages like your twitter feed, Facebook page or linkedin profile?

to the conversation. It's triggered by the sincerness displayed in the article I read. And on this post ASP.NET MVC 4, ASP.NET Web API and ASP.NET Web Pages v2 (Razor) now all open source with contributions - Scott Hanselman. I was moved enough to write a comment ;-) I actually do have some questions for you if you don't mind. Could it be simply me or do some of the remarks come across like left by brain dead people?:-P And, if you are writing at other social sites, I would like to follow you.Could you list the complete urls of your social pages like your twitter feed, Facebook page or linkedin profile?