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. "
The prospect of GNOME becoming dependant was the straw that broke the camels back and made me switch to XFCE, keep the .NET patented API out of GTK!
I played with Mono when it was first in Beta as I love the .Net CLR, no its not perfect, but its pretty damm good.
.Net knowledge againt Unix and non MS plattforms. .Net shortcuts, (I should have in the first place) .Net 2.0 implementation (some is already part of the 1.3 release)
.Net than I can in C++ , that me , but if there is no appreciable difference then why in the heck would I write it in C++ ?
Mono was a way for me to extend my growing
I just downloaded 1.3 (Beta) and I am VERY Impressed with how far they have come I converted a small web app about 10 pages to run under mono, and it does perfectly, I only had to steer clear of a few of my more ecclectic
Mono is and has been self hosting for quite some time, Its a full real language development enviroment not some hodge podge interpreted scripting hack
Congrats to the Mono team, I am looking forward to you
I can write code 5-6 time faster in
ESPECIALLY when its a WHOLE lot easier to move a Mono app around plattforms,
The next project that needs cross platform capablity I will write in Mono, (Writing in Mono its almost sure to work out of the box in MS land)
I am a java fanatic, but c# has really pulled me away. It is a breeze to build enterprise web applications in C# compared to the counterpart in java. Java missed the ball with J2EE IMO, they made it more difficult than it needed to be. MS got it right with ASP.NET...
I understand that I can compile C# code across any platform that either has .NET or MONO installed on it. Or any major .NET language. My question is, does MONO extend to ASP.NET and integrating in some way with Apache?
I ask this because I do ASP.NET development where I work, and would like to be able to do some of it on my Powerbook or Linux desktop at home if I need to. I know PHP is the better solution under Linux, and I would prefer to be doing it but it's not a supported product where I work so it's out.
I think Mono may actually be a good think for Linux. One of the things that keeps many people using Windows is that they don't want to give up their current application set to learn the open source equivalents. A project like Mono has the potential to to allow developers to simultaneously target both Windows and Linux, which may lead to more Windows apps running on Linux and in turn more people willing to consider running Linux. Also, C# is a nice language to program in.
wrong. mono is about "embrace and extend"... the same technique that microsoft has been using for years to swallow or crush competing technologies.
it's nice to see redmond on the receiving end of this formula for once, don't you think?
2 1337 4 u!
Out of curiousity, what exactly makes c# easier to work with than Java?
I see many comments on Slashdot to this effect, whenever mono comes up, but nobody ever says how or why they find it easier to work with than java.
Many of us have taken jobs at shops that are Microsoft only shops. I hope that Mono takes off in a big way since that would give us a chance to easily port our apps over or at least develop on something other than fucking windows xp. It really sucks to get stuck in the MS world and not have the time to work in other environments and not be able to have other platforms run at the place that you work. Maybe Mono can be a bridge from the dark valley of MS purgatory.
Good idea, lets promote and assist the "industry" in deciding to use this tool by NOT POINTINT OUT there is a better cross-platform tool out there but BY HELPING to legatimize this propietary toolset by allowing Microsoftzilla to say "see its multi-platform too" in their marketing materials.
Fact is there are no better cross-platform tools out there for development, or at least that is the opinion of the users and developers of Mono. People develop and use Mono not because they think to themselve "Hey man, It's Microsoft! They've got to know better," they used it because the same cycle of C/C++ plus a bunch of toolsets are painful to use. Use whatever you want, I like Python myself. What I don't like is this negative FUD campaign against Mono.
While very, er, direct, parent has a point.
.NET by the Mono team steers straight into a darker and deeper pit than anything that would have been experienced in Qt.
.NET, Miguel and the Mono guys are walking on really thin ice.
It is 100% true that GNOME was founded that way. And I believe, more than anything, that the plunge into
I've said it over and over that Miguel and crew have done a remarkable job. Really. But the biggest flaw in their tower is the fact that it's a spawn of Microsoft. I can completely understand their target of a langauage/platform that they know will succeed. But we all know Linux/FOSS to M$ is all about FUD, embrace and extend, etc... How many times has anyone from M$ talked about working with the GNOME/Linux community vs. destroying or crushing it? Plus, now that Miguel is part of Novell who do you think is going to prevail in court? On that one, I'm gonna put my bet on the company with $40bln in the bank (and that ain't Novell). Anyone up for the 'M$ pummels Novell again' show?
Until M$ comes out with an open source license for
For myselft, years back I started dabbling in C# thinking I'd broaden my programming knowledge. But I have to say that I prefer Java over C# as C# is just too Microsoft and there's something about the feel of it that gives me goosebumps. Like my old, really old, yukky VB days.
Plus, while most people don't care, I can't separate the poilitics from the code on this one.
I remember hearing that GTK# was the way to go WRT the default mono toolkit. Bad idea. GTK on windows is pretty bad. However, I found this project which makes wxWidgets available to mono. Why oh why would you want to use gtk# over wxWidgets (which in turn uses native UI)?
The real thing that mono buys linux is a lot of application developers. A lot of people have put a lot of time and money into learning .net and its tools. They don't want to throw that away if they don't have to. So now we can say to all those folks hey you can use your .net skills on linux (or bsd etc) and poof instant linux applications.
Erlang Developer and podcaster
I know, I know, MS is the evil empire and Open Source is the rebellion trying to free the universe and all that but I got to say that .Net is a fantastic language. I have programmed in C, C++, Java, and .Net and I have to say .Net is currently the best. Java 5 is close but it in missing a few things I like from .Net. I love Mono, and I think it works great. I have only had a few problems with it, but nothing major. It really is nice to develop server applications that can run on Windows and Linux, which is really nice for people who develop for enterprise level deployments. One company will want to use you server in a 2003 domain, the next wants it to run on Red Hat. With C++ and to some extent even Java this just does not work.
.Net system is just the best-designed environments I have seen. I would expect that you will start to see it taught in the colleges, because It allows you to teach people programming that is not language specific. Hopefully you can then get people to know VB, Managed C++ and C# by the end on college, not just Java. Then you can take the importance off learning the syntax and place it on to learning structures and algorithms. Most importantly you then teach the skill of being to switch to new languages and adapt you knowledge, to teach people ho to learn, which in the most important skill I learned in college
On top of that as someone who studied programming languages for my masters project I have to say the
This post, and all it's subposts, really anger me. From what I understand,
As such, how does this "legitimize microsofts attempt at monoplizing another market with yet another windows-only product exactly similar to an exsisting [sic] multi-platform product"?
1) It's not Windows-only since MONO runs on linux.
2) It doesn't legitimize any attempt. http://www.mono-project.com/about/licensing.html does not state anything about an 'evil' Microsoft licensing scheme, or invasion of Microsoft bed bugs into your code:
Perhaps I fail to see the "licensing minefield created by Miguel", as the fact that it's an open standard, and that the MONO licensing itself isn't restrictive, pretty much subverts that.
On a final note: even if all my points are completely off base, and wrong: I ask you one thing: When did we turn from software developers who seek the 'best' solution to 'X' people?
"I'm a Mac person."
"I'm a Linux person."
"I'm a Windows person."
"I'm an X person."
Since when did it become about branding yourself with something, over choosing the best technology for the job? Half the sub-posts here are all about not choosing the tech because it 'feels too Microsofty'. C# was built by Anders Hejlsberg, who designed Pascal, and Delphi, both successful languages in their own right: and Borland technologies.
Oh no! Now the anti-Borland people aren't going to use C#!
When will this nonsense stop? We're all so anti-being branded, unless we do it to ourselves. Pick the RIGHT solution: not the one you've been known to cower behind.
- - - -
KickingDragon
MS Actually let .NET and C# become ISO standards unlike many of their past developer tools and languages. So when a large company develops an ASP.NET application and then decides that they don't want to have to continue support IIS or Windows, they now have a choice to migraite to Linix!
Mono provides choice for those that are currently developing for the Windows platform. So does Java. Mono is FOSS. Is Java?
I am currently working on a project that uses C# for the GUI. Our customers use Windows workstations, so we are writing software for Windows. We are actually moving away from Java which was the old language of choice at my company. You may argue the reasoning behind this, but it is the decision that was made and we are using C# instead of Java. I am hopefull that a more mature Mono (in a year or so with full System.Windows.Forms) may provide us with a way to run our client programs on Linux workstations, if requested by a customer. Mono will give us back some of the choice we lost moving away from Java.
Mono creates great competition for Java. Perhaps this will be another reason for Sun to finally make Java FOSS. Competion is a good thing.
Great ideas often receive violent opposition from mediocre minds. - Albert Einstein
Mono needs a bit of work to work with PaX, but it's possible. I mentioned the necessary changes to the Kaffe team; but they apply to any JIT.
The issue is that a JIT compiler like Mono generates code at runtime. Because it's not generated in realtime (it's compiled at the loading of an executable module, one time), it's feasible to dump the executable code to a file on disk and mmap() it in.
PaX won't allow code to be generated in memory unless the program has mprotect() restrictions off and uses mprotect() right. It's safer to rewrite the JIT compiler though, since you wind up with a stricter security policy that way.
Furthermore, Exec Shield's NX emulation is flawed, and the use of mprotect() in those ways would disable the protections on large parts of the binary. If anything happens in or above the stack, the whole stack is likely executable. This is in fact one reason I prefer PaX; a slight modification to Red Hat's kernel to print X instead of - in /proc/[pid]/maps for !PROT_EXEC memory that's actually executable prints out a good deal of areas that are executable but shouldn't be (rwx vs rwX).
Mono is flexible enough that C and C++ can be compiled to .NET. Microsoft supports this, as mentioned in earlier slashdot posts. It's really important to consider .NET and Mono as insecure, and to make sure they're adequately protected. If you're running all your programs in Mono and Mono has to disable PaX, then you lose the benefit of your GrSecurity-enhanced kernel. (same with ES).
Support my political activism on Patreon.
Can I just run a Mono app on Linux that was written on/for .NET? When Mono is in full release, that is.
--
make install -not war
The .NET API is an open standard. The best thing Microsoft could ever do for Mono would be to sue it. The publicity and attention and droves of users/developers it would get would be monumental. They'll ignore it.
I've a c# developer, and I'd be tempted to play with mono, but I have to wonder why Python with the wxWindows and wxGTK toolkits isn't getting more exposure.
My biggest problem with Java apps is that they look equally bad on any given platform. Based on what I've seen with wxWindows and wxGTK, the apps look like native apps. Is Python missing something essential?
90% of everything is crap. Also, crap is relative.
I'm a java guy who's recently been required to start doing some C# in order to keep my job. I must say, that overall, C# is a decent language. Hands down, if I have to ever write real Windows-only apps again, I'll use it.
I found that as a language its much less restrictive than Java. Java's API's are pretty rigid, well defined, C# seems to be a bit more relaxed.
Now for me, thats the thing I like better about Java in that it forces you into a particular coding style/way of doing things. I've had the debate numerous times with Perl folk who like things a bit more relaxed. To each their own I guess.
Thing is that when I go to maintain somebody elses Java code, its pretty consistent with the way I develop code, just because Java kinda forces you into a particular style/way of doing things. Flip over to Perl, and I've had numerous occassions where I've had to learn the previous developer's style at times to follow their code with ease.
So my gut feel on the C# language is its a bit more relaxed (not as much as something like Perl), so I'm thinking I may run into this heartache if I ever have to maintain somebody elses C# code.
Just one other note on why I like that rigidity in code as opposed to flexibility. I find that the more flexible languages lend themselves to allow developers to cut corners and/or take easy routes to do things. Again from personal experience, as software scales up beyond its original scope, I find that its easier to move a Java program forward into bigger and better things than stuff I've seen in other languages. Mostly because the solid foundation was built and effectively enforced by the language from the start, whereas in other languages you sometimes have to solidify stuff up a litle bit more before moving on.
Anyway, this is all mystical voodoo software developement stuff thats hard to codify, but thats my experience. And as I was saying its personal preference. Doesn't meen you have to agree. Doesn't meen that I'm right. (or that I'm wrong)
My buck and a quarter...
-- A computer without COBOL and Fortran is like a piece of chocolate cake without ketchup and mustard
C# is really good computer language...
Microsoft has no control over the language. It only has control over some libraries that have Linux counterparts.
Using C# on Linux will make the transition easier for many Windows Developers.
Using C# on Linux will increase the productivity of many Linux developers.
How what I wrote above will destroy the chance to something better is a really good question that I would like answered.
I post non anonymously to have a chance at inteligent discussion... you on the other hand are not only an ignorant coward, but have also a juvenile mind.
Adolfo
Java doesn't staple your testicles to Windows.
-- Microsoft is the most expensive commodity operating system and office suite vendor in the marketplace.
The problem with patents is that they will cover
.NET
.NET Framework?
.NET Framework. If I
the concepts, not the implementation.
So the reality is that any modern implementation of
anything remotely interesting will infringe in
a bogus patent. You write a hundred lines of code
and you are infringing someone.
In my opinion, we can fight bad patents or we can
move into a safer industry, like selling panties.
But in particular, if you are talking about ASP.NET
the question you must ask yourself are:
* Do I use any concepts that exist in the
Framework in my code? If so, should I remove the
feature?
* Did the concepts in ASP.NET (or any other
technology) exist prior to the
Remember that you must be thinking "concept" and
not "implementation", because a patent is much
broader than that.
I believe there is very little new under the sun,
and that prior art can be found for all the
interesting parts of the
didnt, I would be selling soap.
Miguel.
.Net is today used to refer to the common language infrastructure/environment in which languages like C# exist and are defined. It's no longer a marketing term, but a pinned down reality that hasnt been anything other than that since more than six months before Windows 2003 shipped.
.NET, and C# just so happens to be bundled along with it.
In that regard, he is correct to refer to it as an implementation of
Instead of flaming, why not gather the basic literary skills needed to form intelligent, sensible and factual arguments and work from there?
Despite that, management have caught the .NET bug for client applications. This is where Java is weak. JFC might be great on paper, but it just blows as far as performance is concerned, looks weird even with a theme engine and is just plain difficult to programme. Eclipse & SWT demonstrate that a Java UI doesn't have to be such a pain, but SWT hasn't really spun off into something that 3rd party apps can rely on yet.
So traditionally we've always coded C++ on the client side. There's nothing wrong with that in my book, but management have been sold on the idea that .NET will increase product stability and lessen development times. Which is great except they've decided we will migrate by wrapping the old legacy code with managed classes and use a .NET based UI. Thus we get the instability of C++ and the overhead of .NET! The alternative would be to rewrite the product entirely in .NET which would take years.
Thus my skepticism about Mono. The real world (and the world Microsoft wants) has lots of unsafe and unmanaged code tied together with .NET. Unless Mono links to the whole of winelib and provides x86 emulation for non-x86 hosts, this code will never run outside of Win32. To cap it off, our app executes code in MS SQL, so we have yet another dependency. We have no intention of testing on Mono and I sincerely doubt it would work even if we tried.
That's the real world. Mono isn't on the radar and never will be while it's considered some sideshow. The onus will always be on Mono to cope with whatever crap gets flung at it and not the other way around. Thus my belief is they need to push the great stuff they have so it is shown on the same level as the Microsoft code. If GTK# and other open stack APIs are made easy to develop and run from Dev Studio .NET 2003 it might sway someone sufficiently to use them in some major projects. Word will get around soon enough.
I don't think .NET programmers are shy of good open source libraries (NUnit, Log4Net & Spring.NET are popular ports from Java), but they have to work in the first place for people to bother with them.
`mono program.exe' runs your program, no need to
pass a class name, or a path or setup the cp to
run.
'java -jar program.jar' would be the Java equivalent.
The layout of my files is not constrained to
one-file, one-class and the file system hierarchy
does not have to match the namespaces I have
chosen.
one-file - one-class is not neccessary with Java either, although I guess you are somewhat more restricted than in C# (which I don't know well)
* `mono program.exe' runs your program, no need to pass a class name, or a path or setup the cp to run.
So does `java -jar program.jar`
The layout of my files is not constrained to one-file, one-class and the file system hierarchy does not have to match the namespaces I have chosen.
I guess I've just never found this to be a problem. It has forced me to keep my code organized which I found to be a good thing. And any third party libraries should be in jar files for effeciency.
"If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
Mono may be a reimplementation of an MS product, even looking at the source, you'll notice a folder full of *nix implementations of windows API calls. But what does it really matter if it does the job you need it to?
.Net includes a set of security features that help to lock down scripts fairly tight, the problem being, our app has to be cross platform. This started us looking into Mono, which doesn't implement all the security features -yet-, but by our planned release date, they should be done, or very close.
I started looking into it a few weeks ago when a project I was (am) working on required a scripting engine that could handle running scripts from anonymous sources, id est untrusted.
We went through a large range of languages: python, perl, angelscript, php, lua, etc etc but ended up with a few rather large problems in all of them: either lack of sandboxing and protecting a system from the effects a script could have, or lack of documentation and user friendlyness for those who may not be too familier with programming (yes, we have to consider them)
One of the dev's on the team brought up that
Another thing to consider, is that Mono will run any CIL compiled code, meaning that we can support a virtually innumerable count of languages, with very little excess implementation (find a compilier and link it into the project).
So now we have: cross platform scripting (with sandboxing eventually), and the ability to present the users/programmers of the scripts with the syntax they are most comfortable with using.
Not only that, but Mono is going to save us a fortune on our development costs, because we may be able to drop Qt GUI implementation from our project roadmap, which averaged about $6000 for each developer(Qt Enterprise with QSA), I believe, and had some -major- limitations on what you could use thier scripting language for (for example, you're not allowed to use it to expose features of Qt itself to the scripter, which may be neccisary for our project)
Mono does the job, fits our specs almost perfectly, saves us money, and is built on CIL ECMA standards. What more -could- we ask?
The prospect of GNOME becoming dependant was the straw that broke the camels back and made me switch to XFCE,
.NET APIs, they rely only on ECMA C#.
.NET patented API out of GTK!
.NET APIs in Gtk+; Gtk# is a Gtk binding for Mono, not the other way around.
The Gnome for Mono libraries don't use
keep the
There won't be any
And you better hope that Mono succeeds, becaues there is really not much else out there to develop the next generation of Linux desktop apps in.
This is simple. First, I believe you are talking about patents. Therefore, I will address the patent "issue".
/
.Net, you're not locked into MS because Mono is there"
.Net and deploy on Mono: http://primates.ximian.com/~edasque/images/msdn.jp g
.Net applications on Linux"
1. MS released their possible patents on the CLR, base CLI and C# specs with a RAND
2. Mono is being VERY responsible. They've created two stacks, one of just the RAND stuff and Mono specific stuff, and one stack which is "possibly infringing" stuff: http://www.go-mono.com/archive/1.0.4/suse-91-i586
3. Novell has issued VERY strong language saying that it will protect all opensource projects in which it is involved from patent claims with it's own patent portfolio (Mono is one of these): http://www.novell.com/company/policies/patent/
Also, Novell has a lot of patents in the LDAP arena.
4. MS LOVES Mono. It makes it so that they can go to customers and say "if you switch to
In fact, they love Mono so much, that they've done two MSDN webcasts in the last month showing how you can code in
Notice the title bar in the outermost window "MSDN Webcast: Mono: Running
Conclusion:
Mono is no more vulnerable than any other OSS project. It is sad that you have resorted to FUD without any proof of your claims.
Just curious, but is there any hope for the superfluous ".exe" to get dropped automatically for mono code compiled on UNIX systems. And while you're at it, can you output ".so" as the extension for shared libraries instead of ".dll"? I mean, exactly how fixed is that stuff by the nature of the CLR?
Hello,
;-)
.jar, the rest of
Well, you are missing the point about anonymous
methods. They are just a lot simpler to write and
hook up than the equivalent for Java. You need to
remember less, you need to type less, and they are
effectively closures with variable and state
captures like Scheme would do. Anonymous classes
in Java are effectively a pre-processor hack:
they cant capture or reference local variables
nor parameters, they can only reference instance
variables of the containing class.
Can everything that anonymous methods do in
C# be done with alternative methods in Java?
Absolutely. But then again, sendmail's config
file format is turing complete, but that does not
mean it is pleasant to write applications on top
of it. The same applies
Thanks for the pointer on
the Java criticism still applies.
That being said, Mono and the CLR are language
neutral, and we will run all of your Java code
in Mono. We are an equal opportunity language
runtime. But given the choice, I tend to go with
writing my code in C#.
Balderdash.
Mono's goal, indeed its reason for being, is to clone Dotnet. Not C Sharp, not the CLI, but the complete platform. That statement has been there on the go-mono site since day 1.
Now suddenly (that is, since about October last year) the true effort involved in staying on the MS treadmill has finally become apparent to the Mono developers. So we now have the emergence of Plan B, which cheerfully discards any notion of Dotnet compatibility and leaves Mono as yet another bytecode system, of which we had half a dozen long before Mono was an envious gleam in Miguel's eye.
Wherever people make serious investments in time and money, they are not going to consider a platform that promises compatibility one day and drops it the next - the risks and the costs would be enormous. For such projects the "draconian" (complete) compatibility of Java is an absolute requirement, and one which literally hundreds of thousands of developers rely on every day.
Use the real world as a demonstration.
1. How many commercial apps are written in Qt?
2. How many in GTK+?
Answers:
1. Many.
2. None.
As for Gnome and KDE being obsolete, well, that's a rather strong way of putting it. Both will continue to evolve, and in the long run, will probably have some sort of managed code core as a development option. But I doubt you'll see the end of native code in those desktops for a very long time to come.
Mono's goal, indeed its reason for being, is to clone Dotnet.
That's the reason Novell is paying the bill, and it is one goal among several.
Now suddenly (that is, since about October last year)
There is nothing "sudden" about it; the Gtk# bindings were there from pretty much the start of the Mono project, long before Windows.Forms was even usable. Almost all Mono GUI apps are written with them.
I'm sorry you weren't paying attention (or is it that you just make up false "facts" to badmouth projects you don't like).
For such projects the "draconian" (complete) compatibility of Java is an absolute requirement, and one which literally hundreds of thousands of developers rely on every day.
In my experience as a Java developer, Java achieves only limited compatibility across platforms. Even that is only because all implementations right now are derived from Sun-licensed code. In different words, Sun's pitch is the same as Microsoft's: license all your software from one source and all your compatibility worries will go away. Thanks, but I don't want a Sun monopoly any more than a Microsoft monopoly.
Miguel,
I'm a fan of your work and of Mono in particular but why are your posts formatted like emails?
Cheers,
Anonymous Coward
As someone who is a big fan of Python and uses it almost exclusively, I can say that the static typing of C# and Java has one big advantage. It's not better bug detection at compile time, or some nebulous concept of "enterprise readiness", it's intelligent IDEs with autocompletion etc.
:-).
I prefer GvR's ideas about static typing for Python 3000 better (basically, all type checking is done via interfaces), but it doesn't actually exist yet
-Mark