Miguel de Icaza Explains How To "Get" Mono
LeninZhiv writes "It's perhaps the most controversial project in the open source world, but this mostly stems from misunderstanding: Mono, the open source development platform based upon Microsoft's .NET framework. Immediate reactions from many dubious Linux developers have ranged from confusion over its connection with .NET to wondering what the benefits of developing under it are. Throughout the course of its four years of intense development, sponsored by Novell, Mono founder Miguel de Icaza has had to frequently clarify the .NET issue and sell the community on it. In this new interview, Howard Wen asks Miguel to explain himself one more time."
Rather than continuing to de Icaza drone on and on trying to vindicate his project again, is there anyone here who has actually USED Mono and has something to say about it one way or another? Particularly interesting issues:
.NET C#
- Mono Vs C++
- Mono Vs
- Mono compatibility claims
Insight from some USERS would probably be more beneficial now than more bickering over what Mono is or whether it should even be.
Alito: A vote for Alito is a punch in the eye to put that bitch back in her place!
It seems rather unfair to call those developers who do not support Mono "dubious". Surely it would be better to say they are "sceptical".
I think Miguel is doing all of this because he feels that .NET will be the future of doing things. I remember a few years back all of those MS people having cosmic orgasms over .NET, even though nobody really knew what the hell is was.
Maybe Miguel knows something we all don't?
IGB: More fun than eating oatmeal!
Just like I don't see the point in using .NET, why would I be using Mono instead?
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
It's called portability... The .NET framework is, in my mind, an excellent idea, so why not copy the best bits while leaving out the bad.
C# for example...
C# is a much faster implementation of (basically) Java, removing the loadtime of the JVM which everyone on /. seems to hate so much!
Couple this with the ability to use the right language for the job in all circumstances (for example "C# is overkill for this, lets use Perl instead) and I think that Mono a step in the right direction when it comes to ease of coding and portability.
My Site, My Life
How would a new VM architecture be useful? What do you imagine it would be capable of that .NET is not? How much use would such an architecture get when it has no compatibility with anything else in the world? Why does Microsoft get slammed for creating a new proprietary technology and calling it 'innovating' while Open Source projects that reuse existing systems are slammed for not 'innovating'? How quickly do you think a VM as complete, efficient, and powerful as Mono's could have be written if they didn't have the Microsoft CLR to target during development (it was a year or two before Mono was self-hosting, yet during those initial years it was still developed at breakneck speeds) ?
The whole point of implementing a standard is to copy.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
I know that .NET has never been horribly well understood (even by .NET developers) because of the marketing mess MS came up with, but Mono is a VERY good thing.
.NET framework (a great technology) was perhaps one of the most dangerous weapons against Linux. Very powerful, and makes things VERY easy. So developers of Windows applications will move to .NET framework (where before .NET framework more and more Windows developers were looking at Java, etc) and BAM these developers (and their software) are again locked into Windows. So Windows will remain domainant since its so easy to get applications for.
.NET (wait for it) have also just learned what they need to develop for MONO (Linux). The millions of software titles which will be developed in .NET (wait for it), can now be fairly easily ported to Linux. So most of those products won't be F/OSS, big deal if it makes software companies jobs of porting their propietary software to Linux easier thats all we need! Once such software exists on Linux, may be I can suggest Linux to non-tech family and friends. Until then I know Windows is better for them as they cannot tell a line of code from a line of anceint san-script. They just want a huge variety of software to choose from.
This is especially GREAT for those Linux lovers out there. Linux has MANY advantages over Windows, but for the most part this doesn't matter (sorry talking about desktops here not servers). Yes, lots of techies have jumped on board but that is pretty much a spec on the radar. For Linux (or any OS) to make real gains (especially in desktop) there needs to be HUGE 3-rd party software market for the OS. We need video editing, tax, accounting, etc, etc, etc. And this means broad developer support.
This is where MS has always had a huge advantage. For good or bad, it has always been VERY easy to develop applications for Windows. In my opinion the
Enter MONO. Yes, it a copy of a MS technology and we all hate MS so we think its bad. ITS NOT!!!!! This is great! Those millions of Windows developers who move to
OK I've go on too long, but MONO is GREAT!!! It can only help the Linux (F/OSS) community even if it is a port of evil (MS) technology.
This is where Mono comes in.
"reality has a well-known liberal bias" - Steven Colbert
C#, like Java, was designed to solve problems we don't have in the Free Software world. The compromises that are designed into the language make it, like Java, inherently less useful for Free Software than languages designed purely for performance and expressiveness. The haste with which it, like Java, was cobbled up make it poorly suited to describing what we want done with our machines. We don't need to "write once, run hardly anywhere"; we already build and run wherever we like.
I don't have a Java VM on my hosts, and I don't see any reason to saddle them with a Mono VM, or VMs, either. The only Java program I have found a need or desire to run (pdftk, a PDF toolkit) runs (as well as any Java program can) as a native binary compiled with Gcj. A C# front-end to Gcc might have some value for compiling programs so unwisely written in that language, but a bytecode interpreter seems just silly.
We already have a powerful, mature, and efficient language, proven effective for myriad successful Free Software projects. It's called C++. It integrates so well with Free Software systems that nobody even needs to know that they are running a C++ program. Murray Cummings has stepped up and produced well-packaged C++ library bindings for all of GTK and Gnome components, so it is easy to use for writing Gnome applications.
Miguel's unhappy experience with Microsoft's buggy pre-standard compiler (mislabeled "C++") has unfortunately led him astray. We need not be similarly misled.
No, I'm not flaming - even Paul Grapham doesn't push Lisp as much as this mono geek. Get over it man, we don't all HAVE to use mono.
C# and the .NET Framework *are* powerful and *do* provide things nothing else does in quite the same way. This guy shouldn't be trying to explain it to us so we can "get" the Mono project. He should be asking "How come you guys are so hung up on your religion that you question this so much?"
So if I understand tfa, the main benefit of using .Net is because it has automatic memory management? Because it cuts down on developer time, bugs, etc?
I mean, big fucking deal. I'd rather not use another development platform that's just a wanna-be LISP dialect with a bunch of new libraries to learn.
For god's sakes, can everyone just please get over their small-dick big-dick contest and use a LISP dialect? It's only been around for 50 years... with automatic memory management, the whole deal. You'll write code 10x faster than if you used C++....
I have to say, while C# is an ok language I just don't see the point of having mono without .net. Its going to drive developers to window (where the best tools /standard implimentation is).
The Open Source Community has no lack of projects for developers (gcc/vi/emacs/apache foundation).
Linux clearly needs better developemnt tools and more developers working on these unglamorous development tools. Projects like eclipse give me hope the first class development tools are comming to opensource. I fear C# even with Novell's $, is never going to be up to snuff with the ms version, always chasing, not living up to the write once run anywhere hope.
And with so many projects in need of help (gjc/ parrot(perl6)/gnustep) do we need more?
This reminds me of the disaster that is the dual GTK/KDE (QT) desktop libraries thats really put linux destop development in a crappy place. People really do want to cut and paste across applications, and not worry about 2 or more sets of windowing libraries. I know you can run a GTK app on KDE, but it doesn't seem to make for an easy end user experience. Its not bad to have multiple items, but at some point a winner should be clear, and everyone should move on (not linger like the dvd+/dvd- standard where the solution is to have dual format drives.)
Having seen some of the new Apple API's development stuff, I was blown away but what a company with a vision can do to leverage open source for development.
First, release a C# compiler for linux. If you can get developers to user C# that compiles to native code so that it's not dependant on the CLR, then you can introduce the cross-platform aspects of it.
While I agree that it would be nice to do away with the overhead consumed by the virtual machine, I was always under the impression that [with maybe a few exceptions*] the creation of a compiler for a language is relatively trivial.
The thing that makes these virtual machine languages so powerful [and the thing that makes them so appealing to the marketplace] is not that nonsense about "compile once, run anywhere" [which, as I understand it, has largely proved to be a fraud], but rather the feature-richness of their libraries: So much stuff has been written into the libraries that the application programmer's job devolves into not much more than providing a little glue to hold together the specific library calls that his project needs [i.e. it's foolish to reinvent the kitchen sink if it's already been invented for you].
*One instance where I've heard that the compiler end of the thing is rather impressive is javac's handling of multithreading logic.
It's not just "another VM".
.NET now. That's a lot of applications, and especially, vertical market applications.
.NET with a commitment to maintain only "100% managed code". What does this mean?
It's the VM that right now thousands of software vendors are writing against.
Virtually of MS's ISVs are writing against
As these next batch of applications gets out to the market and Mono continues to mature, you will see that a Linux desktop can be an excellent companion to a corporate or small business setting.
My wife works in the medical field. The software vendor they support are porting their Windows app to
It means that when released it will, very likely, run without any modification on Mono, and therefore Linux, and probably someday Mac OSX.
That's huge.
Someone wake me up when:
- Microsoft gives us permission to use the copywritten/trademarked parts of
.Net not covered by the ECMA specs.
- Microsoft gives us permission to use the copywritten/trademarked parts of
.Net that are covered by the ECMA specs.
- Microsoft assures us that they will not deviate from the ECMA specification for the platform like they did with ECMAscript (Javascript)
- .Net offers anywhere near the same enterprise library support as Java and has the backing of a number of companies that aren't Microsoft
I'm sorry to be a party-pooper, but these are still real issues. Ignoring them doesn't make them go away. You are talking about a technology that is legally locked up by a company that HATES the open-source community and phenomenon. Living under the thumb of someone that hates you is not something I would relish.I'm hearing all sorts of things here about how great Mono is, and how it's going to let all those new Windows apps run unmodified on Linux, as if it's the new WINE. Great, but how many Windows ISV's care about Linux? The ones I've met do not. And that means they're going to make use of every Windows-only API (sorry ... "assembly") that Microsoft throws at them.
Welcome back to the moving target that's plagued WINE for more than a decade. Once they get Windows.Forms up and running, Microsoft will come up with some "must have" new API that the ISV's will start using. Maybe it'll be Avalon, who knows.
Mono makes it possible to write cross-platform apps that don't need to be recompiled (linking to Qt# or GTK# for example) but don't count on Mono being the magic bullet that suddenly makes an entire generation of Windows software run on Linux. Microsoft isn't that stupid.
Tired of FB/Google censorship? Visit UNCENSORED!
... because we make the "copy" better, more secure and add more features all while adhereing to open, published standards.
...
Take http://www.spreadfirefox.com/, which is the Firefox webbrowser, for example. This piece of software is hardly new in the sense of being first of its kind, and yes it "copies" the same basic functionality that IE does (and IE copies from Mosaic - check out help->About Internet Explorer, it says clearly "Based on NCSA Mosaic."), but just because someone else invented the wheel doesn't mean we can't use it or make our own, or a better one.
And don't get me started on innovation. As a matter of fact FOSS has already beaten the mighty M$ to a better desktop search (Beagel http://www.gnome.org/projects/beagle/ vs. WinFS - though I will admit I can't quite predict what WinFS will be like IF it ever gets released or if the 2 are even comparable).
Oh, and we are creating new virtual machine architectures[VMA] (XEN http://www.xensource.com/ for example? Again, not sure if that is what you meant with VMA) and new visual interfaces (check out http://cairographics.org/introduction/ for Cairo, which may beat M$ again to the finish-line).
And while M$ buys 90% of the time the technology or licenses it, FOSS actually does develop their stuf from scratch.
Rehashing what's been done before and then claim we do not have freedom to do what we want to do. Interesting. I am not quite sure where these 2 opinions intersect to make sense. Please explain yourself further
All in all I think you are way of mark, Microsoft-Fanboy!
After reading the article, I was disappointed in how Miguel danced around the whole patent issue. This is one of the biggest issues surrounding using Mono for actual commercial development, but he really doesn't ease concerns by saying "no problems...yet".
The Mono Project could convert a lot of folks by directly dealing with the patent issue and the fear that Microsoft will eventually lay the smack down. Tell me *why* my company can feel comfortable using Mono for commercial development...or I'll go elsewhere.
I see all sorts of comments about "Why do I need that if I'm running Linux? I'll just write my code in C/C++ and compile natively!" Basically most of the people here lack the ability to step back and see this from a much wider perspective. Mono isn't so much here to help the existing Linux developers develop under Linux better, but to allow Windows developers and Windows software companies to (more) easily make the transition to Linux.
.NET code when moving between platforms, but compared to the rewrites that are often necessary with other languages, the time investment is minimal. With Mono you can pretty quickly move your app from Windows, to Linux, to MacOS.
Sure, you still have to rework parts of your
Mono (to me) is more of an outreach project, a bridge like WINE or Cedega to the Windows world. It's a note saying "Hey guys, I know we haven't been on the best terms in the past, but we want to make it as easy as possible for you to come over and pay us a visit on the other side of the OS world. Bring your code with you too if you'd like, we're working on making that work too!"
So why would one take one over the other?
.NET windows apps later on.
One reason to pick C# might be a desire to integrate the code in some
If that is not a concern, just pick Python and go. It's going to be easier, and also the more "mainstream" alternative in the near future. You can learn C# later if you feel like it, but you will still be thankful that you learned Python. Unlike C#, it's good at scripting as well.
Save your wrists today - switch to Dvorak
C# classes have significant overhead when there is only a few members, and C# structs doesn't seem to be as flexible as C structs
Eh? Where are you getting this?
The major difference between the two is that classes are reference objects while structs are value objects. Other than that there are limitations in terms of inheritance with structs and things of that nature, but your statement that C# classes with few members have a lot of overhead is simply false.
Except that C# programmers never (rarely) make those calls directly. They are buried under class libraries that abstract them out. Most of Windows.Forms is fairly abstracted out and developers don't have to ever touch a message loop. There is no GetMessage and WM_CLICK, just a Click event. It's trivial to expose the same functionality under Mono.
You might as well say that Java is a fake language because of JNI, or because the JRE maps down to non-Java calls (and they all do.) You might as well say that c is a fake language because of stdcall support between Pascal and FORTRAN languages, or because c still compiles down to native bytecode. Pick a language; it's based on another language, built on another language and typically (if it is worth anything), interoperates with other languages.
Way to FUD, though, assmonkey.
But as Miguel points out, pretty much all software, written in any language, has patent problems. That's just the kray-zee world we live in. If anything, GPLed projects may be safer, because IBM and Novell have threatened to use their patent arsenals in retalation against anyone trying to sue open source projects for patent infringement.
Hmm, you mean like how gcj produces native java executables that are faster than running bytecode in the JVM? Oh wait. No it's slower. One of the main facets of .NET and Mono, though, is the ability to precompile the binaries to speed up loading (but not running). The thing about running code in the JVM and the CLR is that programs slowly get faster and faster as the jitter tweaks the optimizations and caches them.
Therefore I don't see any real point to producing native executables. Heck you don't even see to many people clamoring for a perl native compiler or a python native compiler. Although they exist most people simply don't need them. The future is in languages like Python, Perl, C#, Java. Bytecode compiled or even straight interpreted languages are really coming of age. The bare underlying hardware is becoming less and less relevant.
MS is evil. This is fact. They will crush any competitor using any possible tactic.
Setting fire to kittens: evil.
Gassing 6 million Jews: evil.
Raping little girls: evil.
Flying airliners into office buildings: evil.
Employing standard competetive business practices: not evil.
Please get a sense of proportion. When you say "MS is evil", I think "immature fanboy". Shut up until you have some evidence to support your wild claims.
I assume that by "problem we don't have" you mean the idea of a single binary that runs everywhere, and your ideal solution is to build CPU-specific binaries from (open|free) source.
Obviously you haven't given it enough thought.
First off, there is no such thing as one source that compiles for every CPU. What you get is meta-source that preprocesses into various different programs, for each architecture and OS. All the different outputs need to be tested seperately. But it gets worse, since the assumptions underlying each OS are dissimilar enough that "cross platform" is really hard. Big, impressive projects like apache and postgresql have wrestled with cross platform - and won, but at no small cost in time and effort. It is not merely a matter of "configure; make all". Most CPU-compiled programs don't even make the effort, they are doomed to running only under posix (or windows, or mac, or whatever).
Second, you lose the ability to migrate your programs unchanged with full functionality across eg: the upcoming 32bit => 64bit i386 CPU changeover. Or across totally different CPUs. This could well be very important if business depends on the predictable running of those programs. It's also pertinent from an open hardware perspective. Compiled binaries are vendor lock-in on the CPU. Even if you're willing to suck it up and assume a CPU, time is against you - CPU architectures predictably change. Likewise OSes.
Third, you lose the ability to have code that actually exchanges runnables across platforms or with strangers on unknown machines. "Applets" could not have been done with compiled code.
And of course fourth, you waste disk space, time and intellectual effort grubbing around compiling source code when all you likely want is binaries that work.
Maybe you should check your ass.
I made a clever.