Slashdot Mirror


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."

54 of 559 comments (clear)

  1. Anyone Have Actual Experience With Mono? by the_mad_poster · · Score: 5, Insightful

    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:

    - Mono Vs C++
    - Mono Vs .NET C#
    - 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!
    1. Re:Anyone Have Actual Experience With Mono? by kc8kgu · · Score: 4, Informative

      About a year ago, I wrote a C# webserver that did basic authentication, cgi, and directory browsing. It had a GUI but I partitioned it so that the webserver wasn't depenent on the GUI interface. I downloaded mono, created a console front end, compiled and ran it. Flawless. I didn't have to change one single line of code in the webserver class. Thats all I need to know. (BTW, this was on a windows box.)

    2. Re:Anyone Have Actual Experience With Mono? by jone1941 · · Score: 5, Informative

      I'm sure I know less than most, but here are my general experiences with it.

      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. .Net C# - The only major difference is mono's lack of complete support for windows.forms. This is windows primary API for building C# gui apps under windows. Mono is working on an implementation of windows.forms, but I personally prefer gtk# which is portable (at least to windows afaik). Also, they have and ASP.net implementation which is suppose to have great compatability but I can not speak from experience here

      Mono compatability claims - here's the shocker, it really is very compatable with microsoft's C# .net platform. We're talking about ECMA specifications here, so they really can strive for compatability, it's less of (though not completely) a moving target than the WINE people have to deal with. They use to have a page listing package status, I can't seem to find the link anymore.

      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.

      --
      Fear trumps hope and ignorance trumps both
    3. Re:Anyone Have Actual Experience With Mono? by kc8kgu · · Score: 4, Informative

      No forms at all, gtk or windows. As I said I whipped up a console (cmd line) front end just for the mono test. I should also mention that this webserver was heavily multithreaded - which is another important yardstick for the maturity and stability of their code.

    4. Re:Anyone Have Actual Experience With Mono? by Anonymous Coward · · Score: 5, Interesting

      This is a bit long-winded, bare with me, I'm practically a ./ virgin ;)

      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 :P Be that as it may, enough flames have been traded on this subject in the past; for me, operator overloading is a major point when doing scientific algorithms, so java is not an option.

      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 .Net framework beta indicates that this will still be present in the next version of the MS .Net JIT.

      Now, I appreciate that my kind of app is probably on the fringes of what could be considered "a typical" .Net app, but I'm still dissapointed with the performance compared to other JITed languages like, say, Java.

      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 :)

    5. Re:Anyone Have Actual Experience With Mono? by omicronish · · Score: 4, 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:

      • Took a while to discover how to setup a beta release of Mono on Gentoo, since it's masked. But after I figured it out installation was a breeze.
      • After getting the code on my Gentoo machine I had to figure out a way to compile it, since an MSBuild-equivalent isn't available yet for Mono, and so I couldn't use the solution file provided by VS. MSBuild is basically the next generation of the build process for Visual Studio, and is quite powerful (not limited to Visual Studio, not limited to programming projects, etc.). In the end I simply constructed a command that used csc (or I think the Mono C# compiler that supports generics).
      • Most of the compile errors were due to missing System.Collections.Generic.Dictionary. It was a stub last I checked, so I wrote my own Dictionary that used System.Colletions.Hashtable. IDictionary was also missing some members, so I had to write my own IDictionary interface. Note that generics are part of .NET 2.0, which is still in beta, so I didn't expect any of this to work completely anyway.
      • After fixing compile errors there was a weird bug that might've been part of the JITer or the way Mono executed the code. I can't remember what it is now, but I worked around it.
      • And... it worked!! Code written using a beta IDE on a beta framework works with Mono with only minor problems. I was pleasantly surprised.

      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.

    6. Re:Anyone Have Actual Experience With Mono? by 0xABADC0DA · · Score: 3, Insightful

      Except that Java sans GUI did work flawlessly 9 years ago, and today Java is at least twice as fast as mono and it always will be faster since CLR "assemblies" prevent the most effective dynamic optimizations.

    7. Re:Anyone Have Actual Experience With Mono? by TheBracket · · Score: 3, Informative
      My object-relational mapping library (Persist, shameless plug!) runs smoothly on both Mono and Windows, with the exception of ODBC databases - Mono's ODBC stack doesn't support certain data types yet. It is actually faster under Mono than under Windows in some circumstances, and about the same speed normally. I've also created the middleware of a 3-tier mental healthcare billing system on Mono, and it handles remoting (with Windows-based clients, as well as cross-platform GTK# clients) pretty much perfectly. Implementing encrypting remoting sinks under Mono was a real pain, but is getting easier as the remoting code improves. Other than that, the only hassles have been to ensure that I ask the OS for paths, directory separator characters, and am careful about case sensitivity in filenames.

      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.

      --
      Lead developer, http://wisptools.net
    8. Re:Anyone Have Actual Experience With Mono? by kc8kgu · · Score: 5, Insightful

      I don't normally feed the trolls, but I'll make an exception in your case. I'm tired of hearing how great Java is especially compared to C#. I honestly don't know which is faster - I haven't tested them myself. But, I would guess that java, being much older then C#, has had time to do a good bit of optimization and may very well be as much as 20% to 30% faster.

      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

    9. Re:Anyone Have Actual Experience With Mono? by Daytona955i · · Score: 5, Insightful

      Normally I don't feed the trolls either but....
      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. .NET has what.... Microsoft? Ok so mono ports it to linux but you're still limiting yourself. Java runs on just about anything so if Microsoft and linux both go away tomorrow you don't have to throw away any of your code.

      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 .Net but it was only a brief thought. With Oracle and JDeveloper it took us very little time to get our stuff up and running. I've used Visial Studio and I really don't see what the big deal is. It's just another IDE that I would put on par with eclipse. However, I still prefer JDeveloper although I will eventually look at some of the plugins for eclipse and it may meet our needs as well. (JDeveloper is free and can be used with other DBs as well so it's not really an issue right now)

      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 .NET so we'll just have to wait and see when Microsoft will decide to stop supporting it and force you to upgrade to .NET2006 and backwards compatibility will kindof work except for any networking features because all the network stuff has been rewritten. (Laugh... that was a joke)

    10. Re:Anyone Have Actual Experience With Mono? by 0xABADC0DA · · Score: 3, Informative

      The flattened tree is equivalent to the stack-based layout of Java opcodes (since the JVM knows the arity of each method call) so that's just "revisionist naming" practiced in C# and its libraries to not look like a pure rip of Java.

      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 .NET is faster loading but slower at runtime. Check the language shootout for instance.

    11. Re:Anyone Have Actual Experience With Mono? by Lije+Baley · · Score: 5, Funny

      >>VB didn't take the lion's share of professional software development because people loved the ascetics of the language.

      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.

      --
      Strange things are afoot at the Circle-K.
    12. Re:Anyone Have Actual Experience With Mono? by AstroDrabb · · Score: 3, Informative
      Ok so mono ports it to Linux but you're still limiting yourself.
      I like and use both Java and C#. However, I have to tell you that your statement is wrong.

      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. However, even with great programs like IntelliJ IDEA, the virtual memory still gets way up there due to the JVM.

      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
    13. Re:Anyone Have Actual Experience With Mono? by ClosedSource · · Score: 3, Insightful

      "IMHO Java's only useful feature is that it has the best platform portability in computing history"

      No. That would be C.

  2. It'll never work by geoffspear · · Score: 4, Funny

    Trying to tell people on Slashdot how to get Mono is kind of pointless. First you've got to talk to a girl.

    --
    Don't blame me; I'm never given mod points.
  3. Dubious Developers? by Anonymous Coward · · Score: 5, Insightful

    It seems rather unfair to call those developers who do not support Mono "dubious". Surely it would be better to say they are "sceptical".

  4. Bullet Points by GodLived · · Score: 5, Funny

    Interesting interview. I often find myself talking in bullet points, but the way Miguel adds boldface and sublevel indents while talking - now that is an achievement.

  5. A shackers guide to Mono by Anonymous Coward · · 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.

    1. Re:A shackers guide to Mono by ArsonSmith · · Score: 3, Funny

      That sounds more like pink eye.

      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
  6. The Secret of .NET by LegendOfLink · · Score: 4, Insightful

    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?

    1. Re:The Secret of .NET by micromoog · · Score: 4, Informative
      The most important sentence in the interview is near the bottom:

      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.

    2. Re:The Secret of .NET by DrXym · · Score: 3, Informative
      Sadly that isn't as true as it might appear. While it's great that pure C# apps using common functionality will port, a hell of lot of real world apps won't.

      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.

    3. Re:The Secret of .NET by The+Slashdolt · · Score: 4, Informative

      You're absolutely correct. In the end, .NET apps written on windows will not work on Linux. But .NET apps written on Linux will surely work on windows. How this gives people incentive to move towards linux(as opposed to away from it) I will never understand. I want to see MS write MS Office in .NET so that it runs on linux. You think they'll do that? Yeah Right!

      --
      mp3's are only for those with bad memories
    4. Re:The Secret of .NET by Screaming+Lunatic · · Score: 3, Informative
      I'm a c++er and a look at the job pages quickly has me thinking that .NET is gaining ground all the time. The dilema is that to move into that field moves me away from where I currently am, able to stradle several technologies and not just MS stuff.

      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.)

  7. Useful? by DreadSpoon · · Score: 5, Insightful

    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) ?

  8. You want to speed mono acceptance? by Trigun · · Score: 3, Interesting

    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.

  9. Re:CopyCats... by hey! · · Score: 5, Insightful
    Yep. And slashcode is just copying because it uses TCP/IP. It should have its own transmission protocol, called SCP, based on its own internetworking program, called SIP.


    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.
  10. Mono is a good thing by CaymanIslandCarpedie · · Score: 4, Insightful

    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.

    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 .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.

    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 .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.

    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
  11. I have tried Gtk# by r6144 · · Score: 5, Informative
    I ported a Doom map viewer I wrote in C/GTK/Glade to Mono/Gtk#. It was about 20k bytes of C code. Converting it to C# took little effort, though being almost my first C# program I had some difficulty deciding between structs and classes for data structures (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). The resulting C# code was a little less verbose (about 20% fewer bytes) than glib-style C code, since I no longer need to call g_free()'s, and callbacks are more concise in C#. It worked perfectly under Mono.

    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.

    1. Re:I have tried Gtk# by tidewaterblues · · Score: 3, Interesting

      IMHO the true benefit of Mono is not in its intrinsic value as a langauge (althought I think that, in general, C# was very well thought out--the Framework was less well thought out, but still pretty good), but in its value (eventually) as a tool for cross platform development.

      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 database application for a publisher in Mono, since they have many platforms, and I think the overall effort of using this system will be easier that trying to pull a Mozilla on my budget.

      --


      ...En að Besta Sem Guð Hefur Skapað Er Nýr Dagur
  12. why? by mattyrobinson69 · · Score: 3, Interesting

    As mono is only a reimplementation of .NET and the actual implementation can differ, why not compile the source into native executables rather than bytecode? Surely it would be faster that way.

    1. Re:why? by man_of_mr_e · · Score: 4, Informative

      Lol. I love these kinds of conspiracy theories. They completely ignore the facts.

      Microsoft is now wedded to .NET, whether it wants to or not. Longhorn's userland is now largely .NET based (WinFX) making .NET apps first class citizens of the OS. Core Longhorn technlogies such as Avalon and Indigo are written in .NET.

      MS isn't dumping .NET anytime soon.

    2. Re:why? by caseih · · Score: 4, Insightful

      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.

  13. I don't "get" Mono either. by Markus+Registrada · · 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. 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.

    1. Re:I don't "get" Mono either. by tc · · Score: 4, Informative

      Programmer productivity is higher in garbage-collected (MS calles them "managed") environments such as Java and .Net/C#.

      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).

    2. Re:I don't "get" Mono either. by brpr · · 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 say it was particularly expressive, and it wasn't obviously designed to be so.)

      We already have a powerful, mature, and efficient language, proven effective for myriad successful Free Software projects. It's called C++.

      OK, efficient is reasonable, powerful is debatable, but mature?? It's only very recently that gcc has come close to supporting the C++ standard properly (and the same goes for the MS compiler, of course). C++ compilers in general have a history of being buggy and incomplete, going right back to the pre-standard cfront from AT&T.

      Miguel's unhappy experience with Microsoft's buggy pre-standard compiler (mislabeled "C++") has unfortunately led him astray. We need not be similarly misled.

      Two years ago, was g++ in a much better situation? You'll note that virtually no current compiler supports the extern keyword for templates, so C++ programmars still have to use a crippled language to get cross-compiler compatibility (if you're using a lot of templates, you pretty much lose the ability to compile modules separately).

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    3. Re:I don't "get" Mono either. by man_of_mr_e · · Score: 3, Informative

      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.

      You seem to have a fundamental misunderstanding of .NET and Mono. While it's true that the first version of mono was interpreted, no version of MS's .NET ever has been and the most recent version of Mono does not interpret either. It uses JIT compilers to compile code at runtime as it's accessed.

      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.

    4. Re:I don't "get" Mono either. by halosfan · · 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 that detect memory leaks in Java programs?

      Another thing you may want to consider is this: memory is not the only resource your program needs to properly dispose of. There are things like file descriptors, database connections, network connections, threads, mutexes and so on. With C++ deterministic destruction, these can be handled correctly and automatically. Try this with Java, in the presense of exceptions, and see where you are more productive.

      --
      My only problem with Microsoft is the severity of bugs in their software.
  14. Regardless of Religion by PepeGSay · · Score: 5, Insightful

    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?"

  15. Mono takes away resources from delopment by acomj · · Score: 4, Insightful

    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.

  16. "Compiler" -vs- Libraries by mosel-saar-ruwer · · Score: 4, 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.

  17. Mono and GCC/gcj by norwoodites · · Score: 3, Interesting

    Well here is the problem of Mono from a GCC prospective:
    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?

  18. I know how to get mono by stratjakt · · Score: 3, Interesting

    JUST TELL ME HOW I GET DOCUMENTATION FOR GTK# AND ALL THE OTHER BINDINGS!!!!!

    I'm serious, you have to wade through old C based documentation, then guess what the .NET wrapper "should" look like.. Bah.

    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.

    --
    I don't need no instructions to know how to rock!!!!
    1. Re:I know how to get mono by miguel · · Score: 3, Informative

      Have you tried using Monodoc? We have documented most of the Gtk namespace, and most of the underlying libraries (Gdk, GObject).

      There are a couple of missing pieces like the Accessibility Toolkit (Atk) or Pango, but we are working towards finishing it.

      Miguel.

  19. Re:Another VM? by danheskett · · Score: 4, Insightful

    It's not just "another VM".

    It's the VM that right now thousands of software vendors are writing against.

    Virtually of MS's ISVs are writing against .NET now. That's a lot of applications, and especially, vertical market applications.

    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 .NET with a commitment to maintain only "100% managed code". What does this mean?

    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.

  20. Asked Microsoft about this yet? by puppetluva · · Score: 3, Insightful

    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.
  21. All this is irrelevant without the toolkits by IGnatius+T+Foobar · · Score: 4, Insightful

    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!
  22. Doesn't instill a lot of patent confidence by jbwiv · · Score: 3, Insightful

    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.

  23. People here STILL don't get it by zoomba · · Score: 4, Insightful

    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.

    Sure, you still have to rework parts of your .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.

    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!"

  24. A simple solution by Qwavel · · Score: 4, 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?

  25. Re:I want fewer dependancies by Lysol · · Score: 4, Interesting

    Serious!

    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.

  26. Why not stick with Objective-C? by bonch · · Score: 4, Interesting

    Believe it or not, Objective-C and Cocoa still have advantages that C# has yet to catch up to.

    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 .nib files are actual serialized object graphs, so there is no code-generation. At run-time, the objects are just loaded into memory automatically as though they were created in code. Which keeps my project clean and seperated from the GUI (that whole model-view-controller thing) and really makes prototyping a GUI easy. I just hit Cmd-R to test the GUI in Interface Builder.

    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.

  27. Re:I, for one, must be missing the point ! by miguel · · Score: 3, Informative

    Seems fairly simple to intercept those calls and map them to managed code.

    We might evaluate interception on a case-by-case basis.

    Miguel.

  28. Re:I want fewer dependancies by ultrabot · · Score: 3, Insightful

    Linux already has two useful and proven languages for desktop apps - C/C++. Make those better!

    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...

    --
    Save your wrists today - switch to Dvorak