Microsoft releases ASP.NET MVC source under open license

Microsoft has released its ASP.NET MVC 1. Linux.

Microsoft launched ASP.NET MVC 1.0 at the MIX09 event last month. This new ASP.NET enhancement brings a Rails-like model-view-controller framework to Microsoft's Web development stack. In a blog entry published on Wednesday, Microsoft developer division vice president Scott Guthrie announced that the framework is now open source.

The source code is available under the terms of the Microsoft Public License (MS-PL), a permissive open source software license that has been approved by OSI and is characterized by GNU as a free software license. Microsoft's move to open the framework will enable third-party developers to modify the source code, incorporate it into their own software, and share it with other users.

The ASP.NET MVC 1.0 source code has been adopted by the Mono project, which seeks to build an open source implementation of the .NET runtime. Lead Mono developer Miguel de Icaza has expressed enthusiasm in response to Microsoft's announcement.

"I am psyched, not only because ASP.NET MVC is usable in Mono and the code is licensed under open source terms, but also because I strongly believe that the same innovation, rapid adoption and experimentation that has happened with the new wave of web stacks will come to ASP.NET MVC across all platforms," de Icaza wrote in a blog entry. "I know that a lot of developers inside Microsoft worked to get this important piece of code released under the MS-PL to ensure that the users of ASP.NET could benefit from the code being open source."

The Mono team has created a plugin for MonoDevelop that will help programmers build ASP.NET MVC 1.0 applications on Linux and Mac OS X. MonoDevelop, an open source integrated development environment for building Mono software on Linux, reached its 2.0 milestone release last week and has gained a multitude of new features.

Novell developer Michael Hutchinson has written a blog entry with more details about the plugin and some screenshots that show it in action. Users will need MonoDevelop 2.0 and Mono 2.4 in order to run ASP.NET MVC on Linux. These are very new and aren't widely available in distros yet, so you might want to test it with the Mono VMware appliance or Live CD image if your distro's Mono version is too old.

Microsoft also recently released Oxite, an ASP.NET MVC-based CMS, under the MS-PL open source license. Oxite provides developers with a compelling real-world example of how to use the new framework.

Microsoft's decision to release ASP.NET MVC 1.0 under the MS-PL has opened the door for developers to build Web applications with the framework on Linux-based workstations and deploy it on Linux-based servers. It reflects growing acceptance among key developers within Microsoft that cross-platform portability is a fundamental necessity for emerging Web development technologies.

19 Reader Comments

Until they pull the plug on mono with some stupid patent that they have in it (like the isEqual operator or something similar). The fact that they're willing to sue a maker of car navigation systems over FAT patents shows that the new Microsoft is still the old Microsoft.

And Miguel de Icaza will drool over anything that Microsoft does, so any information from him is not.

@Bart van Deenen: Microsoft sued TomTom over its implementation of the Linux kernel. Microsoft went out of their way to clarify that this was not a shot across the bow of the kernel. TomTom infringed on some patents that Microsoft owns, Microsoft tried to negotiate a deal, the deal didn't happen, and Microsoft sued TomTom throwing in every patent they could think of to try to force a licensing deal (which worked). This just happened to include the FAT patent since it was already upheld in court and would be a powerful weapon against TomTom.

First of all I am surprised that as basic a deisgn idea as MVC took ages to finally appear on a major web platform. Secondly, if only it were not .NET based. For me, personally, .NET is a bloated piece of technology that makes even the fastest comptuer seem too slow. Having evaluated (albeit in a limited way) other open source offerings for web development, specially those based on Python and Ruby, I just don't see a reason how come Open Source community contineus to feel excited about anything related to Mono - given that they have excellent alternatives already. Am I missing some key advantage of .Net based web development?

.Net isn't just a backend programming language for Web design; it's an entire infrastructure that allows for language independence while maintaining essentially perfect intercompatibility. It lets you go from designing a simple desktop application (Forms) to a web application (Silverlight) to a web system (ASP.Net) to an application on a small device (.Net CF).

The core advantage to .Net is similar to the one for Java - rather than being tied to a specific CPU or hardware architecture - it uses a virtual architecture to provide a single consistent platform, while providing a well defined and supported infrastructure allowing access to the underlying OS should you need it.

It also provides a wide, rich and extensable object library that encourages consistent coding and design. As well, it's a managed environment which acts to shield programmers from many of the mistakes they make that renders code unsafe or can bring down the environment on which their code runs.

The Open Source community (well, the .Net/Mono part of it) realises that with a binary compatible open source .Net platform, we would get a multilanguage crossplatform and *safe* development system.

As for using Ruby or Python? If they can do what you want, then feel free. No one is saying "This Is The One Solution". In fact, both Ruby and Python (and PHP and other languages) are being added to the stable of stock languages in which you can program .Net. That's possibly one of the greatest strengths of .Net: its language agnosticism.

As for speed - I hate to break this to you - but there's been a TON of analysis on this subject. .Net has a one time upfront JIT cost which can be eliminated by pre-jitting. Once that's been done, it's easily 90%+ of the speed of equivalent C++ code. If you need that 10% - then .Net probably isn't the right solution for you - but for many people, the large savings in development effort is worth the small drop in performance.

Thanks for the answers, everybody. Just to clarify as to my technical understanding on .Net, I know it pretty much inside out. I have had experience working with both - python/ruby as well as .Net. It is after this experience that I find - and this being stricly a personal opinion based on evaluating the technical merits of both - that there is absolutely no reason to program in .Net. All the advantages of .Net as mentioned above, are not only available in the above metnioned (and similar) technologies, they are infact often better. In my experience, I have found that all pro .Net comments/opinions are usually from folks who came to .Net directly from either C++ (having been frustrated by the perceived shortcomings of C++), or who came to .Net form - for lack of a better word - inferior languages like Visual Basic (or even Java). For them, it is obviously a class of its own - neat, clean, logical, etc. But that is simply because they have not yet been exposed to something better.

To all such folks, I only say that they ought to give Python 1 serious month. Do one project in Python or Ruby. Then they would be in a better shape to evaluate which one holds more promise. In my expeience, I have found that those who have had experience in both, are pretty much unanimous in the view that Python is neater, cleaner, simpler, more logical and far more productive than C#.

That leaves only one argument in .Net's favor: That of being able to use multiple languages seemlessly. Well to that all I can say is that so far, with an excellent support for libraries to do virutally anything, this argument just isn't that forceful any longer. In short, if I can do everything in one language + its suitable library, why do I need 3 differnt languages.

As for the argument of porting over Python and Ruby for .Net, that is because Microsof thas rightfully realized the importance of these languages and wants to make sure they are present in its most important development platform. In fact, before IronPython, there was a Python for .Net, which allwoed Python to use .NEt class libraries without itself becoming a CLR language. IMHO, that was a cleaner and more logical approach to use .Net - as a library; rather than forcing Python to become a CLR language. Why? Because if the same goal (that of using CLR libraries) can be achieved with a simpler approach, why adopt a complicated one?

SimpleWHo- I don't care if .Net was absolute crap that randomly devoured my flesh. When the alternative you propose is freaking ruby, with such gems from DHH is:

quote:

I'm not in this world to create Rails for you. I'm in this world to create Rails for me and if you happen to like that version of Rails that I'm creating for me, than you are going to have a great time.

Followed up by a nice slide that says literally "Fuck You" in response to him not listening to the community I will take the flesh eating language.

.Net is one of the quickest evolving development platforms out there, one that solicits massive amounts of feedback from developers. I can't really think of a development platform that is as conscious of what their devs want. I also can't think of one as versatile.

Granted I pretty much disagree with anyone who tries to espouse non-static typed languages for serious programming, so you can assume I am fairly biased. I subscribe to the notion that type awareness is the most basic form of input validation, one that a static typed language gives you for free implicitly and one that you have to explicitly invoke in non-static languages. Input validation, incidentally, is the foundation of secure applications.

Unrelated- at least during the beta for the ASP.net MVC some research was done on the java spring MVC. The researches found that by default even if a view didn't contain fields for properties of an object, you could still post values to those properties and the framework would implicitly invoke actions. (for example, if an object had an ID that corresponded to an index in a DB but no form field was exposed for the ID, you could still post a value for ID and the framework would act on it). The ASP.net MVC was susceptible (as was CakePHP) to the same sort of attack by default (you could disable implicit actions if you wanted). I don't know if MS changed the default, but it is worth being aware for folks that may use this.

Originally posted by SimpleWho:Just to clarify as to my technical understanding on .Net, I know it pretty much inside out.

...

there is absolutely no reason to program in .Net.

I'm sure with your technical understanding on .NET, you meant "there is absolutely no reason to program in [C#, Visual Basic.NET, J#, or any of the other programming languages which can be compiled to .NET's CLR".

Originally posted by gavron:Sorry, but since MS-PL isn't compatible with the GPL nobody is going to "use it on Linux."

This isn't news, it's a press release coated as news with a misleading headling.

There's a HUGE difference between "open license", "MS-PL", and the GPL. The people who are confused and scared by FUD will believe this PR. The rest of us will look at the leopard's spots and move on.

E

OK, I admit I'm no legal expert. Can someone explain the differences between MS-PL and GPL? I thought MS-PL was "blessed" because it was endorsed by the OSI? (http://opensource.org/licenses/ms-pl.html)

For me, personally, .NET is a bloated piece of technology that makes even the fastest comptuer seem too slow.

That's probably poor code making it slow. .NET is actually quite efficient typically matching native applications at about ~95-98% the speed. Some .NET applications actually run *faster* than native apps--particularly those that do a lot of memory allocations.

quote:

Just to clarify as to my technical understanding on .Net, I know it pretty much inside out.

Now that you've said that, I'm positive you don't know .NET much at all.

quote:

To all such folks, I only say that they ought to give Python 1 serious month. Do one project in Python or Ruby....I have found that those who have had experience in both, are pretty much unanimous in the view that Python is neater, cleaner, simpler, more logical and far more productive than C#.

Python is sweet, I'll give you that. But it's a tool just like C#, F# or Intercal. Use the right one for the job. Don't drive screws with a hammer. (Btw, I find it funny that you initially talk about the performance of .NET {static-typed languages implied} and then go on to talk about how dynamic languages are better. Can you identify the humor in that?)

quote:

That leaves only one argument in .Net's favor: That of being able to use multiple languages seemlessly. Well to that all I can say is that so far, with an excellent support for libraries to do virutally anything, this argument just isn't that forceful any longer. In short, if I can do everything in one language + its suitable library, why do I need 3 differnt languages.

We can do everything in assembly!? So why do all these assholes keep coming up with new shit? ... probably because they're just not as smart as us.

Originally posted by SimpleWho:It is after this experience that I find - and this being stricly a personal opinion based on evaluating the technical merits of both - that there is absolutely no reason to program in .Net.

You can trust my experience too. I'm also an anonymous internet poster.

I can think of a few good reasons to use .net:Visual StudioMSDNSQL Server integrationOffice 2007 integrationShort learning curve for people coming from c++Better suited for deployment within nt familyRapid improvement cycle compared to perl/python/latest trendy foss language thanks to being backed by a company and not volunteer programmersYou can request features without being told to f off You don't have to deal with ABMrs like yourself who can't even admit that an MS technology might actually have a use. Good lord I don't like perl but I can see that it is still useful to a lot of people.

But whatever the business world likes .net so people like you will just have to suck it up and deal with the fact that .net isn't going anywhere.