Slashdot Mirror


Mono Poises to Take Over the Linux Desktop

Edd Dumbill writes "Miguel de Icaza and the Mono team recently hosted a two day open meeting in Boston. O'Reilly have just published my report of the meeting. Highlights include Miguel's view that 'C is dead!' and the Mono approach to dealing with Microsoft patents on .NET."

22 of 925 comments (clear)

  1. Um, no. by ivern76 · · Score: 5, Informative

    This falls under the "I can't believe what I'm hearing" category...Mono is *not* ready as a plug in replacement for .NET, and it won't catch up before MS releases 1.2...for the foreseeable future, it's trailing behind the Windows implementation and is not likely to catch up.

    I see PyGTK as a much more reasonable (and WORKING) alternative to C programming for people who want to write Gnome apps. Or GTK--, for that matter. Mono currently has crappy System.Windows.Forms support (even with Gnome#), broken serialization support, the list goes on and on.

    1. Re:Um, no. by miguel · · Score: 4, Informative

      System.Windows.Forms is not part of the Mono 1.0
      release as you well point out.

      But Gtk# 1.0 is part of the Mono 1.0 release, and
      unlike Windows.Forms it is very mature and stable.

      Love,
      Miguel

  2. Platform Independence by WombatControl · · Score: 5, Informative

    I've been playing around with the Mono implementation of C#, and it's pretty good. It's not quite as good at RAD tasks as Python, but it has some advantages, and the syntax is much easier to play with than C or Java (but again, not quite as easy as Python, but I'm biased in that regard).

    However, Mono suffers from the fact that they're trying to play follow the leader by following Microsoft's implementation rather than creating a system of libraries from scratch. Microsoft has a history of pulling the old "embrace and extend" trick, and I fear something similar may happen here.

    My guess is that Microsoft will significantly alter the .NET APIs for Longhorn, leaving Mono behind with older legacy libraries that are no longer interoperable with the Microsoft compiler and the rest of the Windows-using world. Needless to say, that would be bad for the Mono team.

    Still, if Mono can remain independent, it could very well have a bright future. The Mono team has done a great job of implementing most of the 1.0 .NET API, and the mcs compiler is pretty fast. The GTK bindings are quite nice for such an early release.

    Still, the cognitive dissonance of compiling a Linux program and getting a file with an .exe extension is rather difficult...

  3. Re:That is where you are mistaken by Rob+Riggs · · Score: 4, Informative
    .Net is a vehicle for C# and a distorted reflection of all other languages.

    A very good illustration of this is in the attempt to create a Python.NET implementation by the folks at ActiveState. The report on the lessons learned is rather enlightening.

    --
    the growth in cynicism and rebellion has not been without cause
  4. Re:Overnight by miguel · · Score: 3, Informative

    You might want to look at Nemerle (www.nemerle.org)
    a nice functional language that runs on .NET and
    Mono.

  5. Re:Dealing with MS patents .... by Valar · · Score: 4, Informative

    How?

    MS has given everyone license to implement every part of C# and .NET except for the Microsoft namespace of the class library. They have given up their right to sue people who use .NET or make .NET compatible implementations. The evidence isn't on their side.

    Hint: ECMA.

  6. Re:Why Mono Will Fail by primus_sucks · · Score: 4, Informative

    Put in a GTK or QT library interface instead of the slow and huge Swing (that Smalltalkers foisted on Java) and you're golden -- there's every reason to use Java, especially for applications.

    SWT is a crossplatform UI toolkit that feels like a native app, unlike Swing. In Linux it's just a wrapper over GTK or Motif.

  7. Generics by SuperKendall · · Score: 3, Informative


    Uhm, why would MS do this? .NET is designed to be and sold as a "cross platform" solution--a real way to do Java's "write once, run anywhere" line.

    Introducing a crippling change for Longhorn would not only hurt this goal, but it'd bring down the rath of a few regulatory agences all over again--and piss off everyone using .NET and not Longhorn.


    Java's write once, run anywhere is pretty real - it's harder for GUI's of course and works best for server side stuff (who even thinks anything of compiling and testing in windows or linux and just moving Java compiled code up to Solaris or some other system?).

    But to address your point above, the introduction of Generics will change the .Net platform significantly and require new .Net installs - code built using Generics on the future .Net platform will not run on older versions of .Net. Now they get some nice features for that tradeoff, but it is just one of the changes .Net is introducing that will require updates in Mono. And Microsoft has indicated a lot of other API's will change in the future with Whidbly(sp?) as far as libraries go.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  8. Re:.NET by jfengel · · Score: 3, Informative

    Autoboxing yes, but I don't believe that they have operator overloading in mind. I've heard Gosling say that it adds a lot of complexity to interpreting a program while adding relatively little expressive power.

    (A picture of Gosling standing in front of a slide explaining what's wrong with operator overloading).

    I'm definitely looking forward to autoboxing and the new printf-style methods. (Maybe variable-argument methods were what you had in mind?)

  9. Re:.NET by nemiak · · Score: 5, Informative

    " Microsoft didn't just dream this up overnight..."

    Like most/all of Microsoft's "innovations", .NET was *purchased*, not created, by Microsoft.

    Microsoft inherited what become .NET when they purchased Colusa Software on on March 12, 1996.
    At this time C/C++ and VB environments already existed for Colusa's "OmniVM" (which became the .NET CLR?).

    To clarify - I do alot of work with C# and find it to be the least unpleasant Microsoft development environment I have experienced.

    Score 5, Troll?

  10. Why should we bother? by bonch · · Score: 4, Informative

    Well, if we can get to the point where we can do things like those shown in this Longhorn video, development for Linux will definitely increase.

    By the way, the video is worth watching not only for the cool technology but also to hear two Microsoft programmers ragging on each other. Totally opposite the kind of atmosphere you'd expect at Microsoft, I suppose.

    1. Re:Why should we bother? by JabberWokky · · Score: 3, Informative
      The .exe extracts a large .wmv file. Perhaps someone could mirror?

      Just use cabextract. It's bundled with most distros. Pretty common linux tool.

      --
      Evan

      --
      "$30 for the One True Ring. $10 each additional ring!" -- JRR "Bob" Tolkien
  11. Re:.NET by Anonymous Coward · · Score: 5, Informative
    man, sometimes i don't even know why i look at the discussions of programing and scripting languages. I hardly ever know what people are talking about.

    C# This is essentially Microsoft's new version of the C programing language. Java Sun Microsystem's cross-platform programming language. VB Visual Basic. Microsoft's language for Rapid Application Development. C++ Popular extension to C which adds support for Object Oriented Programming. Struct A concept used to group variables together. You can refer to the whole group of variables using a single name. Class A struct on steroids. Not only does it group variables together, but it also groups functionality with the variables. Reference type A variable that points to the real data. You can have many reference variables that all point to the same data. Value type A variable that is the real data. Boxing The process of taking a reference type and converting it to a value type. Unboxing The process of taking a value type and converting it to a reference type. Operator overloading Redefining what an operator does. For example, if the equal sign in the following code assigns the value 2 to the varialbe a,

    a = 2;

    Operator overloading could redefine the equal sign to mean something else (such as compare if a equals 2).

    Property You can think of this as a wrapper around a variable. When the variable is accessed, you can do some automated processing before returning (or storing) the value. In code, you can treat a property just like a variable.
  12. Re:Exactly by chgros · · Score: 3, Informative

    Exactly, there will be "kind of" a functional language - which has to use the same libraries everyone else does, which are all just like the Java libraries. So people using this pseudo-functional language will be hard-pressed to really see the advantages of a functional language as you would if you had a real function language with a set of libraries as broad as that offered by Java.
    I heard F# was supposed to be based on OCaml.
    OCaml already comes with a nice set of libraries, not to mention parser tools (which I heard were missing from C#). It even has bindings for SDL!
    And I don't know why you call it "pseudo" functional.
    Although I agree on the fact that the syntax for .NET bindings would probably have to be weird.

  13. Re:Danger! by hayden · · Score: 5, Informative
    "Reasonable and non-discriminatory" (RAND) does not imply "free".
    RAND licencing usually means reasonable and non-discriminatory" for business. What MS can (and probably will) do if Mono gets any traction is say, "We'll licence the right to use all these patents for 10 cents per install". Perfectly reasonable. Perfectly non-discriminatory. Kills any open source implementation dead.

    Game over.

    --
    Nerd: Derogatory term typically directed at anybody with a lower Slashdot ID than you.
  14. Re:Dealing with MS patents .... by foandd · · Score: 3, Informative
    They have given up their right to sue people who use .NET or make .NET compatible implementations

    Christ man, quit sniffing glue before you hurt yourself. RAND doesn't mean they give up the IP; it means they agree to license it to all parties who wish to license it, and that all parties will pay the same rate.

    I used to work for a company who got their heavily patented IP accepted as a standard. It has since become ubiquitous it its field. It was accepted as a standard under the same type of RAND terms which are being discussed here.

    The numbers have likely changed since then, but when I worked there if you wished to implement it, you had to pay a $25,000 up front fee and a $70 fee per shipping unit. If you implemented without paying those fees?

    Hint: their lawyers would be up your ass with a flamethrower before you had time to blink.

  15. Re:No language can replace C ... by Alex_Ionescu · · Score: 4, Informative

    The first programming language(s) were coded in ASM, Assembly Language. Although ASM is a "language", it doesn't need to be translated and compiled like something like C. Each operation corresponds to opcodes, which are usually one or two bytes, that the CPU can directly read and interpret. Once powerful and stable C compilers (written usually in ASM) started to appear, new languages were usually directly written in C, but always containing some ASM.

    The main problem that confuses people (such as the argument that C# was written in C#) are the IDEs (the Integrated Developpement Environment), which is merely a graphical frontend to do your work. So yes, the VS NET 2003 UI was made in C#, but the compiler for C# was written in C and ASM.

    I hope this makes sense...it's 2:30AM...lol

    Best regards,
    Alex Ionescu
    Relsoft Technologies

  16. Re:.NET by ghamerly · · Score: 4, Informative

    I believe you have boxing & unboxing reversed. I didn't know the definitions before this, but the ones you gave didn't seem intuitive to me, so I searched google for "autoboxing", and found several definitions that are the reverse of yours.

  17. Quoted way out of context! by 1in10 · · Score: 4, Informative

    Miguel said, "C is dead", sure.

    But how about some context. This is what he actually says: "To me C is dead. Except for the JIT!" (emphasis mine).

    He's not saying C is gone, that nobody is going to use it anymore. He's saying that he's not using it anymore, except to write the JIT compiler for mono.

    So the quote is accurate, but the meaning is completely changed once you put it into context!

  18. Once you use Eclipse you'll understand by SuperKendall · · Score: 3, Informative

    Eclipse is way more useful hat Vs.net (which I have used).

    For one thing, imagine having a compile error and just saying - "Please fix". Often Eclipse gets this right in one, or can offer a range of choices (not all of them right all the time, but even so...).

    And then there's great refactoring support that is really lacking in Vs.net.

    With Java you actually have a range of editors that all offer more advanced features than Visual Studio. In IDE's you have Eclipse as I've said, or Idea, or JBuilder (expensive but very very easy). To compete with .Net for server side ASP development you have Weblogic Workshop which can help define things like flows between pages graphically.

    And those are all if you have to have IDE's - developing Java without an IDE is I think simpler than .Net. It's probably a bit of a wash as both sides have Ant, but Java has a wide range of ant tasks defined already.

    In every regard, .Net is a platform furiously trying to re-write every useful Java tool - and almost succeeding. Can it keep up the pace though?

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  19. Out of Context by superyooser · · Score: 5, Informative
    The submitter quoted Miguel out of context. Miguel said:
    " To me C is dead." (emphasis mine)

    I take that to mean, "As far as the world of Mono/.Net goes, C is dead."

  20. Re:C "Dying", Scripting Languages, Cross Platform by Jellybob · · Score: 3, Informative

    Mono is also write once, run anywhere - the .NET platform is designed to be cross platform (even if Microsoft were hesitant to make use of that).

    I have written programs in C# on my desktop, compiled them with mcs (the c# compiler with mono), and then e-mailed it to a friend running Microsoft's .NET runtime on Windows, and it ran without any problems (obviously you have to make sure you don't use the Mono APIs if you're doing this).

    To push it to further extremes, that person could then upload the same compiled file to their PDA, and *still* be able to run it, so long as they have the runtime installed.

    How much more cross platform do you want?