The CLR is an application virtual machine that provides services such as security, memory management, and exception handling.
FCL provides the user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications.
Microsoft also produces an integrated development environment for .NET software called Visual Studio.
Since then, Microsoft has changed .NET development to more closely follow a contemporary model of a community-developed software project, including issuing an update to its patent promising to address the concerns.
[3] Microsoft began developing .NET Framework in the late 1990s, originally under the name of Next Generation Windows Services (NGWS), as part of the .NET strategy.
In August 2000, Microsoft and Intel worked to standardize Common Language Infrastructure (CLI) and C#.
However, this did not apply to the part of the .NET Framework not covered by ECMA-ISO standards, which included Windows Forms, ADO.NET, and ASP.NET.
Patents that Microsoft holds in these areas may have deterred non-Microsoft implementations of the full framework.
[9] The source code repository became available online on January 16, 2008, and included BCL, ASP.NET, ADO.NET, Windows Forms, WPF, and XML.
Scott Guthrie of Microsoft promised that LINQ, WCF, and WF libraries were being added.
In November 2014, Microsoft also produced an update to its patent grants, which further extends the scope beyond its prior pledges.
Prior projects like Mono existed in a legal grey area because Microsoft's earlier grants applied only to the technology in "covered specifications", including strictly the 4th editions each of ECMA-334 and ECMA-335.
The new patent promise, however, places no ceiling on the specification version, and even extends to any .NET runtime technologies documented on MSDN that have not been formally specified by the ECMA group, if a project chooses to implement them.
[15] Microsoft's press release highlights that the cross-platform commitment now allows for a fully open-source, modern server-side .NET stack.
Microsoft released the source code for WPF, Windows Forms and WinUI on December 4, 2018.
[16] Common Language Infrastructure (CLI) provides a language-neutral platform for application development and execution.
These class libraries implement many common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation.
Because of this feature, .NET Framework supports the exchange of types and object instances between libraries and applications written using any conforming CLI language.
This prevents ill-defined casts, wrong method invocations, and memory size issues when accessing an object.
This makes it possible for third parties to create compatible implementations of the framework and its languages on other platforms.
[29] .NET decompiler programs enable developers with no reverse-engineering skills to view the source code behind unobfuscated .NET assemblies.
[30] This creates concerns in the business community over the possible loss of trade secrets and the bypassing of license control mechanisms.
The latest version of .NET framework uses concurrent garbage collection along with user code, making pauses unnoticeable, because it is done in the background.
[34] By ignoring older objects in most collection runs, fewer checks and compaction operations are needed in total.
To speed up the first launch, developers may use the Native Image Generator utility to manually ahead-of-time compile and cache any .NET application.
[36] The garbage collector, which is integrated into the environment, can introduce unanticipated delays of execution over which the developer has little direct control.
"[37] .NET Framework provides support for calling Streaming SIMD Extensions (SSE) via managed code from April 2014 in Visual Studio 2013 Update 2.
[38] Mono's lead developer Miguel de Icaza has expressed hope that this SIMD support will be adopted by CLR's ECMA standard.
"[42] It is harder to develop alternatives to FCL, which is not described by an open standard and may be subject to copyright restrictions.
Also, parts of FCL have Windows-specific functions and behavior, so implementation on non-Windows platforms can be problematic.