DotGNU

From Free net encyclopedia

{{Infobox_Software |name = |logo = Image:Dotgnu-small.png |caption = |developer = Open Source |latest_release_version = 0.1 |latest_release_date = November, 2003 |operating_system = Platform Independent |genre = System platform |license = GPL+ and LGPL |website = dotgnu.org }}

Template:Advert

DotGNU aims to be for webservices and for C# programs what GNU/Linux is rapidly becoming for desktop and server applications: the industry leader and provider of Free Software solutions. DotGNU is a Free Software replacement of the Microsoft .NET.

Contents

Main development projects

Currently, the main DotGNU software release is Portable.NET, an implementation of the Common Language Infrastructure that is able to compile and run .NET-compilable languages such as C# and VB.NET, among others, on numerous computing platforms. It is a "language agnostic" platform in the sense that many languages can use one universal set of APIs.

The Mono project from Novell, Inc. is in some sense similar to the Portable.NET project.

Framework Architecture

Image:400px-DotNET architecture 6.png

Class Library

The class library provides a comprehensive set of facilities for application development. They are primarily written in C#, but thanks to the Common Language Specification they can be used by any .NET language. The class library is structured into Namespaces, and deployed in shared libraries known as Assemblies. When we speak of the .NET framework, we are primarily referring to this class library.

It's important to note that the main goal of the DotGNU and Portable.NET projects and the Microsoft Shared Source CLI (Rotor) code base is to provide a class library that is 100% CLS (Common Language Specification) compliant. In constrast, the main goal of another open source CLI implimentation, the Mono Project is to provide 100% compatable class libraries for both the CLS specification and with the class library currently released by Microsoft for their commercial version of .NET, which itself does not currently fully comply the CLS specification published by ECMA.

Namespaces and Assemblies

Namespaces are a mechanism for logically grouping similar classes into a hierarchical structure. This prevents naming conflicts. The structure is implemented using dot-separated words, where the most common top-level namespace is System, such as System.IO and System.NET (a complete list can be found in Portable .NET Library Documentation). There are other top-level namespaces as well, such as Accessibility and DotGNU are examples. New namespaces can also be created prefixed with the organization.

Assemblies are the physical packaging of the class libraries. These are .dll files, just as (but not to be confused with) Win32 shared libraries. Examples of assemblies are mscorlib.dll, System.dll, System.Data.dll and Accessibility.dll. Namespaces are often distributed among several assemblies and one assembly can be composed of several files.

Common Language Infrastructure and Common Language Specification

The Common Language Infrastructure (CLI), or more commonly known as the Common Language Runtime, is implemented by the .NET executable. The runtime is used to execute compiled .NET applications. The common language infrastructure is defined by the ECMA standard ECMA-335. To run an application, you must invoke the runtime with the relevant parameters.

The Common Language Specification (CLS) is specified in chapter 6 of ECMA-335 and defines the interface to the CLI, such as conventions like the underlying types for Enum. The Portable .NET compiler generates an image that conforms to the CLS. This is the Common Intermediate Language. The Portable .NET runtime takes this image and runs it. The ECMA standard formally defines a library that conforms to the CLS as a framework.

Managed and Unmanaged Code

Within a native .NET application, all code is managed; that is, it is governed by the CLI's style of memory management and thread safety. .NET applications can use legacy code, which is referred to as unmanaged, by using the System.InterOpServices libraries to create C# bindings.

Major motivations for being involved in DotGNU

  • To counter the perceived challenge to open systems posed by Microsoft's .NET platform, and fears that the company intends to dominate the web services space as it has the desktop
  • A technical interest in webservices, bytecode systems, and compiler construction.
  • A business strategy of using DotGNU, and contributing to DotGNU. DotGNU is part of GNU and thereby protected from coming under the control of any single company.

CVS information

The CVS repository can be checked out through anonymous CVS with the following instruction set.

 cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/dotgnu-pnet co .

Bugs and Patches

The bug tracker is at https://savannah.gnu.org/bugs/?group=dotgnu-pnet and the patch tracker is at https://savannah.gnu.org/patch/?group=dotgnu-pnet

IRC Channel

The irc channel #dotgnu on irc.freenode.net is one of the main communication tools of the DotGNU project.

The logs of #dotgnu are always available here: http://ajmitch.linuxworks.co.nz/.

IRC Meetings

DotGNU holds weekly meetings to discuss any issues of relevance; to allow the developers to catch up with each other; and to allow new members to ask questions and find out how to join in.

The meetings are conducted via IRC in the channel on Saturdays at 0900h UTC

Developers

External links

Template:Portalpar

de:DotGNU es:DotGNU pl:DotGNU