Hi,
When we bid for Government RFP's they usually ask us to use 'Open source technologies'. Since Microsoft.NET framework is free to use, can it be considered 'open source technology' for this purpose ?
Thanks, Chak.
Hi,
When we bid for Government RFP's they usually ask us to use 'Open source technologies'. Since Microsoft.NET framework is free to use, can it be considered 'open source technology' for this purpose ?
Thanks, Chak.
No. Small parts of it - such as MEF - are more open than others, but mostly it is closed. However, Mono is an open source implementation of the .NET framework.
HTH,
Kent
The source is not open in the sense that it is collaboratively developed. Some of it is publicly accessible via Microsoft's reference source web site.
Microsoft's implementation of the Common Language Infrastructure, Microsoft .NET Framework, is not licensed under an Open Source Initiative approved open source license. Currently, the source code of some class libraries are available under Microsoft Reference Source License for the aid of debugging, and you are not allowed to use it for other purposes. Several libraries, like ASP.NET MVC are published under Microsoft Public License (Ms-PL), which is approved by OSI as an open source license. There are open source implementations of the CLI out there; most notably, the Mono project is available.
Open Source usually means that you have access to the source code and the right to modify and redistribute it. The OSI provides a widely accepted definition. By this definition, the Microsoft .NET framework is not open source. However, there is an open source implementation called Mono.
The .NET environment itself is a legitimate part of Windows. Windows is a commercial product so it's not open-source. But if you're doing a project for the Government which needs to run on Windows then the .NET framework itself would be out of the equation. The things you'd use on top of this framework are things you decide upon yourself. If you restrict yourself to open-source only, then you could still use the .NET framework by it's default installation.
ASP.NET MVC and other add-on .NET libraries have their own licences which you need to check before you can add them to your project. You might want to avoid adding these as part of your product. Basically, any third-party product you use needs to have an open-source licenses. And you need to take care and be sure your development tool (Visual Studio) isn't adding some more dependencies on non-open-source products.
To be fully open-source, you would need to forget about Windows and use Linux of FreeBSD instead. You could use Mono as a .NET replacement on Linux but you would still need to be very careful with any third-party component that you use. If you need to do web development, then PHP would be a much better choice since it has less risks of including closed-source parts in your project.
No, the .NET framework is not Open Source, it's a proprietary Microsoft product. In fact, .NET already fails the most obvious requirement for being Open Source: it's source is not open.
The price has absolutely nothing to do with it. (Quite the opposite, actually: one of the freedoms granted by Open Source is to charge however much you want.)
The question of whether or not something is Open Source is a question of copyright and, more broadly, intellectual property.
Just the availability of complete source code for the entire product is not enough. The copyright license covering the source code must also allow anyone (without discrimination against either people, fields of use or combination of the product with other products) to modify the product and distribute and sell the modified product (also re-distribute and sell the original product).
The exact definition of Open Source is given by the Open Source Initiative in its Open Source Definition (annotated version). Note that .NET violates at least articles 1, 2, 3, 6, 7 and maybe 5. A full ist of all copyright licenses that have been certified by the OSI to conform to the OSD can be found here. Note again that .NET's license is not listed here.
Another, related, definition is the Free Software Definition by the Free Software Foundation. Note that .NET violates all four freedoms. The FSF also maintains a list of licenses that conform to the FSD. Again, .NET's license is not listed as a Free Software License.
That said, a small subset of .NET 2.0 has been standardized as ECMA-335 and ISO/IEC 23271:2006 (CLI), ECMA-334 and ISO/IEC 23270:2006 (C#) and ECMA-372 (C++/CLI). However, this only covers .NET 2.0, so no WPF, no Silverlight, no LINQ, no local variable type inference, no generic co- and contravariance, no anonymous types, no expression trees, no extension methods, no lamda expressions, no dynamic
. It also only covers a subset of .NET 2.0, some notable missing features are Visual Basic.NET, WinForms, ASP.NET and in general everything having to with Windows interop or COM interop.
There are Open Source implementations of ECMA-334/335/372, most notably Mono. In fact, Mono not only implements the ECMA specifications, but some other parts as well, such as some .NET 3.0, 3.5 and even 4.0 compatibility, Moonlight (compatible with Silverlight 2.0), ASP.NET.
However, those parts that go beyond the ECMA specifications are not covered by Microsoft's Specification Patent Promise, and thus at least some people fear that those parts might be subject to patent litigations. (Although that is IMHO very unlikely, and easy to circumvent.)
However, the most important thing to do is: Ask your lawyer. StackOverflow is a programmer website. You probably wouldn't ask your lawyer about programming advice, either, so why is it that people always ask programmers for legal advice?