Miguel de Icaza Explains How To "Get" Mono 559
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."
Anyone Have Actual Experience With Mono? (Score:5, Insightful)
- 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.
Re:Anyone Have Actual Experience With Mono? (Score:2, Insightful)
Re:Anyone Have Actual Experience With Mono? (Score:4, Informative)
Re:Anyone Have Actual Experience With Mono? (Score:3, Interesting)
Re:Anyone Have Actual Experience With Mono? (Score:4, Informative)
Re:Anyone Have Actual Experience With Mono? (Score:2)
Re:Anyone Have Actual Experience With Mono? (Score:3, Insightful)
Re:Anyone Have Actual Experience With Mono? (Score:5, Insightful)
But who cares?
If you need balls to the wall performance, you use C, C++ or assembly - plain and simple. It's not about performance. If it were, no one would have ever heard of Perl, Python, PHP, or Ruby. You don't need blistering speed for 99% of the apps you use in a day. And computer time is a thousand times cheaper then developer time. So unless you're writing an OS or crunching numbers speed is usually a secondary concern.
IMHO Java's only useful feature is that it has the best platform portability in computing history (although it isn't perfect). Java apps run about as well on OS X as on Linux as on Windows as on Solaris on their various hardware. That is a wonderful thing. However, Java GUIs pretty much suck on every platform.
As for C#, Ballmer had it right when he said Developers! Developers! Developers!. C# has a completely awesome IDE and a consistent and elegant language that hasn't been patched and tinkered with haphazardly a dozen times. And although I think C# is syntactically and semantically more elegant and consistent and well though out, those facts are irrelevant as well. VB didn't take the lion's share of professional software development because people loved the ascetics of the language. It was all about more easy it made a programmers job. You could do in a day in VB what would take you a week with C and the Win32 API and have fewer bugs to boot. How awesome is that. So now we have the wonderful rapid easy development environment of the VBs of yore mixed with the sugary love of consistent syntax and semantics that is the C# language.
That's what Java didn't have and doesn't have, and probably never will
DISCLAMER:
My experience is mostly based on running things in windows. I have tried Eclipse and NetBeans as recently as a couple months ago. I'm a fan of Linux and open source and tinker with Debian at home. But, I am an independent software contractor and value my time and Visual Studio kicks ass.
And remember kids, Linux is only free if your time has no value.
Daniel Carter
KC8KGU@hot?.com
?=mail
Re:Anyone Have Actual Experience With Mono? (Score:5, Insightful)
IMHO Java's only useful feature is that it has the best platform portability in computing history (although it isn't perfect). Java apps run about as well on OS X as on Linux as on Windows as on Solaris on their various hardware. That is a wonderful thing. However, Java GUIs pretty much suck on every platform.
Yes, java apps run the same on all the platforms but to say their GUIs pretty much suck on every platform means that you are really misinformed or are basing your assumptions on things you've seen years ago. Take the bittorrent client Azureus... it looks just like any other windows program. The eclipse IDE, again looks just like a windows program. They are both written in Java. So if you think they look bad then you think that all programs on said windowing systems look bad.
As for C#, Ballmer had it right when he said Developers! Developers! Developers!. C# has a completely awesome IDE and a consistent and elegant language that hasn't been patched and tinkered with haphazardly a dozen times. And although I think C# is syntactically and semantically more elegant and consistent and well though out, those facts are irrelevant as well. VB didn't take the lion's share of professional software development because people loved the ascetics of the language. It was all about more easy it made a programmers job. You could do in a day in VB what would take you a week with C and the Win32 API and have fewer bugs to boot. How awesome is that. So now we have the wonderful rapid easy development environment of the VBs of yore mixed with the sugary love of consistent syntax and semantics that is the C# language.
Personally I love the JDeveloper IDE from Oracle. However eclipse is nice once you get it setup. Visual Studio is ok but it still doesn't make up for the fact that you're still having to write in C# or some other windows bastardization of a language.
That's what Java didn't have and doesn't have, and probably never will
Have what a dominace? I dunno, I like what google has done with java and most sites that use Oracle are now starting to use java as well because Oracle is starting to get behind it.
DISCLAMER:
My experience is mostly based on running things in windows. I have tried Eclipse and NetBeans as recently as a couple months ago. I'm a fan of Linux and open source and tinker with Debian at home. But, I am an independent software contractor and value my time and Visual Studio kicks ass.
I value my time as well, that's why I prefer Linux. No more hunting through countless windows to find the right configuration tab... doh, windows moved it again. I can't remember where a config file in Linux is I can search for it. Can you search for a tab in a window? I work for a very small software company and we briefly considered
Of course as you said, Who cares. I'm not going to convince you to use Java and you're certainly not going to convice me to use
Re:Anyone Have Actual Experience With Mono? (Score:4, Informative)
Yes, the C# of the MS world is MS only which sucks. However, Mono has taken C# to Linux, Windows, Mac, Solaris, FreeBSD and more coming in the next version due this year. The architectures are x86, PowerPC, S390 and SPARC-based systems and the next version coming out is going to have more. There are two 64 bits ports: SPARC v9 with Solaris and the AMD64 port. When Mono 1.2 comes out this year, there won't be any reason for me to use Java really. I personally like C# better and the big thing I _hate_ about Java has always been Java exceptions. Exceptions in C# are much nicer and you are not forced to handle them.
I have also noticed a huge advantage to Mono/.Net when it comes to memory footprint. When I run Java apps the memory usage gets high and the virtual memory usage gets really high. I love the Azureus program, however it always causes my MS Windows box to start hitting the swap file and MS Windows sucks at swap file usage compared to Linux so I am always forced to use Azureus under Linux. When I run C# apps, be it with Mono under Linux or MS .Net under MS Windows, the memory foot print is much smaller and swap is almost never used.
The last two GUI apps I have written have been in C# and they have at least the same startup time if not faster than a similar Java program and the memory foot print doesn't even come close to being as high as a similar Java program would be.
I don't want to sound as if I hate Java, because as I have said, I use both Java and C# and like them both. I have used some really nice Java apps that do things to keep the memory foot print down like IntelliJ IDEA [jetbrains.com]. However, even with great programs like IntelliJ IDEA, the virtual memory still gets way up there due to the JVM.
Re:Anyone Have Actual Experience With Mono? (Score:5, Funny)
Yeah, I was once a VB ascetic. I spent a year wandering the desert, contemplating whether to use 1 or 0-based indexing. And when I returned with the Answer, there indeed was no love for me.
Re:Anyone Have Actual Experience With Mono? (Score:4, Insightful)
No. That would be C.
Re:Anyone Have Actual Experience With Mono? (Score:3, Funny)
That's alright, I don't want to work for anyone who makes decisions and judgements without the relevant information, i.e. you.
Re:Anyone Have Actual Experience With Mono? (Score:3, Informative)
Wow. Says it all really. The fact that you cannot stand VS.Net probably in no way hampered your ability to find the options you like.
I know of at least three refactoring add-ins for C#, one of which (at least) integrates itself directly into the IDE and menus. And thats 30 seconds with Google and not having a
Re:Anyone Have Actual Experience With Mono? (Score:3, Insightful)
Re:Anyone Have Actual Experience With Mono? (Score:3, Informative)
Assemblies aggressively optimized means they are internally linked ahead of time like a normal DLL, so internal inlining uses static rules. Cross-assembly inlining is also more difficult. Basically
Re:Mono on Windows? (Score:3, Informative)
Develop Mono on windows there is a better change of having simular compatibility running on Linux vs.
Re:Anyone Have Actual Experience With Mono? (Score:3, Informative)
Here we see F-Spot, a photo management application for the GNOME desktop that was developed under Mono.
Here's the homepage for F-Spot [gnome.org], FWIW.
Re:Anyone Have Actual Experience With Mono? (Score:5, Informative)
Mono Vs C++ - this is not a normal comparison due to one being a byte-code language and the other being compiled. That being said, I'm continuously impressed with mono's speed (especially compared to Java). It's current downside is an increase in memory utilization (compared to c, c++).
Mono Vs.
Mono compatability claims - here's the shocker, it really is very compatable with microsoft's C#
Disclaimer: I've been working on various small personal projects using mono for the last 6 months and have been using various apps centerend around mono for about the same.
Re:Anyone Have Actual Experience With Mono? (Score:2)
Re:Anyone Have Actual Experience With Mono? (Score:2, Interesting)
Which is a shame, because the
I have tried Gtk# (Score:5, Informative)
My only gripe was the lack of a decent debugger (monodbg hardly worked then), but it was quite a while ago, and I hope someone would post their experience with a newer version of the debugger.
Re:I have tried Gtk# (Score:3, Interesting)
You can write an application using GTK# and have it run on Windows, OS X, Linux, Solaris, etc. Its the Java promise all over again, but reworked to run better. For this reason alone I am considering doing a non-trivial desktop datab
Re:I have tried Gtk# (Score:3, Insightful)
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.
Re:Anyone Have Actual Experience With Mono? (Score:3, Interesting)
I'll be doing some serious downloading this weekend!
Chip H.
Why not stick with Objective-C? (Score:5, Interesting)
I still shake my head when I use the Visual Studio beta and create a form, and look at the code to see it instancing classes in an InitializeComponent() function. Anyone whose used Visual Studio before knows things can go haywire if you dare touch any of that code. You have to leave it alone or the editor gets pissy.
In Cocoa, the
I also like the way method parameters are self-documenting in Objective-C. It's easier to understand a "[something doThis:parameter1 usingThis:parameter2 forThis:parameter3]" then it is a "something.doThis(parameter1, parameter2, parameter3)".
Just my opinion, and I'm sure there are those who have valid reasons to use C#/.NET instead. But I used to be a C# guy too until I learned Cocoa. The flexible messaging system alone keeps me using it.
Re:Anyone Have Actual Experience With Mono? (Score:3, Interesting)
Here is the Ajax style Japanese/English dictionary site [yakugo.com] I'm building with it.
On the other hand, Eclipse is way beyond Visual Studio right now and it makes devel with Jav
Re:Anyone Have Actual Experience With Mono? (Score:5, Interesting)
Some time ago, getting spontaneously fed up with C++ with managing memory, obscure STL bugs and so forth, I decided to check out if Mono 1.1.4 (C#) would cut if for my application performance-wise.
Now, this application is a quite performance hungry scientific comptation app wich makes heavy use of vector and matrix operations so the first thing I did was port a sub-set of my home-grown library for this to C#.
The classes use operator overloading to facilitate greater readability in the main code. I then proceeded to implement a fairly simple set of algorithms to test the performance of C#/Mono vs C++. Although I did expect some sort of overhead and slowdown in C#, I was quite surprised and discouraged to find that overall, compiled C++ was faster than Mono's JIT by several orders of magnitude (i.e. 0.018s vs. 1.2s). As is well-known, in theory a good JIT should be able to handle some things better than a static compiler can - and I expected this to be the case with Mono's JIT as well, so to at least lessen the performance impact somewhat.
Now, I have seen what Sun has been able to do with their JIT compiler the last couple of years. I many cases Java code executing under their JIT will have a acceptable (small) overhead compared to native C++ code - and the productivity increase of dealing with managed code will more than make up for this. Unfortunately, the powers-that-be in the Java language community decided to ban operator overloading, apparently because it can be mis-used. As if one cannot create functions that don't do what you would think they do as well
I started to dig a little to find out why Mono's JIT fared so poorly in my case (which admittedly probably is a fairly untypical use). The reason seems to be that pracically none of the operator overloaded operations were getting inlined. And the objects returned from e.g. a vector addition operation were actually being created instead of being temp-used by the caller (I forget the term for this type of optimization). Also, it seemed that only extremely basic loops/brances would be optimized.
A bit of googling shows that this is a known problem in Microsofts JIT as well. The reason is supposedly the need for a balancing of application-startup and JIT time. Reports pertaining to the new JIT shipping with the newest
Now, I appreciate that my kind of app is probably on the fringes of what could be considered "a typical"
I also tried the Mono AHT compiler with various settings with no significant performance gain for my examples (and quite a bit of slowdown in some cases).
So, end of story; I'm back with C++, with it's irritating - but familiar - quirks and methodolgy. As for now, there still are no other (OO) languages that meets my needs for high performance and language convenience (operator overloading) - and yes, I've looked at Python+Pyrex/Psyco as well.
Hopefully this issue will be address in a future Mono JIT, but I have a feeling it may not be high on the priority list as most "ordinary" apps will not suffer from this kind of problem.
YMM, of course
Re:Anyone Have Actual Experience With Mono? (Score:3, Informative)
Re:Anyone Have Actual Experience With Mono? (Score:5, Interesting)
Yeah, I was coding an IRC bot in C# using .NET 2.0 beta on Windows with Visual Studio 2005 Beta 1, and thought it'd be interesting to see if Mono can handle it. I'm a Windows user, but have Gentoo installed to play around with. My experience:
I have yet to test Mono with .NET 1.1 code, mainly because I don't have anything interesting since moving to 2.0 beta. But given what I've seen with its implementation of a beta framework, I have a feeling 1.1 is well-implemented. Maybe other areas such as Winforms are poorly implemented at the moment--I don't know--but they've made excellent progress already.
As for Mono versus C++, this is basically a .NET versus C++ question, which has led to large flame wars everywhere I've seen it asked. My personal opinion? Well, C++ was the first language I learned, and I had been using it for 6-7 years before I gave C# a try. I've been using C# ever since, around 2-3 years. Maybe if you're doing something that requires crazy amounts of performance C++ would be a better fit, but I don't do that, and the simplicity gained through C# and the .NET libraries far exceeds any performance penalties I experience (which aren't even large in the first place for the work I do).
Mono versus .NET C#: Of course Mono is behind since Microsoft is driving the development of C# 2.0. But from what I see, it seems Mono is mainly behind in the implementation of the .NET libraries. All of the C# 2.0 language features I used worked fine.
C# 2.0, .NET 2.0, and Visual Studio 2005 will likely be released later this year. Mono has reached impressive levels of compatibility already with C# 2.0, and compatibility with .NET 2.0 classes seems to be coming along fine. I'll definitely be keeping my eyes peeled for future releases.
Re:Anyone Have Actual Experience With Mono? (Score:4, Informative)
Mono really is a godsend in this respect. I have a lot of C# experience, as do the programmers with whom I work - it is a very productive language for medium to large middleware projects. Some of our larger projects require that we lease both the hardware and software stack to our clients, most of whom are non-profits who don't have huge amounts of cash on hand. Windows licensing for a small server could seriously eat into any profit margin when dealing with 50 remote offices (with about 20 users each), without a dedicated net connection (so a web-based app won't help). Mono lets us install a small Debian-based server at each small location, reducing licensing costs to zero - but not requiring that we abandon our existing codebase/installed base by switching to Java. All told, savings can easily run into the tens-of-thousands per larger client, per year.
It'll never work (Score:4, Funny)
A shackers guide to Mono (Score:5, Funny)
The dreaded "kissing disease" mono is transferred through saliva from one living host to another. Mono may incubate, biding it's time, in the human host for up to a month before it starts exibiting symptoms. Once mono kicks in, expect swelling of the throat and lymphic nodes, headaches, and extreme fatigue.
Victims of mono can be identified by the paling or discoloration of the skin, and will commonly walk with a shuffle and have half-opened eyes because of fatigue. Because of the swelling of the throat they may have difficulty talking, and will usually only talk in groaning sounding, short sentances. They will hunger, and they will hunger for something that they can manage to swallow, such as soft, succulent human brains. If you see anybody shuffling towards you, looking dead tired, moaning braaiiiiiiiins, it's best to stay away, or you too may be infected. You may become infected through exchanging saliva, or more commonly, having the sick exchange salive with your blood in an attempt for him or her to feed off of your brain-meats. Mono infected people only take half damage against physical attacks, and can only truly be killed by completely desroying the body through total physical damage or by burning. Recommended for parties of 4-5 players, levels 6-8.
Re:A shackers guide to Mono (Score:4, Funny)
Benefits of mono, and it's relationship to .net (Score:2, Funny)
Now about the benefits, Since the open sores implementation is so infectious, you can get out of up to a month of social activities such as 'school' or 'work' to better work on your video game skills in your is
Re:It'll never work (Score:2)
or from thinkgeek.
Dubious Developers? (Score:5, Insightful)
Re:Dubious Developers? (Score:3, Insightful)
adj.
Fraught with uncertainty or doubt; undecided.
Arousing doubt; doubtful: a dubious distinction.
Of questionable character: dubious profits.
You seem to be implying the third definition, while the author seems to be implying the second.
Yeah. Is mono even legal? (Score:3, Interesting)
Now, why would I want to rely on software that will get stopped in court? Why would I want to buy from a Linux vendor that might get shut down (bankrupted, etc.) via court action?
Re:Yeah. Is mono even legal? (Score:3, Insightful)
Bullet Points (Score:5, Funny)
Re:Bullet Points (Score:2)
He does it by making marks in the air with his fingers. You should see it -- it's baffling at first but oddly beautiful.
One wonders (Score:2, Funny)
Or, will MS port its Office suite to C#, relase Linux binaries, and enjoy a jolly chuckle?
The Secret of .NET (Score:4, Insightful)
Maybe Miguel knows something we all don't?
Re:The Secret of .NET (Score:2, Insightful)
Re:The Secret of .NET (Score:4, Informative)
C++ is an ISO standard. And you do realize that C#, CLI, and C++/CLI are ECMA standards. And soon to be ISO standards.
EDG is in the process of writing a front end for C++/CLI. The EDG parser is used by Intel, Borland, Comeau, and others. Although C#, CLI, C++/CLI were primarily created by MS, calling them MS technologies is inaccurate.
(Note: .NET/CLR is MS's implementation of CLI. Mono is another implementation of the CLI. Think of it as analagous to JRE in the Java world. Which by the way is not standardized.)
Re:The Secret of .NET (Score:2, Insightful)
Re:The Secret of .NET (Score:3, Insightful)
Of course it's going to be easier than C/C++, but that's mostly a strawman argument that everybody agrees on anyway.
The real issue is whether the improvement is worth the price, and whether equivalent improvements could be achieved through other, less MSFT-dependent means. This needs to be hashed out by lawyers, n
Re:The Secret of .NET (Score:5, Informative)
de Icaza: We are making Linux a fertile ground for third-party developers: we are allowing developers with Windows/.NET expertise to use and distribute software for Linux, easing the adoption of Linux.
Re:The Secret of .NET (Score:4, Informative)
Real world .NET applications are peppered with PInvokes, COM interop, MSSQL / IIS extensions and various other crap which makes the run badly or not at all on Mono. Even the best will in the world won't change this.
WINE might help a bit, but its too bad if you're on a non-x86 platform.
Even Microsoft don't give a damn about portable .NET. Witness their new Enterprise Library which they're pushing on developers. It contains several dozen Win32 calls right there in this common library. Any enterprise app that relies on it will be infected as a result.
Re:The Secret of .NET (Score:5, Informative)
I don't see the point in using Mono (Score:3, Insightful)
You want to speed mono acceptance? (Score:3, Interesting)
"Compiler" -vs- Libraries (Score:5, Insightful)
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.
Re:"Compiler" -vs- Libraries (Score:3, Insightful)
But doesn't the CLR merely turn the byte-code into machine code? Maybe I'm oversimplifying things here, but I would assume that those could be compiled as well, the same way any #INCLUDE statement would do it. The benefit to this would be able to compile the same source using a mono compiler, and get the benefits of Mono, but where it isn't needed, just compile it to native lang. As long as things don't fork (big if here), we should be fine.
I think you're talking about doing away with the virtual machine
Hmm... (Score:3, Interesting)
OT, I know.
Mono is a good thing (Score:4, Insightful)
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.
Re:Mono is a good thing (Score:3, Insightful)
Re:Mono is a good thing (Score:3, Interesting)
FUD. MS owns an implementation of the C# standard. They do not own C#.
Re:Mono is a good thing (Score:3, Funny)
It'd be even more fun than a Klingon-Esperanto dialect.
I guess you haven't looked at GNUstep and
Re:Mono is a good thing (Score:3, Insightful)
why? (Score:4, Interesting)
Re:why? (Score:5, Insightful)
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.
Re:why? (Score:3, Informative)
Re:why? (Score:3, Funny)
Inside every DVD-ROM of bloatware there is an 11kB program screaming to get out.
Re:why? (Score:5, Informative)
Microsoft is now wedded to
MS isn't dumping
I don't "get" Mono either. (Score:3, Insightful)
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.
Re:I don't "get" Mono either. (Score:5, Informative)
In addition, it's much harder to make programming blunders such as overstepping the bounds of an array or string, which can in turn lead to security vulnerabilities.
Those two reasons alone are enough to favour a Java/C#-type approach in situations where absolutely bleeding-edge performance isn't a requirement (i.e. almost all of them).
Re:I don't "get" Mono either. (Score:3, Insightful)
Programmer productivity is higher in garbage-collected (MS calles them "managed") environments such as Java and .Net/C#.
Nothing prevents C++ from being used with a garbage collector as well as with any of a number of other memory-management models. (Really, between STL and shared_ptr, memory management is a non-issue in the vast majority of properly written programs, without the overhead and non-deterministic destruction of a garbage collector.)
And, by any chance, have you heard of products [ej-technologies.com] that de
Re:I don't "get" Mono either. (Score:3, Insightful)
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.
Even by the standards of the times C was just a straightforward block-structured procedural language. Compared to predecessors such as Lisp or even Algol it's not especially expressive. (I'm not bashing C here, I quite like it. But I wouldn't
Re:I don't "get" Mono either. (Score:3, Informative)
Just add a garbage collector, remove multiple inheritence, and eliminate the need for header files.
Oh wait, now you have java and C#
Don't just assume that because you like C++ for everything, that everyone else does.
Some things are just easier to do in java or C#.
There are plenty of cases when the bottleneck in your application is something like I/O or bandwith or SQL running time. In cases like these, often the benefit of a super fast GUI doesn't outweigh the rapid
Re:I don't "get" Mono either. (Score:3, Insightful)
It's all about offering an API to develop for Linux while only requiring basic Windows development skills using
C++ + GTK + other Linux specific libraries can often turn out to be scary for a Windows developer, making him/her stick with Windows and thinking "others" can "later" do the porting job if necessary. With Mono, a developer can go -- "hmm, I wonder if this will work on Linux now, being developed in
Re:I don't "get" Mono either. (Score:4, Informative)
You seem to have a fundamental misunderstanding of
This is actually a nice situation in some ways, since the JIT compiler knows more about the machine's runtime situation than a static compiler can.
For example, it can compile to 64 bit on 64 bit machines with zero changes in the source bytecode. It can also adapt to runtime situations (such as low memory conditions) more easily.
Of course this has the penalty of a slightly less responsive application the first time the code executes, but that's a small price to pay.
Not too smart (Score:3, Insightful)
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
I want fewer dependancies (Score:3, Insightful)
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.
Re:I want fewer dependancies (Score:5, Interesting)
I make my filthy living doing enterprise Java apps. I love my Linux servers and my Powerbook. But I don't go around preaching the gospel of Java to the unconverted. And that's exactly the point: Linux already has two useful and proven languages for desktop apps - C/C++. Make those better!
I almost feel like Miguel has been living in the corporate world a little too long, thus, like you said, his preaching of something else - a typical thing in the real world is not to fix it, but to re-do it in some other language. I see this stuff all the time and just roll my eyes. Then I spend ridiculous hours helping various teams meet their goal.
This is actually classic if you think about it. At first, KDE, namely Qt, was not open source. So instead of trying to fix it they made an entirely new desktop system. Of course, Qt later dropped those restrictions and now Gnome is the fat dog that can't get off the porch. So the mantra is if it doesn't go our way, we'll re-do it, but make it worse! Deja vu anyone?
Linux does not need sloppy developers porting all their crap from Windows. I mean, I think of all the junk out there on download.com.com.com.com and try to visualize that on my Mac (fortunately that's not possible) and a chill runs up my spine.
If you want to program a Linux app, learn C - it's not that hard and it can actually be, dare I say, fun! If you find something you don't like or you see is broken, submit the changes/fixes back to the community. Yay, you're an open source developer now!
C aside, sure, people will use Python, Perl, Ruby, nothing wrong with that. But these are languages with a Unix history, not a VB one. So I think the whole premise of wooing developers from a flawed platform design - ergo flawed programming logic - over to something that has much more academic exposure and a very rich history (I'm talking Unix here), is a disaster waiting to happen.
When I first started being interested in programming desktop Linux I didn't go look for Java bindings (altho, I did look for a JDK for server stuff), I used what was out there; in other words, I didn't try to re-invent the wheel! That said, yeah, sure, the C/C++ libs aren't perfect nor are they the holy grail of software development. I dunno, it just strikes me as odd, like some alien invader trying to convince me feverishly to get on board his space ship but won't tell me why(if you can imagine that), that there is so much push for Mono. Does make sense, I suppose from a corporate control point of view. Mono's roots are in the devil and that's enough for me. Yeah, sure, Sun owns Java, but Sun's also a Unix (yes, somehow that DOES make it milimeter better, esp compared to M$!) company and I have a little more faith in their corporate sesspool than Microsoft's. Altho, Schwartz is kinda dorky.
Anyway, the last line of the above post says it all; anyone invoking the name of Mr. Graham in a way that's pure and simple has the last word in my book.
Re:I want fewer dependancies (Score:4, Insightful)
I'm afraid that is not feasible, because C++ and (especially) C are not optimal for application development by design. Application code does not need to be implemented at the low level of C++ (on PCs at least), so the low level features are just a burden.
If you want to program a Linux app, learn C - it's not that hard and it can actually be, dare I say, fun!
Believe me, spending 4 hours on a task you could accomplish w/ 5 minutes of Python coding gets old real fast.
Mono's roots are in the devil and that's enough for me.
But as they say, devil's always had the best tunes
BTW, it's funny to note that I've only seen Mono promoted by Miguel&gang, and Eugenia of OSNews. Surely the technology should have more friends if it's so groktastic...
Regardless of Religion (Score:5, Insightful)
Mono takes away resources from delopment (Score:5, Insightful)
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.
Re:Mono takes away resources from delopment (Score:3, Insightful)
Let's assume that 10% of Windows/.NET developers decide to switch to Linux/Mono and 10% of Linux/Mono developers switch to Windows/.NET. Who do you think comes out ahead?
In the end, if means that developers will be able to port their Windows apps to Linux easier, it can only be a good thing.
Mono and GCC/gcj (Score:4, Interesting)
Why another back-end, yes GCC does not support JIT but you could have used LLVM for that.
Another thing is Mono developers don't seem to listen to some of the GCC developers when it comes to algorithms, one example is their PRE implementation is based on much slower and not as good algorithm as the one which GCC uses GVN/PRE.
From gcj prospective:
(again) Why another back-end?
Why another ABI, instead of hooking gcj and Mono together, there is another static ABI?
I know how to get mono (Score:3, Interesting)
I'm serious, you have to wade through old C based documentation, then guess what the
Oh, and monodevelop is still useless. Kudos for the effort, but I pretty much have to develop with #Develop under windows, then copy my exe to linux for testing.
And whats with the libicu version it requires? An emerge -u world pretty much broke everything mono related on my gentoo box.
Re:I know how to get mono (Score:4, Informative)
There are a couple of missing pieces like the Accessibility Toolkit (Atk) or Pango, but we are working towards finishing it.
Miguel.
Asked Microsoft about this yet? (Score:4, Insightful)
Someone wake me up when:
It makes easier to migrate to Linux (Score:3, Interesting)
Here I maintain some old apps written in VB6. Mainly interfaces to a SQL Server database and such. Microsoft is dropping support, so it seems logical to start thinking of something else to write stuff in, and
We have a very MS-centric environment here, but it doesn't seem that anybody particularly cares if it's Windows or not. Simply, stuff works with MS at the moment, and of course nobody is going to let me rewrite it all on Linux on company time without some very good reason.
So, I'm thinking
I'm not going to start making a switch to Linux right now, but my idea is that eventually somebody is going to ask me what to do when our VB6 stuff won't run on the newest Windows version, and I'll be able to answer "We can switch to Linux, and it will work without having to rewrite it".
All this is irrelevant without the toolkits (Score:5, Insightful)
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.
Doesn't instill a lot of patent confidence (Score:4, Insightful)
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.
There's not much confidence to be had... (Score:3, Interesting)
I hate to say it, but given the current software patent regime, that is the strongest guarantee ANY software project can give (Free or otherwise).
Let's say you're writing a piece of software. Can you guarantee that you aren't violating any patents?
Probably not -- you're almost assured that there are already patents in place, even for relatively trivial things; your safety from those depends wholly on either the patent-holder's ignorance or good graces.
Oh, and by the way, don't go looking for yo
People here STILL don't get it (Score:5, Insightful)
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!"
A simple solution (Score:5, Interesting)
There is a very simple solution to all this.
Rather than Miguel having to repeat himself over and over in defense of Mono, why doesn't Novell just release the legal opinions they have on the important issues related to Mono?
Instead of telling us not to worry, just give us the facts.
I realize that this is a lot to ask of a company, but the FLOSS community is hard to satisfy. It wants to get the real info, not just the marketing.
Novell doesn't need to release their whole Mono legal opinion. Just enough to answer the questions that concern OSS developers. For example, could the EMCA parts of Mono ever require a license other than the GPL? What is likely to happen with the Mono implementation of ASP.NET?
I tried to get Mono, I really did (Score:3, Informative)
So, Miguel, how about putting together a god damn yum repository that contains all required dependencies so that the users of one of the most popular distros would be able to at least try your software, if not "get" it? I remember back in Ximian days the only thing you needed to install Gnome was ssh connection.
Re:CopyCats... (Score:3, Informative)
You mean like this [parrotcode.org]?
Why the need to copy? (Score:2, Insightful)
Useful? (Score:5, Insightful)
Re:CopyCats... (Score:5, Insightful)
The whole point of implementing a standard is to copy.
Re:good morning, astroturfers (Score:2)
That's because GNUstep is based on something that doesn't suck.
(sugar-free white kool-aid)
Re:quote (Score:3, Interesting)
Comment removed (Score:5, Insightful)
Re:C# vs Python (Score:3, Insightful)
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.
Re:I, for one, must be missing the point ! (Score:4, Informative)
We might evaluate interception on a case-by-case basis.
Miguel.