This is one of the best.NET books, the first of a series of pretty good books, by those involved deeply with the framework.
This book covers the technicalities in the.NET framework, and is of special interest if you are interested in the advanced features of the Common Language Runtime like method interception, transparent proxies, application domains and metadata.
Compiler writers, framework developers and those who need to get the most out of the framework will be interested in this title.
I can not recommend this book enough. Don has done a fantastic job. It helped the Mono developers understand the low-level technical features of the framework.
Very good observation, you have now mastered google.
Emacs also does web browsing, but most people will probably choose Mozilla to read slashdot for various reasons: easier to use, easier learning curve, and way better rendering of the information than Emacs can do.
Well, we always said we would implement the whole.NET Framework. The C# compiler, CLI and core class libraries are just a step in that direction.
There are two versions of Windows.Forms: one uses Gtk# and another one uses Wine for its implementation. The differences are covered in our FAQ and on our Winforms page. The wine version is there for those who want complete compatibility with their GUI apps developed on Windows.
If you are willing to live without overriding the WndProc method in the Control class, you can safely stick to the Gtk#-based implementation.
IKVM is a JIT compiler for JVM to.NET code. So there is no emulator involved, it just JITs from JVM to CIL bytecodes, and then Mono JITs the CIL bytecodes into native x86 code.
What this shows is two things: the maturity of the IKVM JITer and the maturity of the Mono runtime as it is able to host this technologically advanced VM to run a large and complex application.
IKVM also helps bridge the two worlds: Java and CIL. Your Java code can then be loaded and used by CIL applications (C#, VB, etc) all running together.
What you describe was in the minds of a lot of people in the Gnome world back in 2001. There was a project by Havoc and Owen called "The Hub", which was aiming at creating an object Hub for all the different object systems. Allowing everyone to talk to each other.
Then Microsoft published the.NET Framework, which many of us see as a "hub" for object integration: integrate old apis through P/Invoke or runtime support. Languages like C++ are supported directly through native compilers, and a common set of rules helps other compilers generate code that interoperates.
Look at http://www.go-mono.com/rationale.html for some of the early motivations for the project.
Today there are nice bridges for Perl and Python that allow them to consume objects from.NET.
Regarding the patent of the ISO/ECMA documents, you might want to read what Jim Miller (one of the inventors listed in the patent said): here.
I quote:
Beppe,
As one of the inventors on that patent as well as the person heading up the standardization efforts for the CLI, I'd like to explain why I've never felt the two are in conflict.
The ECMA process requires that all patents held by member companies that are essential for implementing its standards are available under "reasonable and non-discriminatory (RAND) terms" for the purpose of implementing those Standards. This is the normal condition used in all International Standards organizations, including both ECMA and ISO.
But Microsoft (and our co-sponsors, Intel and Hewlett-Packard) went further and have agreed that our patents essential to implementing C# and CLI will be available on a "royalty-free and otherwise RAND" basis for this purpose.
Furthermore, our release of the Rotor source code base with a specific license on its use gives wide use to our patents for a particular (non-commercial) purpose, and as we explicitly state we are open to additional licenses for other purposes.
Those particular components that you mention (Type) are part of the ECMA and ISO standard efforts.
So in fact the submission covers C#, a set of base class libraries and a potential execution environment (you can compile to native code if you choose instead)
The dialog boxes might have less configuration options, but you can still get to the configuration by changing manually the configuration options.
It is `registry like' in that there is a unified place where you can make changes, and there is a notification system, but unlike the Windows registry the data is not stored in a single binary file, but in a set of separate XML files (in the default shipment, you could write your SQL-based provider if you want).
Gnome has equivalent components: Bonobo for components, CORBA for RPC, Gnome-VFS for an IO-abstraction and so on.
Anyways, read the quote from Havoc in the main thread, it is I think a very good overview of where GNOME stands today. And all of our libraries are LGPL, which is good as you point out.
ORBit is one of many open source implementations of CORBA.
Bonobo is a set of interfaces ("contracts" if you will) to create compound-document applications and reusing "controls".
D-BUS is a system-bus, more along the lines of Tooltalk than anything else. Its a broadcast system.
I can not comment on the other parts, because, for the most part they are entirely peripheral. As I said before, I am involved in another project that I believe stronly in. And I get to choose what I get to work on. If you are unhappy with what I do, and would like to see more work on Gnome, now is your chance to step up and contribute.
Gnome is usable for anyday users. In fact, GNOME the desktop of Linex just received a prize for best end-user distribution (see the news on barrapunto.com). Linex is being used by non-computer savy people on Extremadura, Spain. A very large deployment. See the coverage that the Washington Post did on it.
It is more complicated than `wrapping' gtk#, the whole effort has two prongs:
* Easy path: gives best desktop integration, but can not emulate 100% correctly Windows.Forms: wrapping Gtk# (you will see this on the Gtk Windows.Forms namespace).
* Hard path: fully compliant Windows.Form binding, using Winelib to implement the Windows.Form event model and allowing for P/Invoking into native code.
Both paths are being pursued by two different teams, but I am sure they could use more contributors.
Those of you that read my entire mail to desktop-devel-list will notice that I could only find three places where GNOME was behind KDE:
Build is complicated.
Some people were under the *wrong* impression that GNOME was slower than KDE. Later on, we benchmarked both, and noticed that GNOME is faster, and smaller than KDE (GNOME 2.2 vs KDE 3.1). So that is not really an issue, but a bad reputation we had from GNOME 1.4
Integrated file manager/browser. This one is the only thing that people have repeatedly said they find confusing about GNOME.
Notice that the first one is something that I suggest might be fixed by `jhbuild' or any of the other programs.
And the last one is not the end of the world (as Havoc points out in his reply, Konqueror is confusing to newcomers as well).
It is not the end of the world, because MacOS X people do not seem to have a problem distinguishing file management from web browsing.
Using my e-mail as proof of lagging is not a proof of a very strong point really. Considering I spend most of my time writing Mono code, and gloating over how fast I can build applications with Gtk# is (I love Gtk#, Pango and all the new and lovely platform in Gnome 2.2 which we get to use with extreme efficiency from C# now).
Btw, my latest toy, 300 lines of C# code, a new list-widget for say a mail program, like maybe, say, evolution: here.
The beauty: it took me four hours to write the whole widget, and it takes a fraction of a second to load and render 10,000 messages from my Inbox.
Mono, Gnome and Gtk# are a very powerful platform.
I am against the killing of innocent civilians, and the military and the public relations for the military are experts in spinning massacres into `collateral damage' and `mistakes'.
I have given a lot of thought about the issue of whether I want the military of any nation to use the software I create to mutilate the lives of other people. I obviously do not want this, and I would love to have a debate about having a software license that explicitly forbids this use.
As the previous poster pointed out, once you go down this path, some people might not like X, or Y, and impose further restrictions, but this is not too different from where we are today.
There is a line to be drawn, and I would very much like to hear people's opinions on what is an acceptable line to draw, and where to draw it.
As you might expect, I consider the war being promoted against Iraq to be immoral. The spin for this war has gone through a number of phases, and it has yet to click. Alarming how easily the population can be manipulated through fear.
It is not an alternative to Chillisoft ASP, it is more of a complement.
Chillisoft ASP implements the old ASP system for Unix systems. ASP.NET is radically different from ASP, pretty much the only thing they share is the name and the fact that they are web-related technologies.
ASP.NET was originally a project inside Microsoft by a few guys that wanted to do ASP-like systems "right", and they called this system XSP. Later marketing came and figured `The right name for this technology is to reuse the old name, and stick a.NET at the end'. So they did.
So if you have systems that you want to move to Unix/Linux that currently use ASP, you will go for Chillisoft. If you have systems that you want to move to Linux/Unix that use ASP.NET you go with Mono.
ASP developers do have to learn this new technology, as it has almost no relationship with the old platform.
Miguel.
Re:This is great and all but I have 1 BIG question
on
Mono Ships ASP.NET server
·
· Score: 3, Informative
You will be glad to know that we are busily working on a version of Gnome2, but since Gnome2 is very good on its own, we wanted to make sure that there was a reason for people to upgrade to Ximian's version, so we are spending quite some time in addressing the needs from our users.
The wait will be worth it. I can not talk about release dates. I can tell you that a number of previews has been sent to alpha testers for evaluation, and we will have to incorporate their feedback before we are ready to release the new version.
Now the right person to talk about these things is Nat Friedman who is in charge of the desktop work. He has quite a few new tricks for the new release, but I wont spoil his debuting new desktop here;-)
Bonobo is just a set of CORBA interfaces, it still requires an underlying implementation of CORBA to communicate (In GNOME this is called "ORBit").
I have been trying to get people interested in writing a CORBA implementation, but those interested are too busy with school or with other projects. Eventually we will get around doing a CORBA implementation for.NET and Mono.
In the meantime a lot can be achieved by just "wrapping" Bonobo and CORBA as you pointed out with the Python example.
It will actually not use all of Gtk, it would only use the Gtk theme drawing functions.
Gtk does not have strings attached for commercial developers like Qt does, there is no requirement for an upfront payment of a license to use the toolkit like there is for Qt for commercial application development.
Since the rendering has to be abstracted anyways, people could provide a Qt backend.
The license of the new JIT will be LGPL, just like the current one. We are keeping the same runtime, io-layer, threading, and GC in Mono. The only bit that will change is the JIT compiler.
Now, just like the current JIT, we do require copyright assignments to the runtime code base, and we do in fact relicense the runtime to those who are interested in it, but the LGPL version will always be available.
It wont be directly Wine, but WineLib, and it is possible to run your WineLib applications on other non-x86 platforms.
Regarding MacOS X: our plan is also to provide patches to the Wine guys so that Wine renders its widgets using the right toolkit. So in MacOS it will use Cocoa, and on Unix Gtk.
Another good news is that Kylix.NET compiled applications seems to be working on Mono without problems.
This is one of the best .NET books, the first of a series of pretty good books, by those involved deeply with the framework.
.NET framework, and is of special interest if you are interested in the advanced features of the Common Language Runtime like method interception, transparent proxies, application domains and metadata.
This book covers the technicalities in the
Compiler writers, framework developers and those who need to get the most out of the framework will be interested in this title.
I can not recommend this book enough. Don has done a fantastic job. It helped the Mono developers understand the low-level technical features of the framework.
Miguel.
Very good observation, you have now mastered google.
Emacs also does web browsing, but most people will probably choose Mozilla to read slashdot for various reasons: easier to use, easier learning curve, and way better rendering of the information than Emacs can do.
Miguel.
No, I didnt.
Miguel.
Well, we always said we would implement the whole .NET Framework. The C# compiler, CLI and core class libraries are just a step in that direction.
There are two versions of Windows.Forms: one uses Gtk# and another one uses Wine for its implementation. The differences are covered in our FAQ and on our Winforms page. The wine version is there for those who want complete compatibility with their GUI apps developed on Windows.
If you are willing to live without overriding the WndProc method in the Control class, you can safely stick to the Gtk#-based implementation.
Miguel
IKVM is a JIT compiler for JVM to .NET code. So there is no emulator involved, it just JITs from JVM to CIL bytecodes, and then Mono JITs the CIL bytecodes into native x86 code.
What this shows is two things: the maturity of the IKVM JITer and the maturity of the Mono runtime as it is able to host this technologically advanced VM to run a large and complex application.
IKVM also helps bridge the two worlds: Java and CIL. Your Java code can then be loaded and used by CIL applications (C#, VB, etc) all running together.
Miguel.
What you describe was in the minds of a lot of people in the Gnome world back in 2001. There was a project by Havoc and Owen called "The Hub", which was aiming at creating an object Hub for all the different object systems. Allowing everyone to talk to each other.
.NET Framework, which many of us see as a "hub" for object integration: integrate old apis through P/Invoke or runtime support. Languages like C++ are supported directly through native compilers, and a common set of rules helps other compilers generate code that interoperates.
.NET.
Then Microsoft published the
Look at http://www.go-mono.com/rationale.html for some of the early motivations for the project.
Today there are nice bridges for Perl and Python that allow them to consume objects from
Miguel.
Microsoft's shared source implementation works on FreeBSD and MacOS X. It has been ported by third parties to Linux.
On the positive side, there is this kick-ass project called Mono that implements it, and runs on a variety of other systems as well.
I quote:
Those particular components that you mention (Type) are part of the ECMA and ISO standard efforts.
So in fact the submission covers C#, a set of base class libraries and a potential execution environment (you can compile to native code if you choose instead)
Miguel
The `Miguel de Icaza' account is an impersonator, I do not know who it is. And his views have nothing to do with mine.
This is a shame, because that person has been flaming everywhere.
The slashdot admins have said that they can not do anything about it.
Miguel.
The dialog boxes might have less configuration options, but you can still get to the configuration by changing manually the configuration options.
It is `registry like' in that there is a unified place where you can make changes, and there is a notification system, but unlike the Windows registry the data is not stored in a single binary file, but in a set of separate XML files (in the default shipment, you could write your SQL-based provider if you want).
Gnome has equivalent components: Bonobo for components, CORBA for RPC, Gnome-VFS for an IO-abstraction and so on.
Anyways, read the quote from Havoc in the main thread, it is I think a very good overview of where GNOME stands today. And all of our libraries are LGPL, which is good as you point out.
Miguel.
Let me explain to you:
I can not comment on the other parts, because, for the most part they are entirely peripheral. As I said before, I am involved in another project that I believe stronly in. And I get to choose what I get to work on. If you are unhappy with what I do, and would like to see more work on Gnome, now is your chance to step up and contribute.
Gnome is usable for anyday users. In fact, GNOME the desktop of Linex just received a prize for best end-user distribution (see the news on barrapunto.com). Linex is being used by non-computer savy people on Extremadura, Spain. A very large deployment. See the coverage that the Washington Post did on it.
Love,
Miguel.
Miguel.
I would love to know who this company is, and talk to them. If you can, drop me an email (miguel@ximian.com).
Sorry for posting in public, but I did not find your email address.
Miguel
Sure, read the rationale here for the code:
r p- list/2003-March/001247.html
http://lists.ximian.com/archives/public/gtk-sha
Miguel.
There is a new Gtk theme engine that lets Gtk track the look of Windows (both XP and pre-XP systems).
The feel should already be the same by default.
Miguel.
It is more complicated than `wrapping' gtk#, the whole effort has two prongs:
* Easy path: gives best desktop integration, but can not emulate 100% correctly Windows.Forms: wrapping Gtk# (you will see this on the Gtk Windows.Forms namespace).
* Hard path: fully compliant Windows.Form binding, using Winelib to implement the Windows.Form event model and allowing for P/Invoking into native code.
Both paths are being pursued by two different teams, but I am sure they could use more contributors.
Miguel.
Notice that the first one is something that I suggest might be fixed by `jhbuild' or any of the other programs.
And the last one is not the end of the world (as Havoc points out in his reply, Konqueror is confusing to newcomers as well).
It is not the end of the world, because MacOS X people do not seem to have a problem distinguishing file management from web browsing.
Using my e-mail as proof of lagging is not a proof of a very strong point really. Considering I spend most of my time writing Mono code, and gloating over how fast I can build applications with Gtk# is (I love Gtk#, Pango and all the new and lovely platform in Gnome 2.2 which we get to use with extreme efficiency from C# now).
Btw, my latest toy, 300 lines of C# code, a new list-widget for say a mail program, like maybe, say, evolution: here.
The beauty: it took me four hours to write the whole widget, and it takes a fraction of a second to load and render 10,000 messages from my Inbox.
Mono, Gnome and Gtk# are a very powerful platform.
Love,
Miguel.
I am against the killing of innocent civilians, and the military and the public relations for the military are experts in spinning massacres into `collateral damage' and `mistakes'.
I have given a lot of thought about the issue of whether I want the military of any nation to use the software I create to mutilate the lives of other people. I obviously do not want this, and I would love to have a debate about having a software license that explicitly forbids this use.
As the previous poster pointed out, once you go down this path, some people might not like X, or Y, and impose further restrictions, but this is not too different from where we are today.
There is a line to be drawn, and I would very much like to hear people's opinions on what is an acceptable line to draw, and where to draw it.
As you might expect, I consider the war being promoted against Iraq to be immoral. The spin for this war has gone through a number of phases, and it has yet to click. Alarming how easily the population can be manipulated through fear.
Miguel.
I am puzzled that a project rename would generate 298 posts in Slashdot. I guess everyone had an opinion.
It is not an alternative to Chillisoft ASP, it is more of a complement.
.NET at the end'. So they did.
Chillisoft ASP implements the old ASP system for Unix systems. ASP.NET is radically different from ASP, pretty much the only thing they share is the name and the fact that they are web-related technologies.
ASP.NET was originally a project inside Microsoft by a few guys that wanted to do ASP-like systems "right", and they called this system XSP. Later marketing came and figured `The right name for this technology is to reuse the old name, and stick a
So if you have systems that you want to move to Unix/Linux that currently use ASP, you will go for Chillisoft. If you have systems that you want to move to Linux/Unix that use ASP.NET you go with Mono.
ASP developers do have to learn this new technology, as it has almost no relationship with the old platform.
Miguel.
You will be glad to know that we are busily working on a version of Gnome2, but since Gnome2 is very good on its own, we wanted to make sure that there was a reason for people to upgrade to Ximian's version, so we are spending quite some time in addressing the needs from our users.
;-)
The wait will be worth it. I can not talk about release dates. I can tell you that a number of previews has been sent to alpha testers for evaluation, and we will have to incorporate their feedback before we are ready to release the new version.
Now the right person to talk about these things is Nat Friedman who is in charge of the desktop work. He has quite a few new tricks for the new release, but I wont spoil his debuting new desktop here
miguel.
Bonobo is just a set of CORBA interfaces, it still requires an underlying implementation of CORBA to communicate (In GNOME this is called "ORBit").
.NET and Mono.
I have been trying to get people interested in writing a CORBA implementation, but those interested are too busy with school or with other projects. Eventually we will get around doing a CORBA implementation for
In the meantime a lot can be achieved by just "wrapping" Bonobo and CORBA as you pointed out with the Python example.
Miguel
It will actually not use all of Gtk, it would only use the Gtk theme drawing functions.
Gtk does not have strings attached for commercial developers like Qt does, there is no requirement for an upfront payment of a license to use the toolkit like there is for Qt for commercial application development.
Since the rendering has to be abstracted anyways, people could provide a Qt backend.
Miguel
The license of the new JIT will be LGPL, just like the current one. We are keeping the same runtime, io-layer, threading, and GC in Mono. The only bit that will change is the JIT compiler.
Now, just like the current JIT, we do require copyright assignments to the runtime code base, and we do in fact relicense the runtime to those who are interested in it, but the LGPL version will always be available.
Miguel
It wont be directly Wine, but WineLib, and it is possible to run your WineLib applications on other non-x86 platforms.
Regarding MacOS X: our plan is also to provide patches to the Wine guys so that Wine renders its widgets using the right toolkit. So in MacOS it will use Cocoa, and on Unix Gtk.
Another good news is that Kylix.NET compiled applications seems to be working on Mono without problems.
Miguel