Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming Software IT Technology Linux

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."
This discussion has been archived. No new comments can be posted.

Miguel de Icaza Explains How To "Get" Mono

Comments Filter:
  • 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.
    • Only the latter two are apples to apples, really. If you mean C# vs. C++, well, considering strictly the language, C# *overall* seems like it is more productive than C++, which shouldn't be too surprising. That's not, of course, to say that you should use C# instead of C++ everywhere. On the other two issues, I can't really comment.
    • by kc8kgu ( 244956 ) on Wednesday March 23, 2005 @10:11AM (#12022878)
      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.)
      • Well, interesting. This tells us the CLR is pretty good. But what about the libraries? Did you use Microsoft's Windows.Forms or Monos?
    • I was wondering the same, too. But in TFA, the first figure is captioned:
      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.

    • by jone1941 ( 516270 ) <jone1941.gmail@com> on Wednesday March 23, 2005 @10:15AM (#12022926)
      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.
    • Good question. Every time I look at the site to see how it's doing, what's implemented and what's not I go cross-eyed. And elsewhere.

      Which is a shame, because the .NET environment is fundamentally very well designed and, despite its origins in the evil empire, actually has a lot going for it. And Mono should give the FOSS movement a chance to play their own game of "Embrace and Extend".
    • I have tried Gtk# (Score:5, Informative)

      by r6144 ( 544027 ) <r6k&sohu,com> on Wednesday March 23, 2005 @10:34AM (#12023088) Homepage Journal
      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.

      • 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 datab
      • by Dr. Sp0ng ( 24354 )
        C# classes have significant overhead when there is only a few members, and C# structs doesn't seem to be as flexible as C structs

        Eh? Where are you getting this?

        The major difference between the two is that classes are reference objects while structs are value objects. Other than that there are limitations in terms of inheritance with structs and things of that nature, but your statement that C# classes with few members have a lot of overhead is simply false.
    • I've been a C# developer for a couple of years now, and have been keeping an eye on Mono. Now that I have a Mac mini, the idea of using a language I know vs. having to learn Objective C, combined with the Cocoa# GUI framework, is very attractive.

      I'll be doing some serious downloading this weekend!

      Chip H.
      • by bonch ( 38532 ) on Wednesday March 23, 2005 @01:00PM (#12025240)
        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.
    • It was easier for me to setup XSP and Mono than Tomcat and Struts/Java etc. It might be because XSP/Mono is still relatively immature compared to the bevy o' java frameworks we have to choose from. But sometimes having too many choices wastes lots of time for us newbies. Makes it hard to choose the best solution and causes confusion etc.
      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
    • by Anonymous Coward on Wednesday March 23, 2005 @11:03AM (#12023443)
      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 :)
    • I recently had to write a C# interface to OpenLDAP. The easiest way I could find was to use Novell's LDAP library for C#. But it is built on Mono, and I didn't have time to crunch through the thousands of lines of code and rebuild the binary for Microsoft's .NET framework. Interestingly enough, the only thing I needed was the Mono.Security.dll file, which is referenced from the Novell LDAP binary. So even though the Novell binary and Mono.Security.dll were written and compiled against Mono, having just
    • by omicronish ( 750174 ) on Wednesday March 23, 2005 @11:30AM (#12023882)

      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.

    • by TheBracket ( 307388 ) on Wednesday March 23, 2005 @11:55AM (#12024313) Homepage
      My object-relational mapping library (Persist [csharpninja.com], 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.

  • by geoffspear ( 692508 ) * on Wednesday March 23, 2005 @10:03AM (#12022820) Homepage
    Trying to tell people on Slashdot how to get Mono is kind of pointless. First you've got to talk to a girl.
    • by Anonymous Coward on Wednesday March 23, 2005 @10:15AM (#12022921)

      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.

    • by Anonymous Coward
      Mono is an Open Sores implementation of the .net Framework, that means that unlike the Closed Sores Implementation that microsoft has, you can spread Mono to anyone you kiss. The microsoft version, requires that you get it from a Microsoft authorised vendor, and well, who wants to kiss that guy eww!
      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
    • you can also buy it from giantmicrobes.com

      or from thinkgeek.
  • by Anonymous Coward on Wednesday March 23, 2005 @10:10AM (#12022866)
    It seems rather unfair to call those developers who do not support Mono "dubious". Surely it would be better to say they are "sceptical".
    • dubious ( P ) Pronunciation Key (db-s, dy-)
      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.
    • by r00t ( 33219 )
      I sure have doubts over the patent issue. No, I take that back. I'm confident that mono has patent problems. There is nothing to doubt.

      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?

      • But as Miguel points out, pretty much all software, written in any language, has patent problems. That's just the kray-zee world we live in. If anything, GPLed projects may be safer, because IBM and Novell have threatened to use their patent arsenals in retalation against anyone trying to sue open source projects for patent infringement.
  • by GodLived ( 517520 ) on Wednesday March 23, 2005 @10:11AM (#12022877) Journal
    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.
  • Will the register-based VM of Parrot trump the plethora of stack-based environments in circulation, e.g. Mono?
    Or, will MS port its Office suite to C#, relase Linux binaries, and enjoy a jolly chuckle?
  • The Secret of .NET (Score:4, Insightful)

    by LegendOfLink ( 574790 ) on Wednesday March 23, 2005 @10:15AM (#12022922) Homepage
    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?
    • by Nasher ( 868384 )
      Well I can understand it if that's what he's thinking. 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.
      • by Screaming Lunatic ( 526975 ) on Wednesday March 23, 2005 @02:23PM (#12026311) Homepage
        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.)

    • Considering the amount of actual code Miguel has written in his lifetime, if he thinks the Mono technologies he's working on will make programming easier/better, I'd probably trust him on that.
      • Considering the amount of actual code Miguel has written in his lifetime, if he thinks the Mono technologies he's working on will make programming easier/better, I'd probably trust him on that.

        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
    • by micromoog ( 206608 ) on Wednesday March 23, 2005 @10:53AM (#12023275)
      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.

      • by DrXym ( 126579 ) on Wednesday March 23, 2005 @12:15PM (#12024609)
        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.

        • by The Slashdolt ( 518657 ) on Wednesday March 23, 2005 @02:16PM (#12026199) Homepage
          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!

  • by mwvdlee ( 775178 ) on Wednesday March 23, 2005 @10:21AM (#12022973) Homepage
    Just like I don't see the point in using .NET, why would I be using Mono instead?
  • by Trigun ( 685027 ) <<xc.hta.eripmelive> <ta> <live>> on Wednesday March 23, 2005 @10:26AM (#12023028)
    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.
    • by mosel-saar-ruwer ( 732341 ) on Wednesday March 23, 2005 @10:52AM (#12023263)

      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.

  • Hmm... (Score:3, Interesting)

    by jav1231 ( 539129 ) on Wednesday March 23, 2005 @10:29AM (#12023049)
    I get the impression that while RMS would tell us to beware the Microsoft Whore, Miguel would ask us to suckle at her teats. The rest of us are somewhere in the middle.
    OT, I know.
  • by CaymanIslandCarpedie ( 868408 ) on Wednesday March 23, 2005 @10:34AM (#12023087) Journal
    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.
    • MS would NEVER let this happen. Have you ever heard of J++? Once .NET grabs hold MS would extend it in such a way as to make apps written in C# incompatible with their non-ms bretheren. Exactly what they did with J++. The difference here is that Sun owned Java and sued MS for extending Java without their permission. In this case will Mono sue MS for extending C#? MS owns it! In your theory MS's killer application MS Office will be rewritten in .NET and run on Linux. Do you honestly think MS would allow this
      • by Rolan ( 20257 ) *
        MS would NEVER let this happen. Have you ever heard of J++? Once .NET grabs hold MS would extend it in such a way as to make apps written in C# incompatible with their non-ms bretheren. Exactly what they did with J++. The difference here is that Sun owned Java and sued MS for extending Java without their permission. In this case will Mono sue MS for extending C#? MS owns it!

        FUD. MS owns an implementation of the C# standard. They do not own C#.
  • why? (Score:4, Interesting)

    by mattyrobinson69 ( 751521 ) on Wednesday March 23, 2005 @10:34AM (#12023092)
    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.
    • Re:why? (Score:5, Insightful)

      by caseih ( 160668 ) on Wednesday March 23, 2005 @12:47PM (#12025048)
      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.
  • by Markus Registrada ( 642224 ) on Wednesday March 23, 2005 @10:43AM (#12023183)
    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.
    • by tc ( 93768 ) on Wednesday March 23, 2005 @11:01AM (#12023423)
      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).
      • 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

    • 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

    • Fine we'll all switch completely to C++.
      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
    • I don't "get" Mono either

      It's all about offering an API to develop for Linux while only requiring basic Windows development skills using .NET.

      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 .NET?" and maybe suddenly it will, or with only minor modifications.
    • by man_of_mr_e ( 217855 ) on Wednesday March 23, 2005 @12:04PM (#12024431)
      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.
    • Not too smart (Score:3, Insightful)

      I assume that by "problem we don't have" you mean the idea of a single binary that runs everywhere, and your ideal solution is to build CPU-specific binaries from (open|free) source.

      Obviously you haven't given it enough thought.

      First off, there is no such thing as one source that compiles for every CPU. What you get is meta-source that preprocesses into various different programs, for each architecture and OS. All the different outputs need to be tested seperately. But it gets worse, since the assumptions
  • by gr8_phk ( 621180 ) on Wednesday March 23, 2005 @10:43AM (#12023185)
    I just want my linux system to have fewer libraries, languages, and other dependancies. These would best be written in C or C++ for speed (common libraries, not necessarily apps). We don't need no stinkin' new languages - especially interpreted - to add to the bloat. Languages are like assholes - everybodys got one and thinks it's *the shit*. Now why should anyone jump on yet another bandwagon? Add to that even the most remote possibility that MS will try to stir the pot as a result and ask again. Why couldn't we just build nice libraries for C,C++,Python,(Java?) that are already popular instead of cloning MS and asking everyone to switch? We just saw a lot of ranting about how slow and bloated gnome is getting, so why is it imperative that everyone jump into a new language? I know why HE likes it, it's his job. But please stop bothering me about it.

    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.

    • by Lysol ( 11150 ) on Wednesday March 23, 2005 @12:32PM (#12024846)
      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.
      • by ultrabot ( 200914 ) on Wednesday March 23, 2005 @01:48PM (#12025824)
        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...
  • by PepeGSay ( 847429 ) on Wednesday March 23, 2005 @10:49AM (#12023235)
    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?"
  • by acomj ( 20611 ) on Wednesday March 23, 2005 @10:51AM (#12023254) Homepage
    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.

    • I just don't see the point of having mono without .net. Its going to drive developers to window

      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)

    by norwoodites ( 226775 ) <pinskia@ g m a il.com> on Wednesday March 23, 2005 @10:55AM (#12023308) Journal
    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?
  • by stratjakt ( 596332 ) on Wednesday March 23, 2005 @10:59AM (#12023369) Journal
    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.
  • by puppetluva ( 46903 ) on Wednesday March 23, 2005 @11:08AM (#12023540)

    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.
  • by vadim_t ( 324782 ) on Wednesday March 23, 2005 @11:12AM (#12023613) Homepage
    Or, at least that's what I intend to do it.

    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 .NET seems a fairly good choice.

    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 .NET looks like a good choice for future programs. The language looks pretty good, and if I properly separate UI and logic, it should be a lot easier to migrate stuff to Linux. Besides, by the time Microsoft drops support there will be mature and well tested alternative implementations out there.

    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".
  • by IGnatius T Foobar ( 4328 ) on Wednesday March 23, 2005 @11:27AM (#12023829) Homepage Journal
    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.
  • by jbwiv ( 266761 ) on Wednesday March 23, 2005 @11:34AM (#12023962)
    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.
    • Wake up.

      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
  • by zoomba ( 227393 ) <mfc131NO@SPAMgmail.com> on Wednesday March 23, 2005 @11:39AM (#12024054) Homepage
    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!"
  • A simple solution (Score:5, Interesting)

    by Qwavel ( 733416 ) on Wednesday March 23, 2005 @11:44AM (#12024154)

    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?
  • by melted ( 227442 ) on Wednesday March 23, 2005 @02:46PM (#12026596) Homepage
    However, my policy is, if it won't install clear out of yum repository on Fedora Core 3 it's not ready for my use. I'm sorry, I work on my computer. I have better things to do than chasing down dependencies and installing RPMs from untrusted sources. In year 2005 I simply refuse to spend my time on this kind of shit.

    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.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...