Slashdot Mirror


Mono and dotGnu: What's the Point?

joeykiller writes "The Register features an opinion by Neil Davidson, asking 'Mono and dotGnu: What's the point?' Some of the points he raises may seem irrelevant for open source supporters (like why make a C# compiler while Microsoft's is free anyway), but others are thought provoking and maybe a little bit controversial. You may not agree with his opinions, but it's an interesting read anyway."

22 of 493 comments (clear)

  1. He obviously doesn't get it by Meat+Blaster · · Score: 4, Insightful
    The points are avoiding vendor lock-in, remaining within a comfortable framework, and having the potential to extend things in your direction instead of Microsoft's.

    Although their time might be better spent in designing a true alternative to Java and C# instead of a copy that allows you to write a GNU application that runs everywhere, it's hard to fault Mono for recognizing a market niche and running with it. For example, maybe they'll make C# work on Linux embedded devices where Microsoft wouldn't go?

    1. Re:He obviously doesn't get it by Karamchand · · Score: 4, Insightful

      You don't get it :)
      He understands all these points well. But he doesn't think it's a good thing because then everyone - even on Linux, even on embedded devices - will use .NET and whenever Microsoft feels like it (i.e. when Mono/dotGNU really have a market share) they can enfore their patents and - whooops, Mono/dotGnu have vanished.
      Regards

    2. Re:He obviously doesn't get it by Cereal+Box · · Score: 4, Insightful

      And Java is a better choice for embedded systems? Obviously native code is best, but you can't deny using languages like Java or C# on embedded systems -- the demand is obviously there. And .NET is bloated and produces "extremely bloated and slow programs"? By all accounts I've read, between .NET and Java, .NET is the one with the performance advantage (and a significant one at that).

    3. Re:He obviously doesn't get it by GeckoX · · Score: 5, Insightful
      Good idea. Take something that is extremely bloated (.NET) that produces extremely bloated and slow programs (C#)
      You have proven with this statement that you have absolutely no idea what you are talking about. From someone who is actually using .NET and C#, I can say without a doubt that this statement is pure FUD. Compare the bloat and speed to Java or VB, now where are you at? Now add in all of the other features, like portability, interoperability, ease of development, wonderful design-time tools etc etc... No, it's not as tight, compact and speedy as well written C/C++/Assembly, but if you expect that well, apples and oranges really as they are totally different beasts...right tool for the job and there are a LOT of jobs that .NET and C# are an extremely good choice of tool for.
      --
      No Comment.
    4. Re:He obviously doesn't get it by Tagren · · Score: 4, Insightful

      They only submitted parts of the API to ECMA.
      Important stuff such as System.Windows.Forms and ASP.NET and a few more are not ECMA standards.
      That is why they will have ecma profiles for the compiler i guess.
      --

    5. Re:He obviously doesn't get it by Slime-dogg · · Score: 4, Insightful

      ...they can enfore their patents and - whooops, Mono/dotGnu have vanished.

      Are you sure you have a good understanding of what a patent is? They are not enforceble if you do not use the same method as the one that is patented. Essentially, MS has patented certain algorithms that happen within Windows.Forms, which can be and are being rewritten in another way.

      I doubt that an API is patentable, since it isn't a method or a material object. Then again, if it were, enforcing it against Mono or DotGNU is pointless... the projects are not profiting from the sale of the technology. They don't even exist in the same marketplace as the framework, since they are completely free.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
  2. bright people doing what they like for free ... by Anonymous Coward · · Score: 5, Insightful

    ... doesnt always mean it makes sense from a resource point of view or from "the big picture". But that is the price with people giving up their own time.

    I, myself, am happy to have the chance to sample some of this work for free. Who am I to judge since I'm not paying?

  3. Let the mindless bashing begin by daviddisco · · Score: 4, Insightful

    We know that Slashdot posts these kind of articles as bait for the meatheads who think that being against Micro$oft makes everything they say correct. Microsoft bashing is no substitute for thinking. Be free! Think, think!

  4. Motivations by Pedrito · · Score: 5, Insightful

    As a .NET developer, frankly, I don't care what the motivations of Mono develoers or dotGnu developers are. Maybe I should be, but I'm not. I'm building an open source project in .NET and I want Linux, BSD and Mac OS X support (the latter two, hopefully with the help of SSCLI), and frankly, whatever other platforms I can include.

    I don't want to use Java. First of all, I've never used it to develop software. Second of all, every user interface I've ever seen done with Java stinks. Maybe I've been seeing bad examples, but the windows, buttons, and other contols of the Java apps I've seen have an old fashion look and feel to me and I don't care for it. My personal opinion, but for me, that counts for something.

    .NET is a really nice development environment. As much as I don't care for Microsoft, I have to admit that since I adopted C# about a year and a half ago, my production has roughly tripled, maybe more. I've never had ANY technology have that kind of impact on my development before, unless it was the reverse (making me 3 times LESS productive).

    So, whatever the motivation of Mono or dotGnu, I simply want to develop my cross-platform C# apps. That's MY motivation, and that's what matters to me.

  5. One reply by miguel · · Score: 4, Insightful

    We read with interest the piece from Neil on the purpose of Mono, and
    I wanted to clarify a few things, because Mr Neil does not seem to
    have looked at the Mono Roadmap, nor tried a recent release, since
    code signing (authenticode and strongnames is implemented, remoting is
    completed (soap, binary, http, tcp transports) and most of the
    side-by-side assemblies work is done, and will be part of 1.0).

    The Mono Roadmap (www.go-mono.com/mono-roadmap.html) contains the
    release time frames for the various features of Mono and will help him
    and other readers understand what exact plans are: no speculation, and
    no half-cooked facts.

    I am surprised by the motivation to do so little research on our
    project given that Mr Neil is the technical director of a company that
    sells .NET software; You would think that the use of Mono would help
    him reach customers using Linux, using mainframes or MacOS X.

    Mono is based on the ECMA 334 and 355 standards. We like the C#
    language and its runtime (as does Mr Neil's company) because it
    increases our developer productivity, reduces the time to market of
    our new products, this despite the fact that we do not implement Code
    Access Security, which will only be used in embedded situations, a
    segment that we are not ready to address in Mono 1.0.

    We want to improve the productivity of developers in Linux, mainframe
    and OS X developers by brining this unique platform to other
    platforms. Just like Borland, SGI, Sun and IBM provide compilers,
    runtimes and tools for other languages, we provide such a piece for
    C#/.NET.

    Mr Neil does not seem to understand why bootstrapping a C# compiler is
    important, so let me explain this in terms he would understand: it is
    important because:

    * Using C# to write a C# compiler means that it improves our
    development speed.

    * To be able to harvest the benefits of productivity of C# on
    Unix, we need a bootstrapping system.

    * It allows us to write software on Unix without and be
    self-sufficient to develop software as opposed to require
    a Windows machine to develop software, and another to run it.

    * It means that we trust our technology enough and it is solid
    to the point that a relatively complex piece of software not
    only runs, but is binary-compatible with the Microsoft
    runtime.

    Mono's objectives are not "To break Microsoft's monopoly". We do not
    define ourselves in this way, there are more important social causes
    to fight. We look at the ECMA 334/335 standards as a solid foundation
    to improve Linux and bring more software, more quickly to it, and make
    the development process more fun.

    There is a lot more about this on:

    http://www.go-mono.com/rationale.html

    And a few other interviews

    1. Re:One reply by Pedrito · · Score: 4, Insightful

      C# exists to kill Java. By furthering C# you help Micros~1. .NET exists to kill Java. By furthering .NET you help Micros~1.

      That YOU are so sycophantic re: Micros~1 and mono is the greatest irony of all time. It would be funny if it weren't so truly stupid and truly dangerous.


      This is a variation of killing the messenger for delivering the message. Instead you want to kill the message (.NET and C#) because you don't like the messenger (Microsoft). Frankly, I think it's just as stupid as killing the messenger.

      Miguel thinks, and frankly, I agree, that .NET and C# are superior to Java in some respects. I don't think creating a .NET platform for Linux hurts Linux nearly as much as it helps.

      Has WINE helped or hurt Linux? It provides people a layer of compatibility that allows them to migrate to Linux. That's REALLY important to a lot of people, companies, and governments who are deciding which platform to use. If I'm a government agency and I have a custom tool written in C# and now we're thinking about whether to switch to Linux or continue using Windows, I have an option. Without Mono and dotGnu, my decision is made. I have to stick with Windows or rewrite my software. Which one do you think will cost me more.

  6. Running it somewhere other than Windows? by Kupek · · Score: 4, Insightful

    While providing freedom of choice might be reason enough to justify a project, practical programmers could be asking: What's the point?

    Linux, maybe? Mac OS X? Free BSD? I see getting C# programs to run on other platforms as a practical purpose. Later on in the article he acknowledges that you'd be able to run these programs on Linux, but that's more like a throw away concession he makes. He plays dumb in the beginning, and makes himself look silly.

    How is making C# a standard on Windows and Linux going to hurt Microsoft?

    I think that the people behind the project have better goals than that - namely, getting a particular tool to work on Linux. People use Linux for a variety of things. It would be nice if C# - just another tool - worked under it. What's the big deal?

    There is an obvious practical purpose to getting C# programs to run on Linux. The real question, however, is will the .NET framework on Linux be good enough so that people will actually want to use it? That's a very real question, but it's not the main one he's asking.

  7. Re:Free for who? by Shillo · · Score: 4, Insightful

    Mono is currently focused on properly wrapping Gtk and GNOME functionality (pure wrappers, without going through Forms). There are already a few apps that use this, and at least one is IMHO a potential killer app (namely Dashboard).

    It goes without saying that both Gtk and Gtk# (Gtk wrapper for Mono) work on Windows, too. So you don't lose cross-platform angle, but this does show that Mono is *not* just a .NET knockoff.

    --

    --
    I refuse to use .sig
  8. Re:grrr. by larry+bagina · · Score: 4, Insightful
    C# is an ECMA standard. Sun has refused to bring java before a standards body.


    I don't care, you might not care, but for FREE/Open Source zealots it matters.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  9. Why not support Java then? by meadowsp · · Score: 5, Insightful

    It's a more established framework and a lot more cross-platform.

  10. The true question: by happyDave · · Score: 5, Insightful

    I think the real point that he's missing is that every project undertaken on Open Source that's a direct response to something that Microsoft is doing is a step in the direction of eliminating barriers to entry. Anything that can be done on an Open Source platform that could previously only have been done in a Closed Source environment is a good thing.

  11. Re:grrr. by Baki · · Score: 4, Insightful

    Java is available on many more platforms though. And the JVM spec is open, plus all classes are available in source code.

    As for .net, only parts have been opened. Large and essential parts are closed and subject to change. Its potential for "run everywhere" is much smaller, and danger for vendor lock in much higher.

    Technically, .NET/C# is just like JVM/Java. Except that Java is older and more mature, which has advantages but also some disadvantages (cannot break backwards compatability). Many of C# extra "features" are unnecessary "syntactic sugar", some are superfluous and harmful, and those that are truely useful appear in JDK 1.5 soon. Plus, in JDK 1.5 gets features such as generics which are coming in .net as well, but at a much later time.

    You can also compile many language in JVM, but SUN has never used that as a selling point since it is pretty silly. All .net languages are fundamentally equal, just the syntax is different.

  12. Agreed! We must innovate! by jaywhy · · Score: 5, Insightful

    I don't know why everyone in the open source community feels compelled in chasing behind Microsoft technologies, whether it be Mono or Wine. When I talk to people about the benefits of Linux and open source; I always seem to always mention Apache, Perl, and MySQL. I mention these products not because there based on or copied from Microsoft technology. It's because they are innovative open source projects. These open source projects do well not because there open source; but because there BETTER then there closed source counterparts.

    We shouldn't lag behind and chase Microsoft's coattails. We should instead innovate; create our own .NET our own technologies, and make them BETTER then their closed-source counterparts. That's the only way we win. You cannot win a race by chasing your enemy. You must pull ahead.

  13. Re:Technical Director? by somethinghollow · · Score: 5, Insightful

    I'll sum up the article: It'll be a really long an arduous task to be fully compatible with Microsoft's .Net stuff, so don't even try.

    I'm sure Linus would have gotten the same sort of flack when making Linux. But he started the project, and look what it is becoming.

    I think what the guy doesn't see is that not everyone 1) wants to program/compile on Windows (let alone whether they have a copy) and 2) wants to run this supposedly cross-platform language only on Windows.

    It's okay to have dreams of bringing down a monopoly, but the point of an open source project is to have other options. Even if it is a long and arduous task, it still has merit, and should still be done, even if for just another option.

    Now, if Microsoft makes a Linux compiler for .Net and a X11 implementation of Windows.Forms, then the article might have a little more validity. At least then there would be a choice of OSes.

  14. Re:you do know.. by Waffle+Iron · · Score: 4, Insightful
    that C# and IL are an international standard (at least in ECMA's eyes) and MS has absolutely no control over the language right?

    They have no control over C# standards in exactly the same way they have no control over HTML standards: Developers code to the Microsoft implementation, regardless of what the "standard" may say.

  15. then point the zealots are missing... by BCGlorfindel · · Score: 4, Insightful

    I'm seeing alot of people complaing about how mono is a waste of time because MS can pull the carpet out from under everyone with proprietary library updates that will prevent .NET apps from running on mono. That is entirely probable and it is most likely beyond the ability of the mono team to keep up with such changes. Let alone the time to ensure .NET to mono compatability. But give the mono team some credit, don't you think they too might know this? I ask this question to all the waste of time whiners: What can MS do to stop mono to .NET compatability?

    That's right, open source projects written in mono will have the ability to run under both linux and windows, mono and .NET, without any rewrites, and with a consistent feel. That is the point. It would speed the cross-platform development of projects like Mozilla and OpenOffice that both windows and linux users alike are trying. What better way to transition users dependent on windows apps(not windows itself) to a linux environment, one app at a time. Forget about allowing the commercial .NET programs to run under mono, think about replacing them with equivalent Open Source mono apps.

  16. Re:Free for who? by William+Tanksley · · Score: 4, Insightful

    I understand where you're coming from, but none of these points pertain to the .NET Framework as a Framework, but rather what you can build with it.

    No. You can't build GTK# using only the Framework, any more than you could build Windows.Forms using only the Framework. You need GTK for GTK#, and you need Win32 for Windows.Forms.

    Windows.Forms is part of Microsoft's .NET Framework, and GTK# is Mono's extension to the .NET Framework to allow more portable .NET graphics.

    The Framework is the CLR and standardized API.

    Right. And Mono implements the CLR decently (minus a few features), then implements the API decently (minus a lot of features, but slowly catching up); then it adds to that API more features.

    Constructing their own GTK# language

    API, not language.

    and database access is not an extension to "The Framework" but rather an implementation of the "The Framework".

    Wow. No. Not even. Ever. Under any definition.

    Both of those things (GTK# and the database API whose name I've forgotten) are APIs that Mono developers have, that the .NET standard doesn't, but which could be added to .NET. They're extensions.

    They are NOT a implementation of the Framework. Mono is an implementation of the Framework.

    Unless they are making modifications to the CLR and/or adding new instructions to the CIL, they're not extending anything,

    Great! Then we agree -- because Mono makes modifications to the CLR (by providing more APIs), it's extending .NET.

    [they're not extending anything,] anymore than I do when I write my own application.

    But Mono isn't just a .NET application. If you wrote a reimplementation of .NET that had more capabilities in its APIs than Microsoft's, then you'd be extending .NET just the same as Mono is.

    -Billy