Miguel de Icaza Talks About Mono
Matthew Revell writes "Miguel de Icaza defends Mono and talks about its future relationship with the Gnome desktop, in the latest LugRadio.
The leader of the open source implementation of .NET says no one is forced to use Mono but he hopes it will make life easier for open source developers. "
Mono is a great programming tool, I hope that it manages to find its way into mainstream gnome. It shows alot of promise anyway. I do belive that CLIs are the way to go.
he hopes it will make life easier for open source developers.
I thought the problem was that Microsoft told everybody that they didn't have any patents on C# or .NET, but they are actually a licensee of somebody else who has patents on it? Miguel dodged the question on this one by simply stating that it was a reimplementation rather than licensing .NET from Microsoft.
Listening to the audio, the things on the horizon are Windows Forms and incremental improvements (tuning). People are porting applications today, usually you can just copy the binary, but ignorant Windows developers do things like screw up path separators, assume case-insensitive systems, etc.
C# is one of the best ECMA compliant languages today. When used with open source libraries it is a very powerfull developement tool. It is only quasi ilegal when you use the microsoft libraries wich you DON'T need to use.
For rapid application developement under Linux I'll take C# and mono any day.
Cheers,
Adolfo
I've tried Mono, and while I've little desire to move from Python over to Mono, it's a very well done project. The GTK bindings are quite nice, and C# as a language is much, much, much easier to work with than Java.
The big "if" is whether or not Mono can become to popular without Microsoft trying to pull the plug. However, even if that does happen, C# is an ECMA standard. There are plenty of native Linux libraries that can be used in place of the Microsoft classes. For developing GUI applications under Linux, you're not going to use the Windows.Forms libraries anyway, you're going to use GTK. Mono can stand on its own as a good RAD language for developing graphical applications for GNOME.
I know it's fashionable to bash MS at every turn (and as a Mac/Linux user I do all the time), but C# is a nice language and the .NET libraries are infinitely better than the cruft of Win32/MFC and the other mess of libraries that Microsoft used to shove down programmer's throats. Mono has done an excellent job of taking those libraries and making them work on Linux.
Even without the Microsoft libraries, Mono still provides a good framework for RAD under Linux and GNOME. If we can make it as easy as possible to transition between Windows programming and Linux programming it only helps propagate Linux.
I've put the high and low quality recordings of Season 2 Episode 9 - 14 February 2005 in Ogg format up here:
http://www.gobisoft.net/tmp/
Just in case the Slashdot effect takes hold.
Miguel is the lead developer for gnome, and his pet project was creating a .NET framework for linux. It has since grown to be more than a pet, gaining the backing of Novell. It is not the easiest thing to get running on your system, but by far not the hardest.
It needs to be defended for a number of reasons. Linux zealotry (why would people move from Windows if all the software is cross platform?), laguage zealots (IMHO, C# is a nice language to program in, but the java guys scream bloody hell) and people afraid of MS putting the legal smack down on Linux over API issues,just to name a few.
Personally, I think that Miguel's reliance on WINE is a mistake, but we have discussed this here, and it does have immediate benefits for the windows.forms and directX stuff. I know people who are programming frontends on both Windows and Linux, using a combination of the GTK interface and Windows.forms, and they love it.
WINE support was abandoned in favor of their own SWF implementation, and it's been that way for a while in the development releases. They're developing their own implementation because, yes, it makes things less portable and less stable.
Just FYI, the portable.net project has some kind of System.Windows.Forms implementation. Don't know how good it is, though.
Here is Miguel's answer to GNOME becomig depentdant on MONO: http://mail.gnome.org/archives/gnome-hackers/2002- February/msg00031.html
Yes, Mono supports ASP.NET. It has an XSP application (mini ASP.NET webserver), and an apache module mod_mono (basically sends requests to XSP via named pipes). I currently have an ASP.NET website completely run by Apache/Mono, and it works perfectly.
On Linux, you can use the Apache module mod_mono .
It is available on the Mono project's download page.
It allows Apache to serve ASP.NET pages by proxying the requests to a slightly modified version of our XSP called mod-mono-server that is installed along with XSP.
It doesn't work on the Windows version of Apache yet, but work is in progress to make that work, too.
From the Mono's FAQ:
Question 131: Could patents be used to completely disable Mono (either submarine patents filed now, or changes made by Microsoft specifically to create patent problems)?
The controversial elements are the ASP.NET, ADO.NET and Windows.Forms subsets. Those are convenient for people who need full compatibility with the Windows platform, but are not required for the open source Mono platform, nor integration with today's Mono's rich support of Linux.
The patents do not apply in countries where software patents are not allowed.
Hopefully, the patents will fail in the US too; not many applications can be developed without ASP.NET, ADO.NET and Windows.Forms packages.
GTK is a C API. If you don't like it, use a binding such as gtkmm or wxWidgets. Basically it can live underneath any API you care for it.
It's good but many apps end up PInvoking Win32 because Windows.Forms doesn't do something they need. Thus it isn't that portable. Even a full implementation of Windows.Forms won't do you much good for a program that makes a single call to Win32, or which drags in some "safe" C++ compiled native DLL. But getting back to Windows.Forms, it exposes some particularly non-portable things such as WndProc, windows messages etc.
The CLR & core are architecturally cleaner, but Java kicks seven shades of shit out of
I'm in no doubt that Mono is a good thing, but neither .NET nor Mono offer anything remotely as compelling as Java at the moment at least in the enterprise domain. Let's see Mono go through a birth of fire on the desktop first.
Speaking of which, I see a lot of potential there (after all half the system tools in most dists are python / perl etc. with bindings). But Mono really has to start encouraging people other than Linux users to use the open source stack - even .NET users. That means producing an installer containing the stack with some wizards & designers so that Visual Studio .NET users can use them with ease.
Gtk# on Windows uses the UXTheme API, which will
make Gtk+ look like every other app on the system.
The feel in Gtk+/Win32 is already emulating the
host OS, so you get both look and feel.
From what I understand, .NET is an ECMA standard. This can be verified here: http://msdn.microsoft.com/net/ecma/. They even post a C# specification, so really anyone with the talent can implement it.
.Net (aprox.) is Microsoft property.
Perhaps you should read your own link. Only C# and CLI are ECMA approved standard. The other 80% of
"I think this line is mostly filler"
Hello,
You are wrong, Microsoft has not done anything
to prevent code from running on Mono.
There is the real problem that we do not
implement all the class libraries, specially those
that are being phased out like EnterpriseServices
and Message Queuing. But then again, those are
really marginal tools which were complex to use,
so its not really a problem.
The other bit is COM support, which we do not
support as there is really no "COM" to talk to
in Unix anyways.
Miguel.
Hey,
Small correction: C# and the CLI have both
been approved as ISO standards: ISO/IEC 23270 (C#), ISO/IEC 23271 (CLI) and ISO/IEC 23272 (CLI TR).
Well, in its current state, Mono is free - afaik, its based on recognised ISO standards which are protected from lawsuits. Unfortunately, Miguel doesn't seem to want to stop there, and also wants to invade things like windows.forms which are outside of the CLR and into pure-MS domain.
From the licensing FAQ section of Mono's own website:
.NET Framework is divided in two parts: the ECMA/ISO covered technologies and the other technologies developed on top of it like ADO.NET, ASP.NET and Windows.Forms.
.NET Framework, and what has been patented by Microsoft falls under the ECMA/ISO submission. Jim Miller at Microsoft has made a statement on the patents covering ISO/ECMA, (he is one of the inventors listed in the patent): here.
.NET Framework?
.NET Framework, as well as plenty of class libraries that are either UNIX specific, Gnome specific, or that are not part of the .NET Framework but people find useful.
"Question 131: Could patents be used to completely disable Mono (either submarine patents filed now, or changes made by Microsoft specifically to create patent problems)?
First some background information.
The
Mono implements the ECMA/ISO covered parts, as well as being a project that aims to implement the higher level blocks like ASP.NET, ADO.NET and Windows.Forms.
The Mono project has gone beyond both of those components and has developed and integrated third party class libraries, the most important being: Debugging APIs, integration with the Gnome platform (Accessibility, Pango rendering, Gdk/Gtk, Glade, GnomeUI), Mozilla, OpenGL, extensive database support (Microsoft only supports a couple of providers out of the box, while Mono has support for 11 different providers), our POSIX integration libraries and finally the embedded API (used to add scripting to applications and host the CLI, or for example as an embedded runtime in Apache).
The core of the
Basically a grant is given to anyone who want to implement those components for free and for any purpose.
The controversial elements are the ASP.NET, ADO.NET and Windows.Forms subsets. Those are convenient for people who need full compatibility with the Windows platform, but are not required for the open source Mono platform, nor integration with today's Mono's rich support of Linux.
The Mono strategy for dealing with these technologies is as follows: (1) work around the patent by using a different implementation technique that retains the API, but changes the mechanism; if that is not possible, we would (2) remove the pieces of code that were covered by those patents, and also (3) find prior art that would render the patent useless.
Not providing a patented capability would weaken the interoperability, but it would still provide the free software / open source software community with good development tools, which is the primary reason for developing Mono.
The patents do not apply in countries where software patents are not allowed.
For Linux server and desktop development, we only need the ECMA components, and things that we have developed (like Gtk#) or Apache integration.
Question 132: Is Mono only an implementation of the
Mono implements both the
Credits"
Additionally, I don't see any objections to Java being used in the Linux world. And yet:
- Both are backed by software giants
- Both companies have traditionally been fiercely proprietary
- Both of them offer a new language/platform.
- While C# is now an ECMA standard, Java is still architected by Sun's engineers (even though Sun can claim that they have a "community" process
for extending the language/specs)
- Both have patents of various aspects of the implementation.
- Both have proprietary implementations in the market.
- Both have evangelists eager to win converts to the new platform.
- Both the corporations are profit driven.
So why is Java okay?
Perhaps you should read your own link. Only C# and CLI are ECMA approved standard. The other 80% of .Net (aprox.) is Microsoft property.
.NET: it's where Novell sees money coming in, and it's there for people to port applications from Windows to Linux. But it's not what most Mono developers are going to be developing in.
.NET and gets by with ECMA C#.
And perhaps you should read a bit more about Mono: Mono comes with two sets of APIs.
One set is a reimplementation of
The other set is a binding of C# to existing Linux open source tools (Gtk+, Gnome, etc.). That's the set that most open source developers are going to be using. It doesn't rely on
The infrastructure itself is not, the existing
API is.
The new API is part of Indigo.
Whatever are you smoking? Perhaps you're just stating your own bias while trying to pass off some generalization without any proof.
In the Gnome camp, Mono as well as traditional Gtk/C, python and ruby coders are getting along rather peachilly. Because of Mono, there are several more apps for Gnome that otherwise wouldn't have been there. If you read the PlanetGnome blogs, you wouldn't see any split whatsoever.
It really is pathetic seeing people like you spread FUD because there's a project you don't like instead of actually trying to work with people who've nothing but the best interests at heart.