Synopsis on what DotGNU Is

There’s been a lot of chatter about Mono, recently, varying from “its a killer dev platform!” all the way to, “the patent issues are going to destroy us all!” And yet, in all this chatter, there has been relatively little chatter about DotGNU or Portable.NET. Well, you know what they say: learning is FUNdamental…What is DotGNU?

The DotGNU project – “GNU freedom for the internet.”

DotGNU is an offical GNU project; it is an attempt at providing a viable alternative to Microsoft’s .NET and Hailstorm business strategies. By providing viable alternative to Microsoft’s .NET technologies, the DotGNU team hopes to help prevent the ever spiteful vender lock-in and make sure the Internet is an not controlled by any one vender in particular.

DotGNU is a “meta project” composed of many different services; the main goal, as taken from the DotGNU FAQ, is “… to build a suite of free software tools to build and execute Common Language Infrastructure (CLI) applications.” These include free software tools include DGEE, a powerful webservice component; phpGroupWare, a suite of applications designed for e-collaberation, and, last but not least, Portable.NET.

What is Portable.NET?

Possibly the only part you really cared to read about. Portable.NET is an implementation of ECMA standards 334/335; that is to say, like Mono, it is a Free Software implementation of “.NET”.

But, then, how does Portable.NET differ from Mono?

  • Licensing.

    The Portable.NET project uses a modified GPL license that contains a special linking exception that makes it possible to develop both open and closed source applications, so corporations and friendly ISVs need not fear here. The modified license is commonly referred to as “GPL plus linking exception.” This mouthful of a license is also used by the GNU Classpath project. t3rmin4t0r from the DotGNU project explains this importantance in our beloved comments section:

    “There is also a potential problem related to patents: If you write software and release it under the MIT X11 license, and then you find out that someone has a patent on some idea(s) that you used in the program, this MIT X11 licensed program which you have written is actually proprietary software under the control of the owner of the patent.

    The owner of the patent can control the code in the sense that he can dictate terms on how or when it should be distributed … And right now for Mono that is Microsoft . (L)GPL explicitly disallows this and therefore it can be taken up as an antitrust lawsuit rather than an open shut patent lawsuit.”

    Whoa. Uncool!

  • Portability.

    Portable.NET was designed with the concept of portability heavy in mind. For instance, for a long time – a long, long time – it was the only .NET implementation available on Mac OSX; the earliest screenshots of Portable.NET’s robust Windows.Forms implementation on Mac OSX can be found dating back to September of 2003. Portable.NET’s architecture makes it easy to extend it to different systems, x86, Sparc, ARM, ia-64, and the Playstation2, and Xbox gaming systems, just to name a few. Yes, an Xbox. Portable.NET is also known to run on several handheld devices such as the Sharp Zarius and an iPaq. There are many more screenshots available.

  • Windows.Forms

    Windows.Forms was developed in a fundamentally different way than Mono’s current winelib-based code. Following true to Portable.NET’s insane portability, the Portable.NET crew worked slavishly to deliever unto you a set of libraries that were not only compatiable with Microsoft’s Windows.Forms, but that also worked under Linux and Mac OSX without dozens of hard to setup dependencies. How? They “hand drew” each and (practically) every widget in the Windows.Forms assembly, painting the result to an X11 server when finished. The result is a highly portable Winforms assembly that, like Portable.NET itself, can be seen running under everything from an iPaq to a Mac at
    The best part? It runs pretty damn fast!

  • The Bilingual Virtual Machine.

    Portable.NET’s virtual machine doesn’t speak strictly in IL, oh, no. At a higher level, it also speaks “CVM”; Converted Virtual Machine. By default, all bytecode is converted to CVM, although it is reasonable to expect that code could compile directly to CVM for languages that want to compile to Portable.NET and squeeze all the performance they can out of the interpreter. Yes, interpreter – as of this text, there is no JIT-engine available for Portable.NET. Do not assume this to mean that the virtual machine is slow, however; the interpreter is a powerful, high performance engine that can efficiently transform IL to CVM and execute on the fly; as reasoned at in this writeup. The CVM format and its significant advantages are way beyond the scope of this article, however, and discovering this “language” will be an exercise left up to the reader. That’s the cue for you to click the link two sentances back, man.

  • Legal issues.

    Oh, boy, this is a fun one, but no talk about anything Mono or DotGNU related is not complete until its brought up. This is what Norbert Bollow had to say on the subject somewhere back in October of last year:

    “We have obtained legal advice on how to go about creating legally bulletproof alternatives to the US-patent-endangered APIs. In a
    nutshell, the design part has to be outside the US (and whoever does it should never take the fruit of this work with him into the
    US), however the FSF patent lawyer says that implementing those replacement APIs in terms of already-exiting free libs will be
    “entirely safe”, even for developers in the US.”

The End.

Suffice to say, the DotGNU project and Portable.NET have a lot to offer the GNU community – an entire breadth of technology ranging from webservices to a GNU-based authorization system (think “Hailstorm” but Free!) to .NET compatability, all in one convient, coherent package.

Remember: Unlike Mono, the Portable.NET project seeks to create an alternative but compatiable technology, much like the WINE project.

About the Author:
Mr. Washington is a completely unknown hobbyist hacker who went through the treacherously agonizing feat of using HTML code in a raw text editor, thus reaffirming his status as renegade hacking hero. He is learned in book-reading.


  1. 2004-06-01 5:38 pm
  2. 2004-06-01 5:53 pm
  3. 2004-06-01 5:56 pm
  4. 2004-06-01 6:35 pm
  5. 2004-06-01 6:45 pm
  6. 2004-06-01 7:14 pm
  7. 2004-06-01 7:27 pm
  8. 2004-06-01 8:51 pm
  9. 2004-06-01 8:59 pm
  10. 2004-06-01 9:46 pm
  11. 2004-06-01 10:31 pm
  12. 2004-06-02 12:23 am
  13. 2004-06-02 12:48 am
  14. 2004-06-02 1:01 am
  15. 2004-06-02 1:43 am
  16. 2004-06-02 1:45 am
  17. 2004-06-02 3:47 am
  18. 2004-06-02 5:30 pm