Free Software for Webservices and for C# ProgrammingThe 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):
Major motivations for being involved in DotGNU include:
Portable.NET ScreenshotsClick on the thumbnails to view the screenshots in full size with a brief explanation. More screenshots. NewsDotGNU news is also available as an RSS feed. 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 launchedGetDotGNU.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 libjitVersion 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 0.9.16.002 security fix releaseAll phpGroupWare versions earlier than 0.9.16.002 set header admin and setup passwords as plain text cookies. Now the bugfix security release 0.9.16.002 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 releasedPortable.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 VolunteersThe 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.orgGnu-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 XThanks 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 January 11-1-2004: Portable.Net on Playstation 2Thanks 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 LCA2004Four 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 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 AnnouncementThe release announcement for the DotGNU 0.1 CD-ROM release has been posted. November 2-11-2003: Embedding X applications in XsharpIt 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#. November 1-11-2003: DotGNU 0.1 BitTorrent downloadsBitTorrents for DotGNU 0.1 are available now at http://download.freedom.biz/dotgnu/. You can download the gzip'ed DotGNU 0.1 CD-ROM iso image (219 MB) or the following binary packages: Debian GNU/Linux .deb packages, RedHat/Fedora (S)RPMS, Mandrake9 rpm packages, FreeBSD packages, Mac OS X packages, and also Installer packages for the MS Windows system. October 30-10-2003: ftp.gnu.org updateUp-to-date source tarballs for Portable.NET are again available from ftp.gnu.org and its mirrors. October 28-10-2003: DGEE 0.1.6 is releasedDGEE 0.1.6 has been released. The DotGNU 0.1 release will follow very soon. October 15-10-2003: DotGNU Portable.NET 0.6.0 releasedVersion 0.6.0 of DotGNU Portable.NET has been released. This is the release which will go onto the DotGNU 0.1 CD. It contains lots of bug fixes, functionality was missing in earlier versions, and huge improvements in System.Windows.Forms. The full release announcement is here. October 10-10-2003: Feature freezeA feature freeze for Portable.NET is now in effect, leading up to the DotGNU 0.1 release, which will be "really soon now". During feature freeze, bugs in existing code will be fixed if they are either easy to do, or there is no way for a programmer to work around them. Anything that may impact stability will be deferred until after DotGNU 0.1. October 09-10-2003: pnet's SWF runs also on MS WindowsPortable.net now runs pnetlib's System.Windows.Forms also on the Microsoft Windows System. This is a major achievement in the area of portability. There is a screenshot. September 06-09-2003: Portable.NET 0.5.12 releasedPortable.NET 0.5.12 has been released, and is available for download. This is mostly a bug fix release, heading up towards 0.6.0, but with substantial improvements throughout the system. Particularly Winforms (many thanks to Neil Cawse). Please check out the new, improved pnetlib-status pages, and help us nail the rest of the core classes prior to 0.6.0. August 26-08-2003: 1st International DotGNU Collaborative Coding CompetitionThe DotGNU project is holding an international competition in the area of collaboratively implementing System.Windows.Forms. Besides the chance of winning one of fifteen monetary prizes totalling US$ 4500, participants get the good feeling of having contributed to setting the IT world free from the dominion of a certain monopolistic company. The full announcement is here. August 09-08-2003: DotGNU 0.1 to be released end-SeptemberAt today's irc meeting, the release date for DotGNU 0.1 has been fixed at end-September. For Portable.NET the goals are to get pnetC to basic usefulness, fix as many system.xml bugs as we can, and make the core button/textbox/scroll widgets work in winforms. July 26-07-2003: Portable.NET 0.5.10 releasedBreaking the tradition, which required a 0.6.0 this time , the pnet developers have decided to put out 0.5.10, 0.5.12, etc, as release candidates for 0.6.0, which will be part of DotGNU 0.1. A lot has happened this release. The System.Windows.Forms namespace is coming along well. The DotGNU community has chipped in more than its fair share of it this release - particularly Simon Guindon, Neil Cawse, Richard Baumann, Ian Fung, Cecilio Pardo, and the relentless Gopal V. Threading now works very well (thanks to Thong Nguyen aka tum) and Reflection.Emit (Richard Baumann) too. The C compiler has advanced enough to compile most C programs. The pnetC now has significant bits of glibc and is looking for people to help port the rest of glibc here. The CVM unroller was also rewritten into a generic framework that should be much easier to port to new architectures. Read the full NEWS entries here. here and download it from here. July 24-07-2003: Portable.net runs Component PascalGardens Point Component Pascal (GPCP) works with Portable.net. GPCP is interesting because the compiler and runtime are completely hosted inside the CLI environment, using ilasm to generate the output binaries. Read more about GPCP here and the instructions for using it with Portable.net here. July 18-07-2003: TreeCC 0.2.6 releasedTreeCC 0.2.6 was released with minor modifications , which adds an additional GC allocated node model to the original HEAP allocated (malloc) model and namespace support to C++ output. Other minor bug fixes and improvements go along. Read the full announcement here. July 14-07-2003: PPC Speed Gains in DotGNU Portable.NETPortable.NET on the PPC has recently doubled in speed due to the use of manual register assignments on that platform. The speed gains will be noticeable once the PPC unroller port has been completed. For more details, read the mailing list thread. July 12-07-2003: Generic Unroller in DotGNU Portable.NETThe generic unroller has finally hit pnet cvs. The unroller is responsible for producing native code (much like a JIT) for the pnet runtime. The generic unroller separates the CPU specific details of native code generation, like opcode values and register ordering, from generic features, like register allocation, greatly simplifying the process of porting the unroller to new platforms. The ARM and x86 ports are already working and support for IA-64, PPC, and Alpha is in the works. For more details, read the mailing list thread. July 05-07-2003: DotGNU ManifestoThe DotGNU Manifesto is now official, and consequently the version number has been changed to 1.0. (There are no other changes from draft version 0.4). June 29-06-2003: Threading in DotGNU Portable.NETThanks to the works of Thong Nguyen (tum), threading is working in DotGNU Portable.NET now. For more details please refer to the PortableNet/Threads wiki page. June 27-06-2003: Video Clip of System.Windows.Forms on handheldsWe now have a video clip showing one of the famous DotGNU coding fingers testing System.Windows.Forms on an Ipaq handheld computer with DotGNU Portable.NET June 17-06-2003: Portable.NET 0.5.8 releasedA lot of things have happened since the last Portable.NET release. The Java and Visual Basic language front-ends for cscc have been added to the system, and a huge number of new classes have been implemented in pnetlib, including support for IPv6 and IrDA networking. We have also begun implementation of the System.Windows.Forms library, built on top of the X11 library. This means that it will be able to run on any X11-capable system. Currently tested to work on x86-based GNU/Linux systems and ppc-based MacOS X systems. We are looking for volunteers to help us implement the "x11-winforms" library as quickly as possible, and to test it on as many platforms as possible. Finally, the ml-pnet project has been started to provide ports of certain Mono C# libraries. System.Data (ADO.NET) currently works, and we hope to have System.Web (ASP.NET) working soon. The full announcement is here. June 16-06-2003: X11-WinForms support for OS XPortable.net System.Windows.Forms is now working on OS X as well as GNU/Linux. Screenshots of test programs on OS X are here, here and here. We ask OS X developers to help us with continuing this work. June 13-06-2003: WinForms support for Portable.netPortable.net has started work on the System.Windows.Forms namespace and a simple forms example has been run on the platform. The WinForms effort is to proceed as a new lightweight toolkit based on System.Drawing rather than as a UI wrapper system. This will allow it to be compatible to the specifications even when the native UI is different. Currently a system based on X11 drawing apis is being developed. Read all about it here or see a screenshot. June 6-06-2003: Postgresql provider for ML-PnetThe DotGNU Portable.net project now has added a full capability Managed Postgresql Provider thanks to the efforts of the Npgsql project admin Francisco Figueiredo Jr. The detailed instructions are available from the Npgsql News Page . June 2-06-2003: Three Quarters of a Million Lines!The DotGNU Portable.NET project has passed the "750,000 lines of code" milestone. Read the full anouncement here. May 29-05-2003: Support for IPv6 and IrDa protocolsPortable.NET now has support for IPv6 (the "next generation" internet protocol which fixes a number of problems with the current version, in particular the limited number of available IPv4 addresses) and the IrDa sockets protocol (so that now you can use DotGNU to build networks between infrared capable handhelds and workstations). With Portable.NET, IrDA is supported in all versions where the OS kernel supports it, not just handhelds. (This differs from Microsoft's version of .NET where IrDa capability is not available in the workstation-level SDK.) May 25-05-2003: Pnetlib status pages now against .NET 1.1The pnetlib-status pages have been updated to include comparisons to the .NET 1.1 standard. Only 474 classes to go, so please pick a class , any class and lend a hand. We're nearly there !. May 17-05-2003: It's raining compilers this weekendVersion 0.0.2 of the DotGNU JAVA compiler has been released and integrated into pnet cvs. May 17-05-2003: Compiler for minimalistic programming language and demo webserviceFollowing a complaint that DotGNU did not yet have a compiler for a minimalistic programming language, such a compiler was quickly created, together with a demo webservice. The code is in pnet cvs and can serve as a simple example of a cscc plugin. May 16-05-2003: Hello World in Visual Basic.NETThe beginnings of Visual Basic.NET support are now in pnet cvs. Try "cscc -o hello hello.vb" and run with "ilrun hello". If you would like to help out on the VB project, then there is lots of work still to do:
1 and 2 require cscc compiler skills - if you're interested in learning the compiler, then this is the time to start. The Java, VB, C#, and C front ends will all need lots of eager beavers over the next few months. 3, 4, and 5 are easier, mainly requiring C# and/or VB programming skills. Grep for "TODO" under pnetlib/Basic, check out the documentation for the Microsoft.VisualBasic namespace on msdn.microsoft.com, and send in those patches! May 05-05-2003: Code unroller for ARM CPUs availableRhys has written a CVM code unroller for ARM/StrongARM platforms. An unroller uses some simple JIT techniques to translate commonly-used CVM instructions into native code. The result is about a 2-3 times improvement in performance on ARM, compared with the default direct threaded configuration. For more details, read the announcement. May 03-05-2003: Portable.NET 0.5.6 releasedBesides "mscorlib.dll" being now 100% signature compatible with the corresponding assembly in version 1.1 (see previous news item), the other big news is that the library can now be built in multiple configurations with "./configure --with-profile=X", where "X" is one of the following: full, ecma, compact, compact-fp, kernel, kernel-fp, tiny, tiny-fp For detailed NEWS entries and signed md5sum's, read the announcement. Apr 26-04-2003: 100% signature compatibility of mscorlib.dllThe lowest-level library within pnetlib, "mscorlib.dll", is now signature compatible with the corresponding assembly in version 1.1 of the .NET Framework SDK. Every class, every method, every interop marker attribute, and every silly little enumerated constant. All of it! Read the announcement and please help with testing! Apr 10-04-2003: New DotGNU manifesto draftRMS has responded to the new DotGNU Manifesto draft with the words "It looks good to me". Apr 07-04-2003: Installer for MS Windows System available for download
Bob Johnson has compiled Apr 04-04-2003: Discussion of W3C Patents PolicyA thoughtful discussion of W3C's new proposed Patents Policy, and why it is unacceptable from DotGNU's perspective, is unfolding at kuro5hin.org following an opinion piece posted by nb aka bizcoach. Mar 31-03-2003: DGEE Release 0.1.4Version 0.1.4 of DGEE, the DotGNU Execution Environment has been released. There is now full XML-RPC support, multiple VM support, multiple webservice language support, auto-generation of client XML-RPC code from assembly, and better memory management. An installation helper "dgeediagnose" is available for sorting out ipc resource issues. Mar 31-03-2003: Portable.Net Release 0.5.4DotGNU Portable.Net 0.5.4 has been released. Pnetlib 0.5.4 and TreeCC 0.2.4 have been released along with it. The high points are the beginnings of support for Generic IL and Reflection.Emit, with lots of little bug fixes here and there. Read more here or go get it from here. Mar 28-03-2003: Portable.Net Release TimetableThe Portable.NET project, which is central for DotGNU's efforts for compatibility with Microsoft's .NET, now has a firm release schedule. Full support for ECMA standards 334 and 335 is expected by the end of June 2003. Mar 01-03-2003: DotGNU Wiki PagesDotGNU now has a collaborative webpage at wiki.dotgnu.org and is building a collection of information related to dotgnu and its subprojects. Adam Ballai has been central to this development and has set this up . So everyone is invited to chip in and go wiki. Feb 22-02-2003: Generic IL supportThe DotGNU Portable.net base tools now have support for Generic IL. Portable.NET is the first Free Software implementation of the CLI to release real support for Generic IL. It includes the assembler and disassembler for now. The compiler is being worked upon to support generic C# in the near future. Read all about what's done and what's not in this mail . Feb 08-02-2003: Portable.Net Release 0.5.2DotGNU Portable.Net 0.5.2 has been released. Pnetlib 0.5.2 and TreeCC 0.2.2 have been released along with it. This release has been a quantum jump in portability with platforms as varied as x86,IA-64,S390,arm,PA-RISC etc being supported. Read about the rest of the new whistles and bells here or go get it from here. Jan 27-01-2003: The RSS Feed is on !The Dotgnu website team have decided that RSS is the way to go and true to our webservice initiatives we now have a cool RSS feed. Syndicate ! Jan 18-01-2003: The Portable.net papersA paper about ``The Design of the Portable.NET Interpreter'' is being presented by Rhys Weatherly at the Linux Conference 2003, Australia. The paper will discuss the various levels of optimizations that are selected platform-wise to make the Portable.net interpreter faster and yet still remain truly portable. Read the entire paper in PDF here. Jan 16-01-2003: QMahjong Qt# DemoRhys Weatherly has brought out a good demo of Portable.net with a Mahjong game with Qt#. It works with the Portable.net 0.5.0 release and the Qt# 0.6. Get the sources from mahjong-0.0.1.tar.gz or see a screenshot at Qt# website . Play on ! Jan 11-01-2003: DotGNU ReleasesThe DotGNU Portable.net and DotGNU DGEE are coming up with releases today. The Portable.net is having a milestone release of 0.5.0 . Read all about the Portable.net release here . The new release has touched the half million line mark, read the exact figures here . We'll be announcing the binary packages soon. Jan 05-01-2003: DGEE Demo up and runningThe Dotgnu Webservice container , otherwise known as the Dotgnu execution environment (DGEE) has reached usable levels. Chris Smith has hacked up this server which does not run inside Apache , but adopts the strategy other AppServers like Tomcat has been using. The C# webservice system is functional and uses Apache and Goldwater as the network and execution containers respectively. The system is self documenting and includes introspection into the webservices. It currently supports only XmlRpc and is only a pre-release. Also read more about DGEE here. Dec 17-12-2002: Mingw32 and Portable.NetThe Portable.Net platform now works on Win32 without any dependencies on the Cygwin wrappers. The build system uses the Minimal Gnu For Win32 or Mingw32 libraries to achieve this. Read the full announcement here. Dec 13-12-2002: Qt# with Portable.NetThe Qt# project has managed to compile its libraries and run the sample programs included with Qt# on Portable.Net. Excluding the Xml based bindings generator program , the rest of Qt# compile and run with ease on Portable.Net. The screenshots have been put up for a peek at Gui programming with Portable.net. Take a look at mandelbrot and scribblewindow. Nov 21-11-2002: DGEE & Intermodule Messaging.Chris Smith has brought out a nice specification for the DGEE core module communication. The good thing about this is that it is not tied down to XML or any encoding format, but allows arbitary data chunks such as XML, C# byte code, HTML form post data etc to be packaged together and sent as a single message between the internal components of the VRS/SEE core DGEE. Read the full specification here. And get a proof of concept implementation in C here. Nov 2-11-2002: Treecc and Ruby outputThanks to the efforts of Peter Minten (silvernerd) , we now have a Ruby generator for treecc . Treecc is a tool that simplifies construction, manipulation and traversal of Abstract Syntax Trees . It was developed for building the Portable.Net compiler tools . See announcement here. Oct 19-10-2002: IRC Meeting with Parrot DevelopersThe IRC meeting to discuss adding Parro |