DotGNU Portable.net 0.6.6 has been released . Read the announcement here. It’s been 2 months since the last release , threading has been rewritten twice , timers redone once , binary/SOAP serialization and lots of stuff done in Windows.Forms . This release includes
Portable Studio IDE, MyXaml, Photo Tool (wx.NET), KDE DCOP Support, MDI and FileDialogs, Gtk-Sharp, Svg Rendering, XHTML Rendering .
Should be read as “With this release you can run stuff like”
Just out of curiosity….
What are the differentiators between this project and Mono?
And is anyone working on gcc compilation support for any .net clone?
In any case, I imagine this has been quite a bit of work. Congratulations.
What are the differentiators between this project and Mono?
First off , Mono is going in the direction of “Do all Programming in C#, even Gnome ” , while Portable.net is going in “We’re just here to let people run .NET” .. So Mono has Gtk#/Gnome# (whatever) and Portable.net has a nice Windows.Forms implementation.
Secondly, Portable.net’s policy is “we’ll provide what the user wants” of the typical volunteer project , while Mono has a Roadmap , Managers and things like that.
Portable.net has no paid developers , so it is pretty impressive that it is still in the running (after 3 years). Mono does have Ximian/Novell backing them with “real” money, while I work on DotGNU for “kicks”. Unlike what most people might think, this results in better code IMHO, as I never have a schedule to adhere to … or to hack up a fix . I can take my time to fix a problem the proper way .
Mono has a huge community thanks to Miguel being Gnome Found er and all that , Portable.net unfortunately has about 5 active developers (of which the lead developer has not been that active on the main branch , recently thanks to the JIT).
Lastly Portable.net is developed mainly in Australia (where reverse engineering for compatibility is legal) , India (where there are no e-patents), New Zealand , Canada and only some bits in the US . Which cannot be said about Mono which is based right in USPTO’s firing range.
GCC compilation won’t solve the “I have this cool .NET .dll which I want to run on Platform X” problem which DotGNU’s trying to solve. (but it would be cool anyway).
OTOH, Portable.net’s C compiler does support some cool things (like pthreads already work) … But we need more people to help us finish off printf support (that is not a JOKE).
And I forgot to mention , Portable Studio uses SharpDevelop’s Editor control … (though syntax highlighting and folding is turned off in that particular build …)
http://www.icsharpcode.net/OpenSource/SD/
Gentoo ebuilds are available … OS X packages (including windows.forms) as soon as the US guys wake up ..
Windows.Forms (including MDI) work on TinyX on IPaq …(.NET CompactFramework … beware … we have no stinking licensing fees)
Windows.Forms also works on OS X , though the Win9x look clashes with the super smooth Aqua feel … But if you want Aqua you should be using Wx.NET (http://dotgnu.org/screenshots/14.png)
It does build on IA64 (and the interpreter is faster there than the JIT in compatibility mode) .. 64 bit rocks …
0.6.6 is a very very improved release … and 0.6.8 promises a full JIT !!
curiousity, what is up with printf? I don’t ask as a joke.
The “This release includes…” part had me a bit confused until I started reading the comments, though.
“”We’re just here to let people run .NET”
What does this mean, though? From the way its phrased, it seems like you guys are just going to mimick .NET, which, while helpful, isn’t very interesting in the face of Mono, which does the same + a ton of add-on libraries. Or did I get it wrong?
I think what he means by
“We’re just here to let people run .NET”
is, that Ximian – unlike DotGNU (“we”) – continues to try to push mono/Gtk# etc. into some projects (like Gnome).
At least that’s the way I interpreted t3rmin4t0r’s comment
Wow, just like that it hit the open source world huh? Very groovy! However, one question: is it possible to change the widget set it uses? It’s a great concept and all, but that calculator looks like the dog’s breakfast.
I just want to clarify a few things for people new to DotGNU/pnet.
PNET’s compiler (cscc) can compile C code to *pure* IL that will run on MS.NET, Mono and (of course) PNET. The pnetC library is a completly managed assembly that implements C functions using the CLI’s base class library. The C compiler has huge potential because of its ability to being existing open source libraries (libjpeg, libpng) etc over to the cross platform managed world.
PNET’s compiler (cscc) can compile C code to *pure* IL that will run on MS.NET, Mono and (of course) PNET.
How does this work, exactly? Do C programs have to use the Base Class Libraries, or can they use the standard (STANDARD) C libraries and still be compiled to IL bytecode, or what?
How does this work, exactly? Do C programs have to use the Base Class Libraries, or can they use the standard (STANDARD) C libraries and still be compiled to IL bytecode, or what?
They can use the (STANDARD) C libraries (even non standard posix ones like pthreads can be used). The reason this is possible is because those libraries have been implemented (using a combination of C and C#) and compiled down to the managed pnetC assembly. Managed C applications will have have to distribute the pnetC assembly but that’s no different from VB apps needing the VB runtime. Think of pnetC as the PNET/.NET equivalent of glibc. It’s a completely managed assembly that implements C standard C functions.
Lastly Portable.net is developed mainly in Australia (where reverse engineering for compatibility is legal) , India (where there are no e-patents), New Zealand , Canada and only some bits in the US . Which cannot be said about Mono which is based right in USPTO’s firing range.
Out of curiosity, what would happen if you wanted to run Portable.NET in the US or places where reverse engineering is illegal? Would it still be legal to run Portable.NET?
Lots of work has been done with this project. Ultimately this will be the uniform framework of the network. Thank you
” Ultimately this will be the uniform framework of the network.”
What does that mean?
How does DCOP support work? Qt# bindings?
Some DotGNU people started a wiki which can be found at
http://wiki.dotgnu.org
which has some useful information on it (some things like the Patent stuff doesn’t seem to be linked from the front page, but the pages are there, I hope a DotGNUer links them soon)
It also covers a lot of questions that pop up again and again, so I can only recommend reading some stuff there
How’s libjit coming out?
And, is GPL for that always considered a good choice?
I like gpl for apps, but I’d prefer lgpgl fot libjit, please
Ultimately this will be the uniform framework of the network.
I very much doubt that – .net and java are only suitable for a certain class of rather pedestrian languages. Sure, by turing-completeness, you _can_ implement something like Common Lisp or ML on top of Java or .net – but it’s crappy and slow and badly integrated, as such languages provide more general features than the computational models .net and java assume – trivial example: common lisp has multiple-dispatch multiple-inheritance OO. That means the single-dispatch single-inheritance OO models that both java and .net assume as a common denominator between languages feel unnatural and limiting to a Lisper or ML head, even in a .net implementation of their language.
So, no, .net will NEVER be a uniform framework for networking, any more than Java will be.
“Out of curiosity, what would happen if you wanted to run Portable.NET in the US or places where reverse engineering is illegal? Would it still be legal to run Portable.NET?”
Sorry to be pedantic but reverse engineering is not illegal in the U.S. Indeed the DCMA has a specific exemption for reverse engineering for purposes of computer compatability. The problem in the U.S. in this case are the plethora of software patents which while they are not likely to be used against a home user, may well be invoked either for financial gain or purely anti-competitive purposes if an application achieves significant commercial usage.
first, why should I use portable.net over mono, as a developper ?
Is pnet faster at compiling? interpreting? is the full API supported ? Is it for the legal reasons only ?
Second, is myxaml the exact same as MS xaml? Is it fully implemented ?
Third, does the compiler bugs as much as mono ? (:PPppPpP)
Finally, great job anyway, keep it up keep it up!
pnet is going to be easier to bootstrap than mono because of mono’s compiler being written in c# itself. pnet will compile faster because it’s written in c instead of c#. pnet also probably runs on more platforms as of now. pnet has a windows implemention of Windows Forms that could probably work on mono with some tweaking – I’ve never tried.
mono has more of the class libraries fleshed out than pnet and also has a fairly mature JIT.
It’s a bit of a shame that there hasn’t been more cooperation between the two groups, but hey, that’s the way the ball bounces in the open source world.
Where can one find the Portable Studio IDE?
> pnet has a windows implemention of Windows Forms that could > probably work on mono with some tweaking – I’ve never tried.
Portable.net’s windows.forms is built portably (-duh-) , so it should work in Pnet, Mono, Rotor or MS.NET …. and look the same (which is what most people don’t like).
But Mono’s Beta1 JIT doesn’t let you run any binary compiled on Portable.net , because Portable.net has whidbey extensions (and a version 1.2) while mono doesn’t (1.0).
http://dotgnu.org/pipermail/developers/2004-May/012246.html
> What does this mean, though? From the way its phrased, it
> seems like you guys are just going to mimick .NET, which,
> while helpful, isn’t very interesting in the face of Mono,
> which does the same + a ton of add-on libraries.
> Or did I get it wrong?
But Mono doesn’t have a usable Windows.Forms (yeah, the I wonder how useful the Wine based one will be for real users). But it does run Gtk# (which due to a strange twist also runs on Portable.net).
As long as it is written in C# and standards based , it’ll run just fine on Portable.net .. so there goes the “add on library” theory.
But things like XSP (mono’s ASP.NET) call a few private methods in the BCL , which will never run on Portable.net.
Also about a few comments about “no co-operation between projects” … Visit this link http://www.go-mono.com/archive/beta1/beta1.html#contributors . Be sure to look for names like Rhys Weatherley or Thong Nyguen .
> How does DCOP support work? Qt# bindings?
libICE bindings + stream serialization in C# ..
http://savannah.gnu.org/cgi-bin/viewcvs/dotgnu-pnet/pnetlib/Xsharp/…
It can already do stuff like change the wallpaper , start konqueror etc..
“pnet will compile faster because it’s written in c instead of c#”
It seems to me statements like this keep coming and keep getting refuted. Doesn’t this fall into the same category that “jit’d programs will always be slower than compiled ones”? Now I don’t write compilers – and I’m probably just an average programmer that leaves most of the low level stuff to talented people that do write them. But could you say why this is so? Doesn’t speed come from the number of optimisations and other features of the compiler? Maybe compilation is slower because of all the necessary checks to ensure the .net code.
“But things like XSP (mono’s ASP.NET) call a few private methods in the BCL , which will never run on Portable.net.”
call private methods?? How is that possible? Really too bad to hear that.
“As long as it is written in C# and standards based , it’ll run just fine on Portable.net .. so there goes the “add on library” theory. ”
I really wish this was emphasised more in these conversations. There is so much good work out there available to be used.
Compatibility issues between implementations could be a pretty big issue. Does anyone know of how this is going/tested between the 3 common players (mono, ms, portable)?
> call private methods?? How is that possible? Really too bad to hear that.
Mono’s Reflection allows you to call private methods in
classes . While Portable.net’s doesn’t (for safety reasons).
Hardcoding a call to a private method in a standard library
class is not what I call good design.
grep for “CCS” in System.Web in mono cvs … you’ll find it.
(this is where mono’s XSP server was failing when running on pnet).
> “jit’d programs will always be slower than compiled ones”?
For the same algorithm … yes, probably JIT’d programs will be slower than compiled ones , even with ahead of time compilation , because the standard VMs implement a lot of locks and safety checks which compiled code may or may not.
But the point here is that we’re comparing two different algorithms …
Mono’s C# compiler — C# code to IL binary in memory with Reflection.Emit
Portable.net’s compiler — compile C# to IL assembly (in textual form) , assemble IL to .obj , link .obj to .exe
Portable.net has essentially quite a bit more overhead to it than MCS , but on the other hand it can compile things like Managed C because the linker phase will allow to move around functions like C needs (imagine a missing prototype scenario). Imagine a gcc for .NET , that’s what Portable.net is building ….
Someday Portable.net’s going to avoid the three stage compile for C# … and then it’s going to be a hell of a lot faster . (ie 55% of assembly time is spent in parsing, which could be avoided).
Finally it doesn’t have a dependency on the JIT or anything else, which makes building the standard libraries a lot easier … (ie you don’t need a copy of cscc to build cscc).
But as of today , it just is …
To me it seems that DotGNU is more about FSF politics than Mono and the DotGNU developers seem to be anti-Microsoft to the extreme. Personally i don’t find that appealing but i guess a lot of Linux users will disagree with that. The Mono framework also seems to be more coherent right now. Still i would like to congratulate the DotGNU people with this release; You have come very far with only a few developers.
“Mono’s Reflection allows you to call private methods in
classes . While Portable.net’s doesn’t (for safety reasons).
Hardcoding a call to a private method in a standard library
class is not what I call good design. ”
I just found the following note in the mono docs – Perhaps this is something that will get fixed (as well in xsp).
System.MethodAccessException Class
<snip>
Note: This exception is thrown when the access level of a method in a class library is changed, and one or more assemblies referencing the library have not been recompiled. This exception is also thrown when an attempt to invoke a method via reflection fails because the caller does not have the required permissions.
</snip>
http://www.go-mono.com:8080/index.aspx?link=T%3ASystem.MethodAc…
> I just found the following note in the mono docs – Perhaps
> this is something that will get fixed (as well in xsp).
I know .. unfortunately …
That documentation is taken directly from the ECMA Spec (see here in less pretty format).. http://dotgnu.org/pnetlib-doc/System/MethodAccessException.html
It does not work that way with Mono , try it yourself . Compare it with Portable.net’s code and tell me *one* place where I forgot a _ILClrCheckAccess :- it is the first method called in any reflection internal call. I could disable that, but that still means you are calling a non-standard API method from one .dll to another, which I will have to fake – which is finally BAD CODE in both places.
Bug for Bug compatibility with an unstable VM is not what Portable.net needs as of now …
IMHO these small things come into play when you are being evaluated by a customer. To be a stable product , all this will have to be rewritten … But I think Ximian/Novell will find some customer to fund that …
> To me it seems that DotGNU is more about FSF politics than Mono and
> the DotGNU developers seem to be anti-Microsoft to the extreme.
Ah, interesting FUD … But FYI, I’ll reply
Portable.net was started before Mono , it was past HelloWorld when Mono was announced.
Portable.net developers did contact Ximian for “co-operation” , but were not considered (read GPL , Copyright and item 114 of Mono FAQ) ..
As far us being Anti-Microsoft , yes – DotGNU doesn’t have too many friends inside Microsoft and Rhys was never intereviewed on MSDN . Also Rhys never got any “We won’t sue you for Patents” email from Microsoft.
DotGNU will not buy a license for .NET from Microsoft (GPL won’t allow that).
While Ximian/Novell *might* , if the price is right . (Return on Investment)
So Microsoft has no reasons to be friendly towards DotGNU , OTOH …
This “SCO” like scenario is in the future … if you refuse to see that, call me “Anti-Microsoft”.
Ah, interesting FUD …
Do you actually know what F.U.D. means? People are very quick nowadays to use it even if it does not apply at all. Not every opionion that you may not like is FUD. I am not in the “Mono camp”. I have no hidden agenda. Frankly i believe that the unnecessary hostile attitude that some Linux users have towards other people that are not in their imaginary camp — you even see this among users of different distributions — is very negative for the growth of Linux.
> Do you actually know what F.U.D. means? People are very
> quick nowadays to use it even if it does not apply at all.
> Not every opionion that you may not like is FUD. I am not in
> the “Mono camp”
In case the long reply after that confused you, DotGNU didn’t
come out due to FSF politics… saying it is so is spreading
the rumor ..
It does cause quite a bit of “FUD” in the minds of people
who want to use DotGNU for commercial purposes …
As I wrote in an earlier comment, checking out the wiki is a good idea, and for that Question it’s a good idea, too
http://wiki.dotgnu.org/DotGnuVsMicrosoft
This attitude is very ok for me, but doesn’t reflect the “anti-Microsoft to the extreme” you mentioned.
Also, sometimes win32-only fixes are committed in cvs and there are some people on the dotgnu irc channel who run pnet on cygwin on win32.
I don’t think that you are right with your point.
I was sure that pnet was not able to do anything useful by the time Mono was announced. So I went and downloaded pnet 0.0.6 (July 15) and sure, there is nothing in there in the way of running any code. There is an assembler and pieces of the compiler, but no runtime.
So I regret to inform you that `[pnet] was past HelloWorld when Mono was announced’ is not the case.
I gotta agree with John on this; you guys write nice software, but some of the stuff in links at http://www.dotgnu.org and in the Wiki are totally insane. I’m not quite sure how long it was since the website was updated or someone crawled through the links and checked it for accuracy, but some of stuff there is unnerving; I realize that as a FSF project you’re going to have a serious political bent, but its unnerving to see it on the homepage. Talk more about the software, less politics, please?
Java just works great with linux
I do not see politics here. It’s also ridiculous when people who don’t like opensource movement say that FSF/GNU people are more political oriented. If you are mature than you probably know that politics == business in so many cases. Just take a look how big companies earn monney from “opensource movement”. One of them is Novell, who stays behind Mono project. I respect Mister Miguel de Icaza, people behind Ximian (now Novell), but i would much rather use “buggy” PNET, help it’s developers to fix bugs, contribute, than to help some corporation earn monney.
PNET was reason why I started to learn C# – if there was no PNET (dotGNU project) I would never think about C# and .NET . I like the way they think, I apriciate their commitment, willing to fix problems for us, and most of all I apriciate how they treat JAVA and similar.
Pardon me please, but sounds (to me) little MONOpolistic… Sometimes I think Microsoft should take Ximian, not Novell, but after while I realize – there is no difference between those two companies.
gets so boring listening to people who have too much time and love to mud-sling. The fact is that there is at least a little politics involved no matter who you choose. It might not be a part of *your* motivation but it’s there. I’d like to believe that I can software contributions are appreciated as very generous contributions from the community to the community. Mono doesn’t provide less – it’s not some elitest organization out to “get” DotGNU. They are providing some amazing work that will offer viable options to developers. Yes, it gets a lot of attention – for good reason if you think about it. All that attention isn’t really important to the success of the DotGNU project probably anyway. Doesn’t mean it will stop existing. And, DotGNU offers things that mono doesn’t, like the C compiler (right?). I find it really dilutes the conversation anyhow …
“Pardon me please, but sounds (to me) little MONOpolistic… Sometimes I think Microsoft should take Ximian, not Novell, but after while I realize – there is no difference between those two companies.”
See? This is exactly what I’m talking about. I’m technically agonistic; I don’t care who has what why when or where, as long as its the better technology. Politics shouldn’t even be a factor in software.
Let me stress that again: software, a tool. Much like a monkeywrench or that socket-wrench extension I lost earlier today.
Regarding politics in software I completely agree with you. There are way too many people that get emotional over code. Some people think it’s their god-given right to have source code.
You’re exactly right, software is just a tool like a wrench or a screwdriver. Some of these leftist anti-business open source zealots need to get a clue and a life.
Any mechanical mechanism or chemical formulation in products I use can be freely studied, dissected and analyzed. This qualifies as a ‘God Given Right’. The full behaver of a mechanical system can be determined by such analysis.
The same is NOT TRUE of software. Software is complex enough to contain hidden agendas, catastrophic and almost undetectable flaws and is something that society depends on far more then any specific mechanical technology. Software is increasingly important to the transfer and storage of human thought. The potential for great empowerment or unthinkable repression is in the balance. Software is becoming the DNA of civilization to allow any one organization to have monopolistic control of such technology would mean the end of freedoms to an unimaginable extent. This transcends all politics, academia and independent thinkers.
Microsoft is only the most visible manifestation of this threat. If MS suddenly ‘Sees The Light’ and developed an Apple or IBM type relationship with OSS and the Intellectual Commons it would not mean the end of this threat. A new one would take its place. Only accepting sacrifice, expense and the right to think for one’s self can.
I (and rhysw) have implemented DCOP.
It is implemented by wrapping libICE, not Qt/KDE/libDCOP
So it needs only libICE (which you have if you have X11R6), and DCOPserver running.
It can do any calls to any DCOP objects (while it can’t provide mathods to be called from other apps), it can [de]serialise maybe dozen types (int, Q[C]String[List], QValueList, DCOPRef, serivceResult, bool, void:), which is enough for 80% calls.
Telling konqueror to open URL is ~4 lines of code now.
You’re exactly right, software is just a tool like a wrench or a screwdriver. Some of these leftist anti-business open source zealots need to get a clue and a life.
I’m a DOTGNU developer. I’m not a leftist (hate leftists) and I’m not a communists(hate communists). I’m a capitalist but that doesn’t mean I won’t spend my free time contributing to an OSS project and doing work which I enjoy.
Stop categorising people.
I’ve got both PNET and MONO downloaded and as soon as I can get my PC out of storage, I’ll start using them to learn C# and dotNET.
FYI, I’ve also got Linux Mandrake and FreeBSD on my PC – so my relationship to specific OSes isn’t so much political as it is pragmatic. Ie, Windows won’t let me in on the fun of debugging, so it’s nowhere near as useful as either Linux or the *BSDs. gcc – and now OpenWatcom – is crossplatform, so if I want the most return, I don’t use Microsoft.
By all means, sling off at each other about the strengths and weaknesses of the various technical aspects – keep the personal slanging off to yourselves – the rest of the world doesn’t need to hear about it.
If GNOME and KDE can work together, then so can PNET and MONO – that Microsoft doesn’t want to, is Microsoft’s problem – leave it with them.