DotGNU Project - GNU Freedom for the Net








Free Software for Webservices and for C# Programming

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.

The DotGNU project 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 currently consists of three main development projects (further components will be added over time):

  • DotGNU Portable.NET, an implementation of the Common Language Infrastructure (CLI), more commonly known as ".NET", includes everything that you need to compile and run C# and C applications that use the base class libraries, XML, and Systems.Windows.Forms. Currently supported CPUs: x86, ppc, arm, parisc, s390, ia64, alpha, mips, sparc. Supported operating systems: GNU/Linux (on PCs, Sparc, iPAQ, Sharp Zaurus, PlayStation 2, Xbox,...), *BSD, Cygwin/Mingw32, Mac OS X, Solaris, AIX. [Intro] [Download] [Install]
  • phpGroupWare, a multi-user web-based GroupWare suite, which also serves to provide a good collection of webservice components, all of which can be accessed through XML-RPC so that you can easily integrate them into webservice applications of your own.
  • The DGEE webservice server is also moving forward nicely. [Intro] [Download] [Install]

Major motivations for being involved in DotGNU include:

  • A desire to prevent Microsoft from achieving their stated goal "that the era of 'open computing,' the free exchange of digital information that has defined the personal computer industry, is ending". Read the quotation in context and learn how the Free Software movement works to prevent this disaster. The contribution of the DotGNU project might turn out to be important.
  • 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.


DotGNU news is also available as an RSS feed.

June 06-06-2009: Development version control switched from CVS to GIT !

The active development takes place now in a GIT repository on savannah. The CVS repository will be available for read only access for some time but no further updates will be committed there. For information on how to obtain the GIT repository have a look at the GIT info.

December 12-10-2008: Libjit 0.1.2 released !

The changes are the switch from GPL to LGPL 2.1 licence, native support of x86-64/AMD64, a fixed libjit interpreter and various other improvements and bugfixes. You can get the source tarball from savannah's download area.

April 04-15-2008: Libjit runs Windows.Forms Applications native on X86-64 !

The big brother x86-64 is joining the JIT x86 family. The current CVS HEAD of libjit, along with the corresponding pnet, can run GUI Windows.Forms programs in pure JIT mode on x86-64.

March 03-20-2007: DotGNU Portable.NET 0.8.0 released !

After a year of work, the Portable.NET x86 JIT is finally ready to leave the confines of CVS into a stable release. The new release includes the new libjit based x86 JIT with all the bells and whistles as well as all the bug fixes which have gone into various parts of the system. This release is also the first to be gift-wrapped by klausT & co, rather than our regular release master rhysw. You can get the source tarballs from savannah's download area. Give it a whirl, it should be faster, better and more stable than ever before.

Feb 02-23-2007: Dotgnu in "Real Life"(TM)

Despite what this scarcely maintained webpage might suggest, interesting things are afoot in dotgnu developer land. We've finally managed to catch a glimpse of DotGNU in action from the Trumpf labs. Take a closer look at their laser appliance control panel, which is a Windows.Forms application which uses a touch-screen interface. The appliance and dotgnu was recently featured in the Elektronik magazine issue 03/2007 (in German).

Aug 08-21-2006: Libjit on Alpha

As part of the Google Summer of Code project, tcort has been hacking away at the libjit port to alpha. As the SoC was ending yesterday, tcort showed the basic JIT samples working on alpha, including on-demand compilation and execution of functions. There is a lot more work left in Alpha land and tcort has said that he plans to continue working on it. Take a look at his blog post and the screenshot. If you're interested in helping, take a look at his Alpha porting guide first.

Aug 08-19-2006: Libjt runs Windows.Forms applications

Over the last few months, libjit has made progress in leaps and bounds. The current CVS HEAD of libjit, along with the corresponding pnet, can run GUI Windows.Forms programs in a pure JIT mode on x86. Actually, it has been functional for a while now. We apologize for the delay in announcing this, but we are all too busy hacking :)

May 01-05-2006: Google Summer of Code 2006

DotGNU is taking part in the Google Summer of Code 2006 as a part of the GNU Operating System. If you are a student and are interested in working on DotGNU (or another part of GNU) see the list of GNU ideas. The DotGNU related items are mainly about implementing C# 2.0 features in the compiler, enhancing System.Windows.Forms and improving libjit. DotGNU related Summer of Code projects can be found on this list.

March 04-03-2006: DotGNU website redesign

We are currently looking at redesigning dotgnu.org and building a new look and feel. The old template system is also going to be replaced with an XSLT based one. If you are interested in helping, please join up on the #dotgnu IRC channel or mail the developers mailing list, we are very interested in general proposals and mockups.

February 11-02-2006: Linux.conf.au 2006

Some DotGNU developers met at this year's Linux.conf.au in Dunedin, NZ to discuss plans for 2006. Some DotGNU people can be seen on this photo. Apart from a nice dessert, there was also quite some discussion about Portable.NET's future. The conclusion was to go ahead and give Portable.NET a big boost in 2006 as there is a lot of exciting technology in Portable.NET to play around with.

January 15-01-2006: DotGNU Portable.NET 0.7.4 and libjit 0.0.6 released!

New versions of Portable.NET and libjit are available. Far too many new features and bug fixes to list them here, see the announcement which includes a full list of new features and bug fixes. You can get it from the download page.

December 03-12-2005: Portable.NET and libjit progress

Work on libjit (A JIT designed to be independent of any particular virtual machine bytecode format or language) has resumed again and we are gearing towards using it in Portable.NET soon. Recently, there have also been donations which will be distributed amongst developers who contribute code to get libjit finished and hook it into Portable.NET's runtime engine.

On Portable.NET related news, there have been many changes since the last release, probably the most notable one is the development of libCrayons, the new System.Drawing backend. With a bit of luck, developers can even get one of the Windows.Forms related bounties for their code contribution.

If you are interested in any of the recent libjit or Portable.NET developments you should subscribe to the mailing lists or talk to us on IRC.

August 17-08-2005: DotGNU Portable.NET 0.7.2 released!

Changes since the last release and download links can be found in the announcement.

July 31-07-2005: Third revision of C# and CLI specifications

The third edition of the ECMA C# Language Specification and Common Language Infrastructure (CLI) have been approved recently.

June 11-06-2005: DotGNU Portable.NET 0.7.0 released!

We have reached yet another milestone: Portable.NET 0.7.0. There is an unroller for PPC, runtime optimizations and fixes all over the place, many System.Windows.Forms, System.Drawing and Xsharp fixes plus XML and networking enhancements! See the announcement for a more detailed list of changes and get it from the download page.

January 16-01-2005: DotGNU Portable.NET 0.6.12 released!

Portable.NET 0.6.12 and TreeCC 0.3.6 have been released today.

For a list of changes and bug fixes read the announcement or visit the download page where you can also find binary packages for numerous platforms.

December 05-12-2004: Video clip of DotGNU running on Encore Simputer

DotGNU Portable.NET has been ported to the Encore Simputer, a handheld computer based on on Intel's StrongARM CPU (a RISC microprocessor designed for embedded applications), within 72 hours after the release of Encore's port of the GNU/Linux development tools for this platform at the "Linux Bangalore/2004" conference. Conference organiser Atul Chitnis said, ''I threw the challenge as a joke, the bet being a cup of coffee. Gopal borrowed a PC at the conference, and finally an Encore Simputer, and came to me on the third day, saying that I now owed him a cup of coffee. It took a few seconds before the enormity of that statement hit me.'' Here's a video clip.

October 30-10-2004: DotGNU Portable.NET 0.6.10 released!

Version 0.6.10 of pnet, pnetlib, pnetC, and ml-pnet and version 0.3.4 of treecc have been released. The full release announcement is here.

September 25-9-2004: GetDotGNU.com community web portal launched

GetDotGNU.com is a new web portal dedicated to DotGNU and its development projects. The site features news articles and editorials, forums, downloads, screenshots, and many other great features. It is time to Get DotGNU! now.

August 7-8-2004: Release of pnet, pnetlib, pnetC, ml-pnet, treecc, and libjit

Version 0.6.8 of pnet, pnetlib, pnetC, and ml-pnet, version 0.3.2 of treecc, and version 0.0.4 of libjit have been released. There are lots and lots of bug fixes and new features. The full announcement with NEWS entries and signed MD5 checksums is here.

July 7-7-2004: phpgw security fix release

All phpGroupWare versions earlier than set header admin and setup passwords as plain text cookies. Now the bugfix security release is out which fixes this security problem.

May 29-5-2004: DotGNU Portable.NET 0.6.6 released!

Even though Rhys was on "sabbatical" away from Portable.NET during this release cycle (he has been working on libjit), major progress has been made in many areas, including in particular threading, Winforms, System.Xml, ml-pnet, DCOP and serialization.

The full release announcement is here.

Here are some screenshots: Portable Studio IDE, MyXaml, Photo Tool (wx.NET), KDE DCOP Support, MDI and FileDialogs, Gtk-Sharp, Svg Rendering, XHTML Rendering .

May 13-5-2004: libjit-0.0.2 has been released!

Rhys has packaged up the current state of the libjit tree into a libjit 0.0.2 release.

Libjit is now at the state where primary testing and bug fixing can begin. We initially need test cases that cover all of the functions in "jit-insn.h".

The easiest way to write a test case is to write a small program in the "Dynamic Pascal" language that exercises the feature in question. Then place it into the "libjit/tests" directory. The "libjit/tests/README" file contains more information on how to do this. A couple of test cases are already provided that demonstrate the concept.

April 27-4-2004: libjit-0.0.0f has been released!

The libjit library implements Just-In-Time compilation functionality. Unlike other JIT's, this one is designed to be independent of any particular virtual machine bytecode format or language. The hope is that Free Software projects can get a leg-up on proprietary VM vendors by using this library rather than spending large amounts of time writing their own JIT from scratch.

This JIT is also designed to be portable to multiple architectures. If you run libjit on a machine for which a native code generator is not yet available, then libjit will fall back to interpreting the code. This way, you don't need to write your own interpreter for your bytecode format if you don't want to.

libjit is independent of pnet (that's one of the main points!) but we'll eventually modify pnet to use it for JIT'ing.

In the newly released version 0.0.0f, tutorials 1 to 4 now work correctly using the interpreted back end, which should allow people to experiment with real examples now. The x86 and ARM back-ends should follow in the next few days.

A mailing list for libjit-specific discussions has been set up.

March 13-3-2004: DotGNU Portable.NET 0.6.4 released

Portable.NET 0.6.4 and Treecc 0.3.0 have been released. The big change this cycle is the C compiler, which has now reached the point of being useful. We now need lots of volunteers to help flesh out the C library, pnetC, to include all of the usual libc features. There have also been a lot of bug fixes and performance improvements in System.Windows.Forms, thanks to Neil Cawse. And Richard Baumann has completely rewritten the System.Xml parser, fixing many long-standing issues with the XML library.

March 6-3-2004: C Compiler: Significant Progress and Call For Volunteers

The new C compiler type system has been checked in. Type layout is now totally dynamic; the IL binary will automatically adapt itself to the runtime engine it is running on. This means that DotGNU is bringing true "write once, run anywhere" functionality to C, running on top of standard CLR implementations. Unlike Microsoft's C compiler, whose output will only run on i386-based Windows systems, ours will run portable ANSI C code on any platform that has a CLR, be it 32-bit or 64-bit, little-endian or big.

Simple examples of C programs can be compiled to IL now, and volunteers are needed to work on the standard C library so that more programs and libraries can be compiled. Our eventual goal is to bring a large body of Free Software libraries and programs to the CLI environment, vastly increasing the range of functionality beyond the small number of libraries currently defined for C#.

February 28-2-2004: .NET Developer's Journal Readers' Choice Awards 2003

We were mentioned in the ".NET Developer's Journal Readers' Choice Awards 2003", achieving third runner up in the "Best .NET Build Tools/Installers" category and second runner up in the "Best .NET CLI" category. The full details are at the following URL:

February 27-2-2004: Interview with nb on gnu-friends.org

Gnu-friends has an interview about the history of DotGNU and nb's views on Free Software philosophy: http://gnu-friends.org/story/2004/2/27/15415/3365

February 11-2-2004: "Darwinports" packages of Portable.Net 0.6.2 for Mac OS X

Thanks to the efforts of olegb, "DarwinPorts" packages of DotGNU Portable.NET 0.6.2, including System.Windows.Forms, are now available. To install, use "port install pnet; port install pnetlib; port install ml-pnet"

January 3-1-2004: Portable.Net 0.6.2 released

Version 0.6.2 of DotGNU Portable.NET has been released with many enhancements particularly in the area of System.Windows.Forms, with improvements to most controls, fonts, MDI, tree views, and file dialogs. Please use the Southern Storm site for now for downloading it, as we are currently unable to update ftp.gnu.org

January 11-1-2004: Portable.Net on Playstation 2

Thanks to the efforts of Adam Ballai and Lance Gilbert DotGNU Portable.Net is now running on Sony Playstation 2 (which has a little endian "R5900 V3.1" MIPS cpu.)

January 12-1-2004: DotGNU at LCA2004

Four DotGNU'ers have made it to LCA2004 in Adelaide, Australia. A group photo is here. From the left, we have Andrew Mitchell (ajmitch), Rhys Weatherley (rhysw), Chris Smith (cds), and Dave Hall (skwashd, who wishes to remain anonymous for reasons unknown).

January 13-1-2004: website update

All official GNU websites (which are on www.gnu.org or tightly synchronized with www.gnu.org, where in the example of DotGNU, our website is at http://www.gnu.org/projects/dotgnu/) were in hiatus between mid-November 2003 and January 2004 due to a security breach at an important server of the Free Software Foundation, and the resulting need to set up a much more secure system. The new system is available now, although it seems to have a bug which prevents the www.gnu.org version of the DotGNU website from being updated. Since the DotGNU project has important news to share, and I don't have much hope of this project-specific bug being treated with priority (it may have to do with DotGNU being under /projects on www.gnu.org and not under /software like almost everything else), I'm now updating dotgnu.org without waiting for the savannah webcvs bug to be fixed.

November 6-11-2003: DotGNU Snake!

Support for the upcoming "Whidbey" System.Console routines has been added to Portable.NET, and there is a simple "Snake" game that demonstrates how to use it. A screenshot is here

November 4-11-2003: DotGNU 0.1 Release Announcement

The release announcement for the DotGNU 0.1 CD-ROM release has been posted.

November 2-11-2003: Embedding X applications in Xsharp

It is now possible to embed any X application as a child widget within an Xsharp application. The pnetlib CVS tree includes "XClockEmbed.cs" as an example of doing this for "xclock", and this screenshot shows both "gedit" (a GNOME app) and "kcalc" (a KDE app) running as two children of the same Xsharp main window. This is important because the next version of WinForms will have a HTML web browser control widget, and we will want to embed an existing third-part Free Software web browser, and not write a web browser from scratch in C#.

Your comments please...

You are invited to add your comments concerning this page at the appropriate page of the DotGNU Wiki




Verbatim copying and distribution of this entire article are permitted in any medium or format, provided this notice is preserved.

This page is maintained by Norbert Bollow <nb@SoftwareEconomics.biz> with support from the DotGNU Developers mailing list.