Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming Editorial IT Technology

Mono and dotGnu: What's the Point? 493

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

Mono and dotGnu: What's the Point?

Comments Filter:
  • by 192939495969798999 ( 58312 ) <infoNO@SPAMdevinmoore.com> on Friday February 13, 2004 @11:33AM (#8269574) Homepage Journal
    It's not really free if you are using Microsoft, because they anticipate that in order to use C# compiler, you will need other Microsoft products that cost money. They aren't a non-profit organization! That's a great reason to make YAC#C.
  • Re:Free for who? (Score:2, Informative)

    by Anonymous Coward on Friday February 13, 2004 @11:35AM (#8269597)
    They are not working on winforms ..... with GTK (and Ximian working on QT ... God forbid !) ... they have a crude wrapper over Wine which lets them compile Mono as a windows app and run it via wine ... I'd rather not run such an unstable mix. Btw, DotGNU already runs winforms on win32/BSD/Linux/OS X which is kinda too cool ... and MDI too !
  • by F2F ( 11474 ) on Friday February 13, 2004 @11:41AM (#8269678)
    just now El Reg published some of the angry letters in defence of .GNU:

    http://theregister.co.uk/content/35/35557.html [theregister.co.uk]

    not that i'm trying to defend .GNU, just presenting a counterpoint.
  • by daBass ( 56811 ) on Friday February 13, 2004 @11:43AM (#8269698)
    He understands why you need to do that, at least he says so. It's just that he doesn't see the point in the compiler in the first place.

    As for me, I think it's a cute project, but it's only use I see is cross-platform GUI applications. (a good thing for Linux adoption by the masses) And Mono is way off for doing that.
  • Re:Free for who? (Score:5, Informative)

    by Utopia ( 149375 ) on Friday February 13, 2004 @11:44AM (#8269713)
    The implementation you are taking about - Rotor - is also ported to support Mac [oreillynet.com] & Linux [ondotnet.com]
  • by MochaMan ( 30021 ) on Friday February 13, 2004 @11:45AM (#8269727) Homepage
    You can download the Rotor source [microsoft.com] free and compile/run it on Windows XP, FreeBSD and Mac OS X. Or maybe you meant on Linux [ondotnet.com].

    Theoretically you could write C# applications for those platforms just like you could write C, C++ etc. applications for them. I don't see how you would need any other Microsoft products to use their C# compiler, though obviously Microsoft currently produces the most comprehensive development environment for C#.
  • Re:Free for who? (Score:2, Informative)

    by abrotman ( 323016 ) on Friday February 13, 2004 @11:49AM (#8269772)
    http://www.microsoft.com/downloads/details.aspx?Fa milyId=3A1C93FA-7462-47D0-8E56-8DD34C6292F0&displa ylang=en

    i think thats it .. there was a story on slashdot a while ago about it i think
  • Re:Motivations (Score:5, Informative)

    by Karamchand ( 607798 ) on Friday February 13, 2004 @11:52AM (#8269806)
    Concerning Java GUIs: Take a look at SWT (Standard Widget Toolkit). You might be interested in it :-)
  • Re:Free for who? (Score:5, Informative)

    by miguel ( 7116 ) on Friday February 13, 2004 @11:54AM (#8269824) Homepage
    You are incorrect.

    We have turned Wine into a library, very much like Gtk+ is a toolkit on top of X, or Motif is a
    toolkit on top of X, we have turned Wine into a toolkit on top of X.

    The reason for doing so is that Windows.Forms is not a perfect API, it is modeled after the
    Win32 API, and this Win32-ism is exposed at various points, for example every Control in
    Windows.Forms can override the Wndproc method and handle Win32 messages itself to implement
    some of the advanced features that are not possible with the simple binding provided.

    Most GUI special effects are achieved in this way, and most third-party libraries that you can
    download from the network will call into the Win32 layer, skipping the Windows.Forms API.

    It is certainly possible to emulate a lot of this without using Wine, but you would just end up
    replicating a lot of the work that has been done in Wine.

    So instead, we chose to turn Wine into a library that we dynamically load whenever a
    component needs to use Windows.Forms.

    We made Wine work on multiple platforms (so you can run your Windows.Forms applications on
    MacOS X for instance), and we also are integrating it with the Gnome desktop,
    so things look and feel the same to end users.

    You can learn more about the technical details here: http://www.go-mono.com/winforms.html
  • by eraserewind ( 446891 ) on Friday February 13, 2004 @11:59AM (#8269881)
    Well, J2ME seems to be the alternative choice for embedded apps, so I don't really see why not. It's not like they are going to implement an RTOS kernel in it. The point of these kind of managed code is to provide a sandbox for 3rd party apps to run on embedded devices, so they don't mess things up, and to provide a cross platform environment so app developers don't need (in theory at least) to have separate products for every single device out there. Sure it's slow, but it's also safe.
  • Here's the point (Score:2, Informative)

    by Crackerman111 ( 201718 ) on Friday February 13, 2004 @11:59AM (#8269885)
    I selected C# and the .Net platform for my company's product offerings because I only needed to learn the language(s) and the libraries and not some complex deployment procedure (like you do with J2EE). The point is that I would like to be able to host these applications on Linux in the near future. I work for a REAL company that would really like to do this. I'm not some ideologue.

    From what I understand, the Mono project pretty much has a complete implementation of both the ASP.Net and ADO.Net libraries, and that will do for the vast majority of web applications. Therefore, I completely disagree with the author's comment that "even if Mono or dotGNU gets 99 percent of the way there, that's not enough." His analysis might be more accurate if your talking about desktop applications, but I don't think his arguments really have any relevance to web apps.

    At the very least, Mono and dotGNU will give Java/J2EE a little healthy competition on some different platforms.

  • Re:One reply (Score:4, Informative)

    by miguel ( 7116 ) on Friday February 13, 2004 @11:59AM (#8269888) Homepage
    The trick is that C# code is compiled to the
    Common Intermediate Language, so you compile in
    one platform, and you run in another one. All you
    need is a virtual machine running on the target
    system
  • Re:One reply (Score:5, Informative)

    by miguel ( 7116 ) on Friday February 13, 2004 @12:05PM (#8269946) Homepage
    That is correct.

    But we have. We support SPARC, SPARC 64 bits, HPPA (32 and 64), StrongARM and PPC in a wide range of operating systems.
  • Re:Motivations (Score:5, Informative)

    by Anonymous Coward on Friday February 13, 2004 @12:05PM (#8269950)
    ...Second of all, every user interface I've ever seen done with Java stinks. Maybe I've been seeing bad examples, ...

    Most Java apps are not client side apps. Java is (at least at the moment) still heavily server-side. So looking at GUI apps as a mark of quality of Java as a development language is highly misleading, although understandable.

    However, take a look at Swing Sightings [sun.com] for some examples of truly outstanding Java GUI apps...

  • Wrong (Score:3, Informative)

    by DreadSpoon ( 653424 ) on Friday February 13, 2004 @12:08PM (#8269975) Journal
    Mono is not compiled as a Windows app. It does use WineLib for providing certain APIs for Windows.Forms. Using WineLib is no different than using GTK+ - they're both just APIs/libraries. Mono *is* working on Windows.Forms, using several different backends - WineLib, Cairo and GTK+. I believe the Cairo one is what they plan on using "officially" when complete. DotGNU and Mono can and do share code/assemblies, btw, so if DotGNU does indeed have a WinForms assembly, Mono should (theoretically) be capable of just using that.

    On a side note, I just love how posts (like the parent) which are half-guessed speculation and mostly false manage to get "+5 Informative" ...
  • by Anonymous Coward on Friday February 13, 2004 @12:08PM (#8269978)
    This comment was found at the end of this page: http://theregister.co.uk/content/35/35557.html [theregister.co.uk]

    The troll didn't even make any changes...At least give some credit to the original author! (Steve)

  • by miguel ( 7116 ) on Friday February 13, 2004 @12:09PM (#8269992) Homepage
    We are aware of a bug in the JIT compiler in the PPC,
    something that we are actively fixing.

    (We do not officially support the MacOS X for this
    very reason: we are not done yet with the port,
    the technical detail has to do with the patching
    of generated methods to point to new methods that
    are JIT compiled on demand, and the issue there
    is that the PPC needs more room to do calls that
    span the +32/-32 meg barrier, so you need to build
    some thunks, not hard to fix, and on our todo list)
    The Mono C# compiler works on OS X, we use it to
    build all the class libraries and Gtk# as well.

    Miguel
  • Re:grrr. (Score:5, Informative)

    by jhdsl ( 74051 ) on Friday February 13, 2004 @12:13PM (#8270030)
    The language is an ECMA standard, but the runtime libraries are not. Without those, C# is pretty useless.

    BTW, ECMA accepts all standards that companies care to pay for, they are hardly neutral.
  • Re:One reply (Score:5, Informative)

    by realnowhereman ( 263389 ) <<andyparkins> <at> <gmail.com>> on Friday February 13, 2004 @12:14PM (#8270047)
    You're missing something. The article explained it, but it goes something like this...
    • Someone else (Microsoft) writes a C# compiler in C/C++/whatever.
    • You write a retargetable C# compiler in C#.
    • Using the existing (Microsoft's) compiler, compile your compiler.
    • Using this compiler (which you have the source to), compile your compiler.
    • Using this compiler, retarget for whatever platform you wanted
    • Congratulations, your environment is self-hosting and no longer requires the original compiler.


    This problem has been in existence forever - how can it be that C compilers can be written in C? (Hint: the first one wasn't)
  • by blowdart ( 31458 ) on Friday February 13, 2004 @12:20PM (#8270115) Homepage
    Well if you want a J2ME equivilant, then there is the .net Compact Framework [microsoft.com]. Already built into the latest PocketPCs and Microsoft "Smart"phones, as well as CE.Net 4.1 which is marketed for embedded systems
  • Re:Free for who? (Score:5, Informative)

    by kevlar ( 13509 ) on Friday February 13, 2004 @12:24PM (#8270158)
    Mono _IS_ the .NET Framework. So how is it not a knock off? Because it runs on Linux?

    And just because Mono uses GTK which can also run on Windows does _NOT_ mean that there is no work involved in porting it to another architecture. The fact of the matter is that porting from windows to linux to bsd to solaris will always involve some sort of functional changes.

    Mono is simply .NET for non-Windows environments. Its a .NET Knock off.
  • by __past__ ( 542467 ) on Friday February 13, 2004 @12:25PM (#8270183)
    Like SharpDevelop [icsharpcode.net] for example?
  • by meadowsp ( 54223 ) on Friday February 13, 2004 @12:27PM (#8270200)
    I'm sorry you don't find it to be true in the real world. I develop JSP/Servlet java on a windows 2000 box and deploy it to red hat linux. And every time it works exactly the same on each of them, so I would say it is true, at least in my experience.
  • Re:grrr. (Score:4, Informative)

    by S.O.B. ( 136083 ) on Friday February 13, 2004 @12:30PM (#8270241)
    But Java isn't available on all platforms either... which is why there are alternatives to Sun's Java. .NET is roughly equivalent to Java, but its promise is greater, IMO.

    Java is available for MS Windows (95,98,ME,NT,2000,XP,CE), Linux, Apple MacOS, FreeBSD, IBM AS/400, IBM OS/390, IBM AIX, IBM OS/2 (yes, some people are still running it), Sun Solaris, SGI IRIX, PalmOS, Nokia cell phones and numerous other embedded devices. I'm sure I've missed a few but that's just off the top of my head.

    When .NET allows me to run a program on everything from a mainframe to a cell phone then I'll be impressed. I doubt that will ever happen because Microsoft is too afraid to put .NET on any platform it can't dominate.

  • by nihilistcoder ( 208832 ) on Friday February 13, 2004 @12:32PM (#8270257)
    > If only we had C++ equivalents to the
    > huge Java and .Net libraries.

    I believe that's what they're doing with the binding of the CLI to Standard C++.

    More info here:

    http://www.ecma-international.org/news/ecma-TG5- PR .htm
  • Re:Free for who? (Score:3, Informative)

    by Shillo ( 64681 ) on Friday February 13, 2004 @12:40PM (#8270350)
    What I said is that it's not just a .NET knockoff. Note the 'just'.

    Part of it sure is reimplementation of .NET Framework (and /not/ the .NET Framework itself). The rest is support for the GNOME (and Linux in general) -specific parts. This includes Gtk#, DBUS and HAL support, Apache support.

    In other words, Mono is .NET, embraced and extended. With generics already working in CVS (as far as I know).

    --
  • Re:grrr. (Score:3, Informative)

    by Mr. Piddle ( 567882 ) on Friday February 13, 2004 @12:49PM (#8270437)
    C# is an ECMA standard. Sun has refused to bring java before a standards body.

    You really are naive. Both the Java Language and the JVM are published in books by Sun, I have them both, and they are both still current, even after several years. Sun has always had a good policy regarding forward compatibility, even Java 1.2 programs will run in 1.4. Only Java 1.1, as the original maturing version, is truly obselete. Further, is there a major operating system out there where Java doesn't work? Even IBM and HP have stakes in Java, and these are companies that hate eachother. Sun has done fairly well to build these sorts of checks and balances into the Java Platform, none of which exist for .NET.
  • Re:Free for who? (Score:5, Informative)

    by kevlar ( 13509 ) on Friday February 13, 2004 @12:53PM (#8270479)
    Calling Mono an extension to .NET because it uses Gnome is like calling a Ford car chassis with a Yugo engine an enhanced vehicle.

    Mono feeds off of the various Linux GUI libararies in order to implement the windowing requirements for .NET.

    Mono offers no improvements to .NET as a Framework. They are also nowhere near completion of implementing the entire Framework. Right now Mono is a "neat tool" which might let you run your C# app under Linux (no offense to your work and efforts intended, Miguel).
  • Re:grrr. (Score:5, Informative)

    by miguel ( 7116 ) on Friday February 13, 2004 @01:18PM (#8270812) Homepage
    In Mono we took a different approach, we created, integrated and built our own standalone stack ;-)

    Look at: http://primates.ximian.com/~miguel/tmp/map2.png [ximian.com] to get an idea of what we have to offer today
  • by miguel ( 7116 ) on Friday February 13, 2004 @01:31PM (#8271002) Homepage
    I agree that going our own path is a more robust
    and better solution. And that is exactly what we
    have done with our own toolkit called "Gtk#".

    Gtk# not only is very nice to program with, but it
    is also cross platform and people are using it
    in some cases instead of Windows.Forms on Windows
    itself.

    That being said, our effort to support the Windows.Forms
    API is not driven by a need to have that API at all,
    we believe it is one ugly API. Our drive to support
    it comes from the fact that people are using it,
    and have made certain assumptions about it.

    So to us Windows.Forms is a compatibility play,
    and one that we have to support to assist people
    who want to try Mono as a way of moving their apps
    to Linux.

    The API we are recommending developers to use is
    the Gtk# API.

    Hope that answers the question
  • by Anonymous Coward on Friday February 13, 2004 @01:39PM (#8271093)
    Somehow, someone in Ximian needs to really dig into the legal and patent issues that the article brings up.

    The ecma standard is not the problem. The compiler and clr are not the problem.

    It's the libararies, dude. So many people say this guy is on crack, but he has a valid point that all ximian and .gnu/mono are doing is playing into MS hands...and that hand will put the smackdown when and if these libraries become popular.

    Finally, I think a lot of other people bring up a good point...maybe some type of GNU language, a sysnthesis of Java and C#, would be better than the aforementioned projects from a purely political point of view.

    Really, Miguel and RMS need to sit down and have a few beers with PJ at groklaw and come up with some theories on all this stuff.
  • Re:Motivations (Score:3, Informative)

    by laird ( 2705 ) <lairdp@@@gmail...com> on Friday February 13, 2004 @01:55PM (#8271294) Journal
    "I don't want to use Java. First of all, I've never used it to develop software. ... since I adopted C# about a year and a half ago, my production has roughly tripled, maybe more."

    Having done a little in C# and a lot in Java, my personal opinion is that the development environments are comparable, with the caveat that you've got way more options for tools and components on the Java side since it's a much more mature and broadly supported platform.

    I'm curious about why you don't want to use Java. Java and C# are remarkably similar -- aside from some Windows-specific bits in C#, I'd guess that anything you like about C# development would also be true of Java development.

    While it's true that the original Java GUI API's were quite primitive, they've made a lot of advances. As another poster commented, the vast majority of Java code these days is server-side, but there are some rather nice Java applications out there. The look of the buttons, etc., is actually up to the runtime environment -- Java app's look great on MacOS X, for example, but a little more primitive under Unix. But I've seen some really slick Java app's, so I think that the "primitive look" is more a product of someone not focusing on getting the UI right than of a limitation of the Java GUI tools.
  • Re:Free for who? (Score:3, Informative)

    by William Tanksley ( 1752 ) on Friday February 13, 2004 @02:22PM (#8271685)
    Did you read his posting? He said:
    In other words, Mono is .NET, embraced and extended.

    Sounds like he's saying it extends the framework to me...

    No, he's not -- but I understand how you'd reach that misunderstanding. He's trying to compare Mono to Microsoft's well-known tactic of "embrace and extend", wherein they "embrace" a popular/useful technology publicly, but then "extend" it via an implementation offerring a few advantages, but in a way that won't work with the original (often partially because of new capabilities).

    Quite seriously, this is precisely what Mono is doing with .NET.

    But again, if you're not familiar with that expression, I can understand why you'd misread it to be saying that Mono was extending .NET. ...and can you explain to me how the .NET Framework is improved upon in Mono?

    Not as well as many others have, but I'll summarize a couple of points.

    - they offer a FAR superior alternative to ADO.NET (caveat: I've no right to judge, as database access isn't my specialty)

    - they offer very elegant access to graphics operations in a way which is both powerful and platform-independant (Windows.Forms only handles one of these things at a time). I've been told that GTK# is one of the nicest ways to do GTK work.

    Now mind you, I'm NOT saying that Mono is better than .NET. I'm just saying that it has value of its own, and some things in it are improvements on things in .NET. (Others are definitely steps backward -- but that's explicitly because Mono isn't complete.)

    -Billy
  • by dwarfking ( 95773 ) on Friday February 13, 2004 @03:12PM (#8272261) Homepage
    That being said, it would be very very nice to have a runtime environment (read: VM) besides Java that runs on most systems and also provides compatible api for GUI and such

    Doesn't TCL/TK fit the bill here? Not really a VM, but a powerful scripting language, completely crossplatform with a GUI system? Granted many people complain about the GUI, but there are some decent looking enhanced widgets. And now, with Starkits, a fully functional TCL/TK application can be installed as a single file copy.

  • by brokeninside ( 34168 ) on Friday February 13, 2004 @03:16PM (#8272319)
    Davidson presents two conclusions, one of which can be refuted by his previous points.
    1. But they have no practical use,
    2. and exist only with the patronage of Microsoft.
    The first point is refuted by his earlier statement, one of the few applications that Mono claims it can run is its own C# compiler. Unless one asserts both that (a) a C# compiler is of no practical use and (b) that none of the other programs that mono can run is of any practical use, Davidson's conclusion does not follow. Davidson also admits that, Competition is good for the software industry, good for Microsoft in particular (as Adam Smith pointed out, monopoly is a great enemy to good management), and most importantly, good for consumers. Unless Davidson is now asserting that competition has no practical use, he just refuted his own conclusion.

    Further, we only need to find one practical use of mono to demonstrate that the conclusion is categorically wrong. That mono ships with commercial products such as Virtuoso suggests that there is at least one practical use of mono.

    On Davidson's second point, I think he misunderstands patronage. Microsoft does not currently fund mono in any way in which I am aware. They do fund some competitors to mono such as rotor and (at least at one time) Corel's attempt to bring dot net to Linux. His only example of Microsoft being a patron consists of a hypothetical chain of events that is exceedingly unlikely. I suspect that perhaps Davidson meant forbearance instead of patronage. If he did, he would do well to explain exactly how Microsoft's patents threaten mono because some people (including people far brighter than me) do not see any clear and present danger.

  • by FreshFunk510 ( 526493 ) on Friday February 13, 2004 @03:20PM (#8272367)
    Aren't what they are doing is creating "their own .Net"?

    And if not, what does it mean to create your "own .Net"? What if the steps taken by Mono are the logical next step?

    Think of it this way. When C# was released, everyone said that it (and .Net) were a just a copy of Java (the JRE, the intermediate language, everything). But maybe Microsoft didnt' jsut copy. Maybe they conceded the fact that the idea of having a a platform and intermediate language was the next logical step in software development.

    Perhaps Mono sees the same thing with the unique features that .Net offers (easy and more powerful web development).
  • Re:Free for who? (Score:3, Informative)

    by Mark Pitman ( 1610 ) on Friday February 13, 2004 @04:20PM (#8273121) Homepage
    System.Windows.Forms is just a class library that implements things like windows, buttons, treeviews, etc. From what I can tell, most of them are wrappers around the Win32 versions of the same thing. I know, for instance, the MS .Net TreeView control is a wrapper around the Win32 tree (not sure what it is called in Win32). If you were a VB6 programmer, this is definitely a step up in GUI capability. Not sure how it compares to Java's AWT or Swing.
  • Re:Free for who? (Score:3, Informative)

    by kevlar ( 13509 ) on Friday February 13, 2004 @06:17PM (#8274735)
    YOU DON'T GET IT.

    The Framework Classes are the Framework Classes. If Mono creates their own API to do XYZ, then its _NOT_ an extension of the .NET Framework anymore than my HelloWorld.cs class is an extension to the Framework.

    MS:

    Common Language Runtime (CLR)
    The type, metadata and execution systems provided by the .NET Framework, which supplies managed code and data with services such as cross-language integration, code access security, object lifetime management, and debugging and profiling support. By targeting the CLR, compilers and other tools can offer these services to developers.


    .NET Framework
    The .NET Framework is an environment for building, deploying, and running XML Web services and other applications. It consists of three main parts: the Common Language Runtime, the Framework classes, and ASP.NET. A companion infrastructure, the .NET Compact Framework, is a set of programming interfaces that enable developers to target mobile devices like smart phones and PDAs

Anyone can make an omelet with eggs. The trick is to make one with none.

Working...