DotGNU

Last updated
Developer(s) Rhys Weatherly (Southern Storm Software Pty), Klaus Treichel, Thong Nguyen, Gopal V, Norbert Bollow
Final release
0.8.0 / March 20, 2007;16 years ago (2007-03-20)
Written in C, C#
Operating system Linux, BSD, Mac OS X, Solaris, AIX, Microsoft Windows, others
Type System platform
License GPL and LGPL
Website www.dotgnu.org

DotGNU is a decommissioned [1] part of the GNU Project that started in January 2001 and aimed to provide a free software replacement for Microsoft's .NET Framework. The DotGNU project was run by the Free Software Foundation. Other goals of the project are better support for non-Windows platforms and support for more processors.

Contents

The main goal of the DotGNU project code base was to provide a class library that is 100% Common Language Specification (CLS) compliant.

Main development projects

Portable.NET

DotGNU Portable.NET, an implementation of the ECMA-335 Common Language Infrastructure (CLI), includes software to compile and run Visual Basic .NET, C#, and C applications that use the .NET base class libraries, XML, and Windows Forms. Portable.NET claims to support various instruction set architectures including x86, PPC, ARM, and SPARC.

DGEE

DotGNU Execution Environment (DGEE) is a web service server.

libJIT

libJIT is a just-in-time compilation library for development of advanced just-in-time compilation in virtual machine implementations, dynamic programming languages, and scripting languages. It implements an intermediate representation based on three-address code, in which variables are kept in static single assignment form.

libJIT has also seen some use in other open source projects, including GNU Emacs ILDJIT and HornetsEye .

Framework architecture

Simplified Mono architecture Mono architecture.svg
Simplified Mono architecture

The Portable .NET class library seeks to provide facilities for application development. These are primarily written in C#, but because of the Common Language Specification they can be used by any .NET language. Like .NET, the class library is structured into Namespaces and Assemblies. [2] It has additional top-level namespaces including Accessibility and DotGNU. In a typical operation, the Portable .NET compiler generates a Common Language Specification (CLS) image, as specified in chapter 6 of ECMA-335, and the Portable .NET runtime takes this image and runs it.

Free software

DotGNU points out that it is Free Software, and it sets out to ensure that all aspects of DotGNU minimize dependence on proprietary components, such as calls to Microsoft Windows' GUI code. DotGNU was one of the High Priority Free Software Projects from July 31, 2007 [3] till October 2, 2008. [4] [ clarification needed ]

DotGNU and Microsoft's patents

DotGNU's implementation of those components of the .NET stack not submitted to the ECMA for standardization has been the source of patent violation concerns for much of the life of the project. In particular, discussion has taken place about whether Microsoft could destroy the DotGNU project through patent suits.

The base technologies submitted to the ECMA may be non-problematic. The concerns primarily relate to technologies developed by Microsoft on top of the .NET Framework, such as ASP.NET, ADO.NET, and Windows Forms (see Non standardized namespaces), i.e. parts composing DotGNU's Windows compatibility stack. These technologies are today not fully implemented in DotGNU and are not required for developing DotGNU-applications.

In 2009, Microsoft released .NET Micro Framework under Apache License, Version 2.0, which includes a patent grant. However, the .NET Micro Framework is a reimplementation of the CLR and limited subset of the base class libraries meant for use on embedded devices. Additionally, the patent grant in the Apache License would have protected only contributors and users of the .NET Micro Framework—not users and developers of alternative implementations such as DotGNU or Mono.

In 2014, Microsoft released Roslyn, the next generation official Microsoft C# compiler, under the Apache License. Later that year, Microsoft announced a "reboot" of the official .NET Framework. The framework would be based on .NET Core, including the official runtime and standard libraries released under the MIT License and a patent grant explicitly protecting recipients from Microsoft-owned patents regarding .NET Core.

See also

Related Research Articles

The Common Language Infrastructure (CLI) is an open specification and technical standard originally developed by Microsoft and standardized by ISO/IEC and Ecma International that describes executable code and a runtime environment that allows multiple high-level languages to be used on different computer platforms without being rewritten for specific architectures. This implies it is platform agnostic. The .NET Framework, .NET and Mono are implementations of the CLI. The metadata format is also used to specify the API definitions exposed by the Windows Runtime.

Bytecode is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.

<span class="mw-page-title-main">GNAT</span> Free-software compiler for the Ada programming language

GNAT is a free-software compiler for the Ada programming language which forms part of the GNU Compiler Collection (GCC). It supports all versions of the language, i.e. Ada 2012, Ada 2005, Ada 95 and Ada 83. Originally its name was an acronym that stood for GNU NYU Ada Translator, but that name no longer applies. The front-end and run-time are written in Ada.

The Shared Source Common Language Infrastructure (SSCLI), previously codenamed Rotor, is Microsoft's shared source implementation of the CLI, the core of .NET. Although the SSCLI is not suitable for commercial use due to its license, it does make it possible for programmers to examine the implementation details of many .NET libraries and to create modified CLI versions. Microsoft provides the Shared Source CLI as a reference CLI implementation suitable for educational use.

Apache Harmony is a retired open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the board of directors voted to make Apache Harmony a top-level project. The Harmony project achieved 99% completeness for J2SE 5.0, and 97% for Java SE 6. The Android operating system has historically been a major user of Harmony, although since Android Nougat it increasingly relies on OpenJDK libraries.

Free/open-source software – the source availability model used by free and open-source software (FOSS) – and closed source are two approaches to the distribution of software.

<span class="mw-page-title-main">C Sharp (programming language)</span> Programming language

C# is a general-purpose high-level programming language supporting multiple paradigms. C# encompasses static typing, strong typing, lexically scoped, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

Comparison of the Java and .NET platforms.

The Microsoft Open Specification Promise is a promise by Microsoft, published in September 2006, to not assert its patents, in certain conditions, against implementations of a certain list of specifications.

<span class="mw-page-title-main">.NET Framework</span> Software platform developed by Microsoft

The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.

<span class="mw-page-title-main">Mono (software)</span> Computer software project

Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems.

The following outline is provided as an overview of and topical guide to C++:

<span class="mw-page-title-main">WinJS</span> Open-source JavaScript library

The Windows Library for JavaScript is an open-source JavaScript library developed by Microsoft. It has been designed with the primary goal of easing development of Windows Store apps for Windows 8 and Windows 10, as well as Windows Phone apps for Windows Phone 8.1, Windows 10 Mobile and Xbox One applications using HTML5 and JavaScript, as an alternative to using WinRT XAML and C#, VB.NET or C++ (CX).

<span class="mw-page-title-main">Standard Libraries (CLI)</span> Standard libraries of C#, the .NET Framework and Core, and related projects

The Standard Libraries is a set of libraries included in the Common Language Infrastructure (CLI) in order to encapsulate many common functions, such as file reading and writing, XML document manipulation, exception handling, application globalization, network communication, threading, and reflection, which makes the programmer's job easier. It is much larger in scope than standard libraries for most other languages, including C++, and is comparable in scope and coverage to the standard libraries of Java.

<span class="mw-page-title-main">.NET</span> Free and open-source software platform developed by Microsoft

The .NET platform is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft employees by way of the .NET Foundation and is released under an MIT License.

Microsoft, a technology company historically known for its opposition to the open source software paradigm, turned to embrace the approach in the 2010s. From the 1970s through 2000s under CEOs Bill Gates and Steve Ballmer, Microsoft viewed the community creation and sharing of communal code, later to be known as free and open source software, as a threat to its business, and both executives spoke negatively against it. In the 2010s, as the industry turned towards cloud, embedded, and mobile computing—technologies powered by open source advances—CEO Satya Nadella led Microsoft towards open source adoption although Microsoft's traditional Windows business continued to grow throughout this period generating revenues of 26.8 billion in the third quarter of 2018, while Microsoft's Azure cloud revenues nearly doubled.

References

  1. "DotGNU Project". As of December 2012, the DotGNU project has been decommissioned, until and unless a substantial new volunteer effort arises. The exception is the libjit component, which is now a separate libjit package.
  2. "GNU Portable .NET documentation". Archived from the original on 2005-02-04. Retrieved 2006-01-15.
  3. GNU High Priority Free Software Projects, FSF, July 31, 2007, archived from the original on August 10, 2007
  4. GNU High Priority Free Software Projects, FSF, October 1, 2008, archived from the original on October 2, 2008