Slashdot Mirror


Creating .NET C# Applications for Linux

An anonymous reader wrote to mention an article on the IBM site entitled Mono brings .Net Apps to Linux. From the article: "Mono gives open source developers the programming power and flexibility to build applications for Linux while maintaining cross-platform capabilities, using a variety of .NET-compatible languages. One of the great advantages of Mono for current .NET developers is providing an easier migration path to Linux. The Mono project has a very open and active development community and provides both developer tools and the infrastructure needed to run .NET client and server applications. Perhaps the most important benefit of using the Mono architecture is that you gain language independence. Mono lets you leverage any existing code from languages supported in the .NET runtime. "

80 of 340 comments (clear)

  1. Ewww.... by Afecks · · Score: 5, Funny

    IBM gave me mono... gross!

  2. let me get this straight ... by SamSeaborn · · Score: 4, Insightful
    Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

    Sam

    1. Re:let me get this straight ... by mysqlrocks · · Score: 4, Insightful

      Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

      Yea, that is pretty strange. I would use Java before I'd use .NET. It's much more cross-platform then .NET is or ever will be even with Mono. Also, they mention that an "advantage" of .NET is being able to write in more than one language. Technically speaking this is true. However, practically speaking the two choices are VB.NET and C#. VB.NET was seriously overhauled from VB6 to make it more compatible with .NET thus losing a lot of it's "roots". I'm certainly not suggesting that VB6 should have stuck around. I'm stuck building stuff in VB6 at work right now and it's not pleasant. I'd jump to VB.NET in a heart-beat. However, I'd much prefer C# which I think is really the only viable language for .NET. Anyways, I'm not a big fan of either. Like I said before, I'd use Java before I'd use .NET (if it were my choice).

    2. Re:let me get this straight ... by Anonymous Coward · · Score: 3, Insightful

      C# and the core parts of .NET are open standards, whereas Java is not. While true that some parts of Microsoft's implementation are not covered by the standard, the standard covers everything that's needed for anyone with the talent to create an implementation of core .NET and leverage most of the benefits. That in itself won't give you compatibility with Microsoft applications, but it you're more interested in the better technology than in compatibility with a corporations products, then Mono (at least the core parts) is the way to go, and you lose nothing by not going to Java.

    3. Re:let me get this straight ... by photon317 · · Score: 2, Interesting


      Sounds just like .NET

      I've always though that Mono was a waste of time. .NET hasn't been around for very long at all. If you've got the brains to switch to Linux now, where were those brains two years ago when you wrote your now "legacy .NET code", and how much trouble would it be, really, to just own up to the mistake and start over from scratch in a better environment instead of bringing your .NET cruft over to Linux with you? I don't see it being practical and useful and interesting until about 5-8 years down the road when almost nobody is writing new software for .NET, and the last few braindead idiots are finally getting the point, and need to move quickly to Linux and bring with them (temporarily while they do real porting) 10 years of built up .NET infrastructure. And I cannot fathom how the (talented and insightful, obviously) Mono developers can stomach putting in all this effort for future idiots who are in the process of committing the sins that will ultimately lead to Mono's usefulness right now, as they code it.

      --
      11*43+456^2
    4. Re:let me get this straight ... by psavo · · Score: 4, Insightful

      Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

      I can apt-get install mono, but Sun told me to go fuck myself with a chainsaw when I wanted a .deb of Java1.5. (Yes, there is java-package, which does a great job, but really, it's a fucking mess).

      --
      fucktard is a tenderhearted description
    5. Re:let me get this straight ... by MyLongNickName · · Score: 3, Funny

      Fortunately for you, the Linux crowd throws like girls. They don't get out much to do real physical activity, so they couldn't throw much harder than my two-year-old.

      Now if they get ahold of some open source robotic arm code, you are screwed.

      --
      See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
    6. Re:let me get this straight ... by Decaff · · Score: 4, Insightful

      C# and the core parts of .NET are open standards, whereas Java is not

      This means nothing. These parts are still subject to patents. Sun is prepared to certify any Java implementation as 'Java' providing it passes their compatibility tests. They have even done this for clean-room implementations by rival companies like HP.

      That in itself won't give you compatibility with Microsoft applications

      Whereas Java gives you a definite guarantee of compatibility.

      and you lose nothing by not going to Java.

      Except performance, reliability, being able to use quality products from multiple vendors such as Sun, HP, IBM etc, and using the language which is now the de-facto standard for commercial server-side software development.

    7. Re:let me get this straight ... by Anonymous Coward · · Score: 3, Insightful

      I used Java and at the moment I'm doing C# .NET. I have to say I had a lot of pleasure at that time programming in Java (as long as I didn't have to do any Swing or AWT). But I like C# much more. It is a little more close the Delphi (probably the only thing wrong with Delphi is the Pascal syntax, don't tell me about C++ Builder, that was one big disaster...).

      I think Delph did a very good job of the GUI. .NET is much nicer and easier than Java's Swing, but it still isn't as great as Borland made VCL for Delphi.

      I think the interoperability between VB.NET and C# is a good thing, it isn't 100%, but in most cases you're able to write one thing in one language and an other thing in other language, without really getting in trouble. (Two problems: One is overloaded functions in C# vs Default Parameters in VB.NET, the other is the static nature of structures in VB vs everything is an Object in C#.)...

    8. Re:let me get this straight ... by Decaff · · Score: 2, Informative

      Perhaps Java will be a more useful option once GNU Classpath matures a bit more, and GCJ support under Windows is improved.

      This will be news to the thousands of developers who are already using Java under Linux and Windows for application development right now! If you look at the IT job market (Java being the most required skill for commercial application development), you won't see Java uptake being held up because it is not currently a 'useful option'!

      Personally, I can see the advantage of a mature open source Java, but Java is not being held back by this.

    9. Re:let me get this straight ... by sloanster · · Score: 2, Interesting

      Linux programmers will use .NET/C# but they won't use Java?? What's up with that?

      Sam


      I'm a long time linux user, and I love java - and I meet a lot of people of like mind in the course of my work. As for mono, we're all pretty much taking a "wait and see" approach. It's a neat hack, but... can we trust that microsoft won't stir up patent trouble? I dunno, java just seems a lot less risky.

      Alright, so who told you that linux programers won't use java?

      YHBT, my friend!

      HAND

    10. Re:let me get this straight ... by Decaff · · Score: 2, Informative

      Do you have any stats I could look at to support your statement? Just curious...

      yes, I do.

      I have been severely critical of Swing performance in the past, however it has improved dramatically.

      here is a single post which gives a typical comparison:

      http://www.javalobby.org/java/forums/m91832009.htm l

      But in the end, the best thing to do is to download NetBeans + Java 5.0 and Eclipse (the GTK version is best) and try them out.

    11. Re:let me get this straight ... by cortana · · Score: 2, Informative

      More people need to know about the Java-Gnome project!

    12. Re:let me get this straight ... by Rycross · · Score: 2, Informative

      Doing a quick google search it appears that C# often beats Java or shows comparable performance in most tests. That is unless you're a Java zealot who bases opinions on limited and unfair tests.

      In real-world applications, C# matches up quite well to Java's speed.

    13. Re:let me get this straight ... by Rycross · · Score: 2, Interesting

      Performance and reliability? I assure you that C# has both. Got any links that indicate that C# is either slow or unreliable? And products being available in Java from vendors doesn't really mean much if you don't intend to use them in the first place, or they are trivial to interface with your code. As far as Java being the de-facto standard, while it is in higher use than C#, C# is being used by large businesses, and there is a large market for C# programmers.

    14. Re:let me get this straight ... by xiphoris · · Score: 2, Informative

      This is actually totally false. As well as being supported by a number of more "minor" languages, .NET fully supports: C#, C++ (with solid, awesome extensions for the .NET parts), VB, JS.NET.

      Keep in mind that there are always extensions so that you can call methods in native assemblies on your platform. This means you can pretty much interact with anything.

    15. Re:let me get this straight ... by Trepalium · · Score: 5, Insightful
      Or how about the fact you actually have UNSIGNED integer types in C#/.NET. I don't care how much James Gosling says that unsigned/signed types cause confusion, they're a reality of dealing with data on computers. The moment you have to force Java to interoperate with some "legacy" (read: non-Java) infrastructure, you're stuck with hacks and nasty ones at that.

      Other useful parts of C#/.NET include delegates, enums, automatic boxing of value types, properties, indexers, multidimensional arrays (as opposed to jagged ones) and foreach (for simple iteration through arrays or other indexed/enumerable objects). Hopefully the Java language designers will take notice and adapt some of these incredibly useful features to Java. Microsoft took so much from the Java language design that it should only be fair for Java to do the same to Microsoft's product.

      --
      I used up all my sick days, so I'm calling in dead.
    16. Re:let me get this straight ... by LnxAddct · · Score: 3, Insightful

      Err... I don't know what industry you're in, but the standard in Pharmaceuticals, Energy & Utils, and Defense is Java. Those are just the 3 largest industries off the top of my head. Java is *fast*, extremely fast, I've written Java code that runs fast than C++. With JIT, speed is not a problem. The only reason Java has a somewhat bad name is because of Swing, but if you understand the extreme extensibility of Swing, it makes sense. If you want Java apps that feel fast, just use SWT or GTK's java bindings. Slashdot's groupthink often criticizes Java, but as of about a year ago there were 7 to 8 times as many jobs available for java developers. I feel bad for the students that might read slashdot and be turned off by Java, its only going to limit their options when they graduate. Java is a good thing, it is worth learning. Adding on to this... the GNU GCJ can compile around 90-95% of Java programs including Eclipse and OpenOffice.Org, it also handles JOGL and iirc Java3D. If you don't like the idea of a JVM, just compile it natively. I code in Java at work, at home I often prefer Python (but its always for smaller projects). Java is horrendous for throwing anything together that is less than 1000 lines or so of code. Java's syntax and naming conventions were designed with large teams on large projects in mind, and writing code where people would be coming back 7 years later never even knowning who wrote it or what it did. It does that very well. It may take a few extra keystrokes to type, and it may not be a one liner like in perl but it is designed so that just about anyone (Novice or Pro) can read through it and realize what is happening step by step. I could go on but I'm probably only going to get flamed.
      Regards,
      Steve

    17. Re:let me get this straight ... by laffer1 · · Score: 3, Interesting

      .NET supports tons of languages, but mono does not! Remember everyone the goal of mono is not to be microsoft .net compliant. It is to be similar to .net but not support everything and add extensions of their own. They don't want you to run windows code on linux, they want you to run mono code on windows and linux with the MONO runtime. Its not portable in the sense that you can run ALL .net 1.0 from windows using microsoft's .net runtime on mono and vise versa. Java gives you portability, mono does not. Finally, java runs on non windows/linux/mac os x systems. I can run java on freebsd but i can not run mono (well it crashes with thread/garbage collection problems all the time).

      Java = portability; mono = novell's quality of software (bad)

      I've personally talked to a mono developer at my university. He works for novell on the project and they never intend to make mono compatible with .NET. He even said i was stupid for wanting it to be compatible. Mono should not be advertised as .NET for linux because its not. Its C# for linux but on a different runtime. VB.NET support is not complete in mono either.

    18. Re:let me get this straight ... by TummyX · · Score: 4, Interesting

      .NET makes it simple to interface with existing libraries written in C which, IMHO, makes it a more natural fit with Linux. C# applications can easily take advantage of existing libraries (GTK etc) whilst Java requires more effort (to force you to be "pure" and cross platform).

      Sometimes having ease and flexibility is more important than being cross platform.

      Besides, most libraries linux C# applications p/invoke are source-portable so the C# application itself will be cross platform as long as you have the platform specific binaries for the native libraries you pinvoked. The binaries you distribute won't necessarily be cross platform but for desktop applications, that's not really a big issue.

    19. Re:let me get this straight ... by CastrTroy · · Score: 3, Informative

      The only reason that most people find .Net or Delphi any easier for GUI work than Java is because there are very few good drag and drop environments for creating Swing and AWT GUIs. The best one I've seen so far is the one that Comes with NetBeans. It makes GUI development a lot easier. It's still not as good as what they have for .Net or Delphi, but it's workable. If you are stuck doing your UI coding by hand, or using the terrible Eclipse extension, then you might want to take a look at NetBeans.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    20. Re:let me get this straight ... by llefler · · Score: 3, Insightful

      One thing I really miss with C++ and Java is properties. What's with a language that will put all the work into a ternary operator so they don't have to type if/then/else, but insists on mutators and accessors because properties are syntactic sugar?

      And if you really want someone to understand the power of OOP, give them the VCL chart from Delphi or C++Builder to study for a while.

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
    21. Re:let me get this straight ... by slide-rule · · Score: 3, Informative

      While I'm prepared to leave delegates, properties, and multidimensioned arrays on the table, Java *does* [now, at least] have type-safe enum with a new 'enum' keyword, auto-boxing of primitives to their wrapper class, and a modified 'for' syntax that is functionally equivalent to 'foreach' (and yes it works with the new enum as well as any iterable collection). Surprised you didn't list generics/templates, which java now has implemented and backported into the full Collections API. Pretty neat stuff; have been playing with most of this it all week, now.

    22. Re:let me get this straight ... by miguel · · Score: 5, Informative

      I run the Mono project, so I can speak for our goals.

      And one of our goals is to be compatible with the .NET implementation. This is part of what we do on a day-to-day basis when we write unit tests for the APIs we are implementing, when we keep track of any possible difference and we respond to bugs filed on our bug tracking system where the behavior differs by fixing the differences.

      But our goal is not limited to *only* being compatible with Microsoft's .NET. We have also grown outside of the scope of what .NET has to offer, and this is why you see a very healthy ecosystem of libraries and applications *around* Mono which are not limited to being compatible.

      We created Gtk#, the toolkit we recommend for new applications that are to be cross platform; The enhanced XML stack (Commons.RelaxNG and Mono.Xml.Ext), our extended security and cryptography stack (Mono.Security), our extended Database support (Mono.Data and all of the providers for proprietary and open source databases), our IL manipulation library (Cecil) and everything that goes with these libraries.

      We try to make our libraries cross-platform, because the same code will reach more users and helps grow our community, but every once in a while we have to create OS-specific libraries. For example, the Mono.Posix library is not completely portable to Windows. The Cocoa# library only works on MacOS X, as it is designed to be just an interface to Cocoa.

      Miguel.

    23. Re:let me get this straight ... by Decaff · · Score: 3, Interesting

      One thing I really miss with C++ and Java is properties. What's with a language that will put all the work into a ternary operator so they don't have to type if/then/else, but insists on mutators and accessors because properties are syntactic sugar?

      The reason for the ternary operator is simple - to allow C code to be easily ported.

      As for properties, this is a good point but in practice does not matter - all good Java IDEs have property management built in: The will allow the automated generation and management of get/set methods and the values they change. For example, on NetBeans you simply select the 'properties entry' for the class, and off you go..

    24. Re:let me get this straight ... by laffer1 · · Score: 2, Interesting

      Great. Someday when you achieve the goal, I can recommend Mono. In the mean time, software written for Microsoft .NET is not guaranteed to run on Mono. GTK# and Cocoa# are great ideas, and I'm not upset that you extended .NET, but I'd rather have you finish a compatible Microsoft .NET implementation first. Also, let your developers know its a goal of the project. I think there is some confusion.

    25. Re:let me get this straight ... by lmoroney · · Score: 2, Insightful

      Linux programmers aren't Java programmers, that's why. Java programmers aren't bound to any O/S! :) Ditto for Mono programmers. But seriously, in any discussion we need to segragage the language, from the class libarary framework, from the runtime platform from the operating system. Java, C#, VB.NET etc. are languages, which are largely similar. Some developers love features of one of these over the other. .NET Framework, Mono, J2x# etc. are class library frameworks which are all extremely useful in their own rights and limited in their own ways. CLR, Mono Runtime, JVM, J2EE app server etc. are the runtime platforms Windows, Linux, Solaris etc. are the OS. So, a Linux programmer, namely one whose job it is to write Linux programs is more likely to write in a language that is suited for Linux, say 'C', or if they prefer to move up the stack, and write it to run on a linux compatible runtime like JVM or Mono, then they'll be bound to the language and frameworks for that runtime, right? Bottom line: There are choices -- plenty of choices, and that's a good thing. Finally -- there is an alternative, that allows you to unify the stack at the framework level down, giving you the most flexible choice -- and that is from Mainsoft (disclosure: I love their product so much I applied to work for them, and they accepted) -- and called Visual MainWin for J2EE with a developer edition called Grasshopper. What does it do? Allow you to virtualize all of this by unifying the .NET and Java stack through Mono. You can use VS.NET to code in .NET, compile to Java and run on Linux. It's a beautiful thing....

    26. Re:let me get this straight ... by scorp1us · · Score: 2, Interesting

      I am sure this will be modded as flame or troll, but it is not.

      Miguel, I have watched for several years this Mono project. At first I thought it was a bad idea. Now I know it is a bad idea. I don't understand why you continue to fragment the community as the Mono project does. I remember the blurb about MS barring Mono from some conference recently. I don't know why you continue to add momenteum to a platform that you cannot control. That only benefits one person - the same one who controls the platform.

      In the mean time, I see businesses citing Mono if they decide to move to Linux. However my understanding is that if you attempt to run a MS .NET based GUI application on non-MS platforms the most likely result is a spectacular failure because MS still has lock on some critical classes.

      While I realize there is good ideas in .NET (CLI) and Mono, I don't see how this justfies the effort. Mono is adding support to .NET momentum, it is fragmenting the development efforts of the community. It is adding yet another language into the fray (C#).

      The good things are that it gives us a CLI, but we could already have done in the Java, Perl, Python, or Parrot VMs without strengthening MS.

      Now do note that my support would be different had MS released _all_ of .NET - so that the assumptions of business managers are indeed correct. What I am hoping for now is that you correct me and say that all .NET applications will run under Mono without modification and exactly as wthy do under .NET. If this is not the case, nor is it the [achievable] goal, then Mono should be disbanded. Refocus on Parrot or something.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  3. Wouldn't it be funny if... by jarich · · Score: 5, Insightful
    Wouldn't it be funny if .Net (with Mono) actually delivered on the promise of Java? That is to say, bringing software to the Linux platform from traditional MS developers?

    Given that Java was a new language, maybe the migration from MS developers wasn't all that great... but now, with Mono, MS developers can move right over.

  4. .NET Windows Forms by Anamanaman · · Score: 2, Interesting

    I have a .NET Windows forms app that I'm looking to port to Linux using Mono. Anyone have any experience doing this? Is it something I should even bother trying to do?

    1. Re:.NET Windows Forms by MooCows · · Score: 3, Informative

      Mono implements System.Windows.Forms, but currently it's not stable.

      It's recommended to use the latest build of Mono System.Windows.Forms, you can find it here.
      And here is the the Mono WinForms class status.
      I currently wouldn't rely on it. But the outlook is good.
      And here are some pretty pictures of Mono's WinForms in action.

      For apps where the both compatiblity with Windows and Linux/OSX are important I'd use wx.NET.
      However on Win32 WinForms works best, even if it isn't the nicest (for developers) toolkit around.

      --
      The path I walk alone is endlessly long.
      30 minutes by bike, 15 by bus.
    2. Re:.NET Windows Forms by kupci · · Score: 2, Insightful
      You wanna run your .NET Windows Forms app on Linux you say? easy

      Seriously, you've just summed up the whole 'bait and switch' flaw with mono.

  5. Not really news... by Momoru · · Score: 2, Informative

    Mono has been around and kickin' for almost as long as .NET has been. It still doesn't execute .NET 100%, but definitely something to check out if your a .NET person and want to use Linux.

  6. portability problems by vlad_petric · · Score: 4, Interesting
    The article is silent on the GUI part. Unfortunately, that's also the most unportable part with .NET. Since winforms was really tailored for the windows api, porting it is no trivial tasks. Windows.Forms/Mono is still under heavy development.

    Keep in mind that Microsoft saw .NET as cross-platform, but only between windows platforms. Java is far better in that respect. While full compatibility is in many cases impossible, the extra effort per platform is much smaller

    --

    The Raven

  7. Here we go again by Billly+Gates · · Score: 3, Insightful

    "maintaining cross-platform capabilities, using a variety of .NET-compatible languages." .. great! You can use Microsoft VC.NET, Microsoft C#.net, and Microsoft VB.net on any version of Microsoft windows. (Well recent)

    maintaining cross-platform capabilities, using a variety of .NET-compatible languages. One of the great advantages of .NET is providing an easier migration path to Linux .. " Is the poster on crack? He might as well say " .. using a variety of MFC based languages makes targetting to Unix easy.

    Why do people even bother with Mono? I know I am going to be modded as a troll but I have yet to see a single app besides a hello world being cross platform? I think the developers looking at C# and Mono in a greater light than Java are ignoring the patent and copyright issues just because C# looks cooler. Thats pretty short sighted.

    C# would be the lowest ranked languaged behind visual basic if you want to avoid vender lock in.

    What will happen when C# 2.0 comes out? My guess is Linux will be playing catchup again and meanwhile windows will look like a better alternative to businesses standardizing on C# because their geeks mentioned how great Mono is.

    1. Re:Here we go again by MooCows · · Score: 2, Insightful

      "great! You can use Microsoft VC.NET, Microsoft C#.net, and Microsoft VB.net on any version of Microsoft windows. (Well recent)"

      Right.. of course not all of these are completed, but still. There are also some implementations not listed there like IronPython.
      Or you can install Mono or Portable.Net on Windows and compile without resorting to Microsoft tools. The resulting application will run just fine using the MS runtime or any other runtime on any other platform. (As long as you have the libraries you need on every platform.)

      IMHO: .Net isn't perfect, but isn't fundamentally broken either. Unless of course you don't want to touch anything having to do with Microsoft, ever. That's fine, understandable even. Just check facts before flaming their software. ;)
      Also, so now we have .Net as an alternative to Java. I thought more choice and competition was good?

      About vendor lock in. In practice there is no lock in, as stated above C# and .Net applications are already quite compatible with non-Win32 platforms. Patent and copyright issues? Well C# is pretty safe, MS might somehow claim to 'own' the CLR standard .. but I think that would be highly unlikely. (And even more unlikely to succeed.)

      --
      The path I walk alone is endlessly long.
      30 minutes by bike, 15 by bus.
    2. Re: here we go again by cortana · · Score: 5, Insightful
      Why do people even bother with Mono?
      I don't give a crap about whether Mono allows me to run shitty Windows-centric apps on my system. I bother with Mono because it makes it easy to rapidly develop and deploy programs for the linux desktop. Mono is a good enough product in its own right.

      The excellent java-gnome project is the Java equivalent of GTK#/GNOME#, but I don't see nearly as many programs being developed for it. In fact, a quick apt-cache rdepends reveals that there are precicely zero applications using libgtk-java in Debian, whereas libgtk-cil is used by projects such as tomboy, graphmonkey, gnunit, beagle and blam. There are also a load of programs that have not yet been packaged; assuming that the same proportion of GTK# and java-gnome apps have been packaged, it seems that there is a lot more developer interest--buzz--around Mono than there is around Java. Mono-based programs are certainly mentioned more often (read: at all) on the feeds I read than Java-based ones; and how many "Creating Java applications for Linux" articles have been posted to Slashdot recently?

      So why is this? I recon it's simply down to how easy it is to get started using the platforms in question. Say I want to run Beagle--I apt-get install beagle. Now let's say I want to run the hypothetical jeagle. I have to navigate, with a graphical browser no less, Sun's gargantuan site; agree to a huge, no-doubt soul-selling bullshit EULA; run Sun's crappy installer that shits untracked files all over my system... and I still can't apt-get install jeagle because Sun's crappy installer doesn't know about dpkg. As a Debian user who actually knows what he is doing, I can use java-package to convert Sun's crap installer into a .deb that halfway complies with Debian poilicy, but by making me go through this procedure Sun has basically killed my enthusiasm for working with this platform--there is no longer any buzz.

      "But Mono isn't made by Microsoft! It's not a fair comparison", you might say. To this I reply, I don't care! C# and Java are both nice, modern (perhaps I should say 'fashionable' to avoid being prodded by the Lispniks) languages that make software development fun and easy--but it is easier to get into C# because a platform that lets me use it is only an apt-get away.

      Now, perhaps Sun could turn this around by hiring a couple of Debian Developers to make some really high quality Debian packages of Java, and granting Debian permission to distribute them in non-free; but this only solves the problem for users of Debian and Debian-derived distributions. Sun would also have to find someone to create decent packages for Fedora, Mandriva, Suse, Slackware, whatever. But hold on a minute--Mono has people coming out of the walls to package it for their favourite distribution, so why should Sun have to put in extra effort to make this possible--and still be playing catch-up? It's because Mono has buzz! The openess, liberty and low barrier-to-entry have drawn developers to the Mono platform, while Java has languished under Sun's iron fist.

      In the end it's not about Java-the-language vs. C#; it's about the openess of the platforms: Java-the-closed/inaccessible platform vs the GPL'd Mono. Development of the components of an open source Java platform has been slow because Sun have already created a 'good enough' implementation of Java on GNU/Linux--but Mono has everything to to play for; the stakes are high, there are no grumpy old gits saying "Microsoft's GNU/Linux .NET implementation is good enough, Mono will never beat it", this is an exciting time when men are men, women are women, small furry creatures from Alpha Centuri are real small furry creatures... etc, etc.

      To summarise: Mono is exciting. Java is a pain in the ass.
    3. Re:Here we go again by miguel · · Score: 4, Interesting

      There are a number of cross-platform commercial applications that run on Mono, for example:

      * Novell's own iFolder client and servers (same code base, modulo UI which is native on each of the three platforms: Linux/Gtk, Windows/Winforms, Cocoa/OSX).

      * (http:///www.medsphere.com) Medsphere's products (Mono/Gtk# based).

      * Otee's Unity game engine (http://www.otee.dk/index.html).

      You can look for the "Works with Mono" logo on open source .NET applications and various commercial applications.

      For a larger but still incomplete list, see:
      http://www.mono-project.com/Software

      As for your question about what will happen when C# 2.0 comes out, we have good news, we already have implemented it (we are missing two fairly minimal features though), for details you can see our web page on the subject:

      http://www.mono-project.com/CSharp_Compiler

      Generics, itereators, anonymous methods, nullable types, partial classes, per-accessor modifiers, static classes, fixed buffers and co/contra-variant delegates are all implemented and available today.

      And we can not wait to implement the new features in C# 3.0

      Miguel.

  8. "cross-platform" by oGMo · · Score: 4, Funny

    You keep using that word. I don't think it means what you think it means.

    --

    Don't think of it as a flame---it's more like an argument that does 3d6 fire damage

    1. Re:"cross-platform" by Billly+Gates · · Score: 2, Funny

      Whats the problem?

      You can run Mono in almost any version of Windows.

  9. Why bother? by Decaff · · Score: 4, Insightful

    With Java you now have a complete implementation of all language APIs on Windows, Linux, Solaris, HP and so on, not an incomplete port of .NET (Mono) potentially subject to Microsoft patents.

    If the Apache Harmony projects succeeds (and it has a lot of backing) there will be a complete open source cross-platform Java implementation. There are already open-source Java versions that are good enough for many applications (gcj, Kaffe).

    Mono is a waste of time.

    1. Re:Why bother? by m50d · · Score: 2, Informative
      With Java you now have a complete implementation of all language APIs on Windows, Linux, Solaris, HP and so on,

      With a horrible license and horrible performance.

      not an incomplete port of .NET (Mono) potentially subject to Microsoft patents. Anti-mono people go on about the patent bogeyman even though MS has *never* used a patent aggressively, and there are situations where it would benefit them far more to do so (OOo, Samba). The threat of patents is just so much hot air.

      If the Apache Harmony projects succeeds (and it has a lot of backing) there will be a complete open source cross-platform Java implementation.

      Vaporware, gimme a break. People have been saying we will have a complete open source cross-platform Java implementation for as long as Java's been around. It's never materialised.

      There are already open-source Java versions that are good enough for many applications (gcj, Kaffe).

      Look who's an incomplete port now. gcj and Kaffe are good projects and I support them but if you try and run a random app on them it's not even "hmm, this might work, we can hope", it's "let's see where this breaks".

      Mono is a waste of time.

      Right now I have a working, open source implementation of all of .Net that I need, which installs easily on every platform I've seen in use. Or, I have a horribly-licensed and horrible-to-install (especially on BSD) Java implementation, or a number of attempts at an open source Java which though initially promising seem to be going nowhere and won't run the vast majority of java programs.

      --
      I am trolling
  10. How cross-platform by pmike_bauer · · Score: 2, Interesting

    A few years back, I had a serious Java epiphany. Try taking a JAR that runs on an IBM JVM (AIX) and, without a recompile or glitches, run it on a Sun JVM (Windows). It just works.

    A C# program targeting the Mono runtime will probably be very portable to all operating systems that run Mono. But, will a Mono app/code base developed on Linux run just as smoothly on the .NET runtime in Windows?

    --
    I read /. for the (Score:-1, Conservative) comments.
    1. Re:How cross-platform by kingos · · Score: 2, Informative
      I do c# development at work (largely for the windows.forms gui code, most server side is c++).

      I took a console application that used network sockets, timers, and was completely multithreaded that I had compiled using microsoft's c# compiler, and copied it to a linux server (no recompile).

      Fired up mono ... it worked flawlessly, first time. I was impressed.

    2. Re:How cross-platform by m50d · · Score: 2, Informative
      But, will a Mono app/code base developed on Linux run just as smoothly on the .NET runtime in Windows?

      Yes, that's the whole point, though it only will if it sticks to the standard APIs. There are things which are only supported in Mono, but they are split off into their own namespaces (usually Mono.*). The same is true with Java, if your thing uses sun.* it won't work on non-sun jvms.

      --
      I am trolling
  11. wxWidgets vs. Qt vs. Windows Forms by everphilski · · Score: 2, Interesting

    I'm looking into wxWidgets vs. Windows Forms at the moment for a project I'm working on at the moment. It's my thesis research.

    Qt was eliminated right out - my project can't be made GPL (due to a piece of the code that is subject to export restrictions), and I can't afford the license cost for a commercial license (and the educational license was too restrictive: I could only develop on campus on a school owned computer.).

    Windows Forms is looking very slick. Cross compatibility isn't a requirement, its something I would like. I havent bought into the whole .net or "managed C++" thing, my project is pure C++. I haven't investigated wxWidgets close enough yet to see if they mandate all of my code has to be GPL yet. If not I will give it a serious look. The sample code didn't look quite as clean or object oriented as Windows Forms did, however, which I do value. One cool thing about Windows Forms is that you can keep the "old" C++ code seperate from the Windows Forms program and just call the classes without converting them to "managed C++" or .net.

    -everphilski-

    1. Re:wxWidgets vs. Qt vs. Windows Forms by CyricZ · · Score: 2, Informative

      wxWidgets is LGPL. You should be able to dynamically link to it while still licensing your software as you see fit. It may have a static linking clause, allowing you to link statically instead of only dynamically. You'll want to check on that, though.

      What about using FOX? It's far lighter than wxWidgets or QT, while still offering a decent cross-platform GUI. And it's LGPL, with static linking exceptions.

      --
      Cyric Zndovzny at your service.
    2. Re:wxWidgets vs. Qt vs. Windows Forms by sinserve · · Score: 2, Insightful

      FLTK2, thank me later.

  12. Why so many stories about mono? by t35t0r · · Score: 4, Insightful

    Why does Mono show up so many times on slashdot?

    Why use Mono/.NET when you have ruby, perl, php, and python? All of which are cross platform? As far as only being able to give binary code to your customers ActiveState's Perl Dev Kit allows you to do just this (even though it's not free, but still less expensive than a license for Visual Studio .NET). I'm sure someone has written a decompiler for PDK binaries but the same thing could be done for .NET applications.

    But honestly can someone who has done development in Mono and and the other aforementioned languages convince me or anyone else for that matter to learn C#/Visual Basic.NET, and enjoy what it has to offer? What does it offer that the other aforementioned languages do not?

    1. Re:Why so many stories about mono? by Mr2001 · · Score: 2, Insightful

      Why use Mono/.NET when you have ruby, perl, php, and python? All of which are cross platform?

      Why use C++ when you have JavaScript? Why use Haskell when you have BASH? They're apples and oranges.

      As far as only being able to give binary code to your customers ActiveState's Perl Dev Kit allows you to do just this (even though it's not free, but still less expensive than a license for Visual Studio .NET). I'm sure someone has written a decompiler for PDK binaries but the same thing could be done for .NET applications.

      Actually, you can pre-compile .NET/Mono apps with a tool called ngen, which translates the IL code to native machine code to reduce startup time and make it harder to decompile.

      --
      Visual IRC: Fast. Powerful. Free.
  13. Re:I'm sorry by Alkonaut · · Score: 2, Interesting

    C#/.NET was designed to be all that java is in terms of platform independence, but MOST importantly, VM and package versioning was thought of from the beginning. Makes the whole difference.

  14. but it's non-free by themusicgod1 · · Score: 4, Insightful

    details. I will not use java, for anything, so long as licenses like theirs are forced upon it. With java, you are always a second class citizen.

    --
    GENERATION 26: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
  15. Re:C# is an open standard by The+Bungi · · Score: 3, Informative

    It's ECMA, not ANSI.

  16. Re:C# is an open standard by mozingod · · Score: 2, Informative

    That's the problem. C# is open and can be completely cross platform, but .NET isn't. To me, though, the greatest part of using C# is having the .NET framework available to you. Mono is having to recreate the .NET framework on Linux, while Java's framework is already there (though not open source).

    I'd rather use Java and have its full framwork available to me than use C# and a crippled, albeit quickly catching up, .NET framework. Six of one, half dozen of another, I suppose.

  17. Java has language independence too! by TheNarrator · · Score: 4, Informative
    Perhaps the most important benefit of using the Mono architecture is that you gain language independence.

    This is by far the most hyped feature of C# but it's also present in Java. If you look at the large incompatibilities between Visual Basic and VB.NET you'll see that .NET is not really that language independent and that each language is really more of a "skined" version of C#.

    As far as alternative languages go in Java there are many. Among the most popular are: JRuby
    # interpreter written in 100% pure Java
    # Most builtin Ruby classes provided
    # Support for interacting with and defining java classes from within ruby
    # Bean Scripting Framework (BSF) support
    # Distributed under a tri-license (CPL/GPL/LGPL)

    Jython (Python)
    Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

    Groovy
    Groovy is an agile dynamic language for the Java 2 Platform that has many of the features that people like so much in languages like Python, Ruby and Smalltalk, making them available to Java developers using a Java-like syntax.

    There's a lot more smaller projects like JavaScript and Rhino, Jelly, BeanShell, Tcl/Java, Sleep, ObjectScript, Pnuts, Judoscript. Some people event think there are too many alternative languages for the Java Virtual Machine.

  18. It's the tools by somerandomstring · · Score: 3, Insightful

    Why Mono? The answer is extremely clear: outstanding tools.

    Microsoft has some of the best development tools around, and the best of their stuff targets .Net. That being the case, and seeing that windows developers largely use MS tools, it stands to reason they'd find targeting Linux via Mono the path of least resistance.

  19. Re:Where are the apps? by Decaff · · Score: 3, Informative

    While Java is often suitable for enterprise apps or web based apps, it just isn't useful for consumer-grade application development

    That will be news to the many developers who have produced such applications. Go to the Swing Connection on the Sun Java Website and you will see hundreds of applications that are consumer-grade. This includes games, graphics apps, and multi-media apps.

    And, of course, there are the thousands of different Java games that are downloaded to mobile phones every day!

    So much for Java not being 'consumer-grade'!

  20. GUI applications by DynamiteNeon · · Score: 4, Interesting

    Don't get me wrong, I happen to like both C# and Java, but if I have to create a gui app on windows for some reason, C# and .net wins hands down.

    Yes, I realize I could use SWT, but that's still not necessarily good enough. It surprises me that Swing still sucks so much after all this time. I would love to use one language exclusively if I could, but until I see some decent gui apps being built using Swing, it's hard for me to want to use Java unless I have backend services to create.

    Having said that, I would like to know if anyone can point me to gui applications that use swing and are actually good and fast. I'm curious if they exist at all.

  21. Easier Path to Linux? by tjasond · · Score: 2, Interesting

    I've been working with C# since .NET 1.0 Beta 1 and with Java since 1.2. When it first came on the scene, my initial reaction was very favorable to C#. Creating and consuming Web Services was incredibly easy (this was 2001, when SOAP had just arrived), and the builtin event/delegate model of .NET made event handling much more intuitive then Java.

    Then along came Eclipse, which breathed new life into the Java development experience. Nowadays, Eclipse has become an integral part of using Java; most folks I know don't think twice about the IDE they'd choose to develop Java in. The best part of all this is that Eclipse is cross platform as well, which allows me to switch operating systems without hesitation. This could definitely be considered a path to Linux (and in fact, it has been for me).

    In the same way, Visual Studio .NET enhances productivity in .NET programming, although it is far inferior to Eclipse by way of refactoring tools, incremental compile, and plugin support. Even so, any productivity benefits reaped from using Visual Studio cannot be experienced in Linux, because Microsoft will not port Visual Studio to it.

    The easier path to Linux doesn't come down to a language or its Virtual Machine. In the development world, it comes down to your development environment, which is at the core of what a developer does everyday.

  22. Java Vs C# by Rac3r5 · · Score: 3, Interesting

    I've been programming since I was in Gr. 5. From all the languages I've ever programmed in(BASIC,dBase, Java, C/C++, C#, Assembler etc...), my favourite is Java and C#.

    What I like about Java is that it is a modern language that uses modern concepts, is very well documented and its vast lib support makes it very useful.

    C# also follows along the same lines of Java, making it quite similar except you have the option of getting out of the sandbox that Java uses. Some people need to get out of the sandbox for various purposes, and C# allows that, not Java.

    If I were to choose, I would choose C# 1'st for this very reason and then Java. Unfortunately, I'm a hardware programmer, so I am stuck using C :(

  23. Agreed... by Burz · · Score: 4, Insightful

    Mono will always be on the fringes of acceptance like WINE... Never quite compatible and necessitating that you keep returning to Windows at least semi-frequently for that last bit of missing compatability.

    No thanks.

    Oh and MonoDevelop vs Visual Studio? Don't make me laugh. Well maybe one could run VS under WINE to get a decent IDE.

    1. Re:Agreed... by syncomm · · Score: 2, Informative

      Mono will always be on the fringes of acceptance like WINE... Never quite compatible and necessitating that you keep returning to Windows at least semi-frequently for that last bit of missing compatability. How is this insightful?! These claims are flamebait and based on absolutely no evidence. The fact is .NET/C# is ANSI and public. It is not an "emulator", but rather an implimentation. There is no semi-frequently returning to Windows about it.

  24. Motivation is what matters by Weaselmancer · · Score: 2, Insightful

    Sure they'll do it.

    ...to pad their resume. Read the classifieds lately? There's a lotta .NET jobs out there. It's nice to learn .NET without having to boot "that other OS", y'know.

    --
    Weaselmancer
    rediculous.
  25. Apples and Oranges by AtOMiCNebula · · Score: 3, Interesting

    Mono isn't produced by Microsoft, so it's unfair to compare Mono to Sun's JRE. Yes, Sun requires you to fetch the install file yourself (at least with Gentoo's Portage). But Mono is a GPL thing run by people not affiliated with Microsoft.

    You can't compare the two. Try comparing Mono and Blackdown instead.

    1. Re:Apples and Oranges by compass46 · · Score: 2, Informative

      Mono has multiple licenses, depending on what part of the framework you are talking about.

      http://www.mono-project.com/FAQ:_Licensing

    2. Re:Apples and Oranges by Ambassador+Kosh · · Score: 2, Interesting

      Reality does not have to be fair. It is easier to install mono then the sun jvm or any other jvm for that matter and so it will get used more and depended on more. It comes down to the path of least resistance and people will tend to use c,c++,perl,python,ruby as first choices, mono stuff as a second and java farther out mostly because of how easy it is to install that stuff and how standard it is.

      I know when writing python software when I need something outside the standard lib the first place I look is the debian package archives. If there is a package in the archive that can do what I need then it will get the first shot at me using it, if it works without problems I won't look further. The reason is simple I have a lot of work to get done and not enough time to do it all and if something works and was easier for me to get working then why look further especially if it got the job done?

      Java has that problem, it takes a lot more effort to use it then to use something else that will still get the job done.

      --
      Computer modeling for biotech drug manufacturing is HARD! :)
    3. Re:Apples and Oranges by Jamie+Lokier · · Score: 2, Insightful

      Curiously, I don't give a shit about Beagle and Tomboy. But your and my personal application interests aren't relevant. The point stands: Because Mono is (currently) a useful but incomplete implementation of .NET - because it's missing a widely used component - it's perfectly sensible to compare it with open source implementations of Java which are also useful but missing some components.

  26. ...mount a Vespa motorbike engine in your Ferrari. by instinctdesign · · Score: 3, Funny

    Linux: Creating .NET C# Applications for Linux

    And tune in tomorrow for our feature on how to mount a Vespa motorbike engine in your Ferrari.

    --
    forma3
  27. Not for me by vandan · · Score: 2, Interesting
    If the goal is to make it easier for .NET developers to jump ship, then I suppose that sounds OK ... kinda. But it also makes it easier for Linux developers to write .NET stuff, and I don't feel so good about that.

    If people want an open-source, cross-platform environment, then there are plenty to go around. I use Gtk2-Perl, and I've written a number of Perl modules to assist database developers to connect their DB backend with their GUI. See http://entropy.homelinux.org/axis_not_evil

    Gtk2-Perl isn't the only option out there. For Gtk2 ( which runs on Linux, Windows, OS-X, and an impressive number of other platforms ), there are bindings for PHP, Python and Ruby. That covers what most people are recommending for RAD these days.

    Then there's QT. I haven't had much to do with it, but there are bindings for all the above languages and more.

    There's Java.

    I don't see the point in mimicking .NET, especially when Microsoft have such a war-chest of lawyers. Why not concentrate on our technology, and if people want to move to it on it's merits, they will. It's much more likely they'll see the merits if we present them with our technology, rather than an imitation of Microsoft's.

    And remember, as a wise man ( OK, it was Dubya, but anyway ) once said:

    We can outcompete with anybody
    1. Re:Not for me by cr@ckwhore · · Score: 2, Informative

      Actually, it's not "mimicking" anyting ... .NET is Microsoft's implementation of the Common Language Infrastructure, which is an ECMA (international) standard. Microsoft co-sponsored the submission of the CLI along with other companies, but it is by no means a proprietary "Microsoft thing".

      Mono happens to be a 'nix implementation of the CLI. Again, this is not "mimicking" anything... it's a native implementation of a recent standard. It also happens that the C# (also specified in the ECMA submission) implementation in Mono is basically complete.

      The problem right now doesn't sit with the c# language or Mono... the problem is that an appropriate cross-platform gui/widget set doesn't exist. GTK# shows some promise, but is slow to be adopted. Windows.Forms (Microsoft's GUI implementation for the CLI) *is* proprietary, and thus, has proved difficult to implement on platforms other than Windows. BUT, let's not confuse the implementation of Windows.Forms with the CLI/Mono because they really don't have much to do with each other.

      Additionally, Mono is NOT the only non-Microsoft implementation of the CLI. dotGNU Portable.net (www.dotgnu.org) is another -- and I'm sure there are more.

      Feel free to educate yourself on the CLI and it's background by starting here:

      http://www.dotnetexperts.com/ecma/
      http://www.ecma-international.org/publications/sta ndards/Ecma-335.htm

      --
      Skiers and Riders -- http://www.snowjournal.com
  28. .NET is not an "open standard" by bhav2007 · · Score: 2, Insightful

    Just because you can't change a language like c# without permission from a standards agency does not free it from the influence of Microsoft. If they changed the language, then they would have to tell you for you to write with it, wouldn't they? The language syntax is not the part of .Net which is proprietary, the framework is. Microsoft is in complete control of all of their classes, namespaces, etc. They can change the setup, or expand it, and any time. More importantly, they have never and will never implement this framework themselves. In my opinion, trying to implement .Net as a cross platform language is like trying to dig with a spoon. Microsoft has never been known for it's elegant (or even competent) designs. Compare any part of the .Net framework with a better implementation, like Java, and it is clear that once again Microsoft has made something which is needlessly over-complicated, inflexible, and just designed badly. I feel more sorry for the poor fools who are trying to copy Microsofts implementation than those who are dumb enough to choose it for cross platform development over better alternatives. In my opinion, of course, speaking as someone who has spent a few years working with ASP .Net.

    1. Re:.NET is not an "open standard" by earache · · Score: 4, Insightful
      This is such a troll.

      You make no sense. There is not one valid reason why Microsoft would not want this project to exist. Someone is expanding their market reach for them, for free. What they lose in any kind of sales is more than made up for in mindshare.

      Sure they could pull the plug, and, sure, Mono is always going to be playing catch up; but it defies logic that Microsoft would radically mess up the framework for the sole purpose of screwing an open source project. Believe it or not, Microsoft is responsible to their developers. They do listen. To radically alter the framework for no apparent reason would just be idiocy beyond compare. If you've never participated in a beta cycle for Microsoft development tools then you would understand how well that responsibility is played out. Anyone can participate in these cycles and the responsiveness of the different teams working on the tools is impressive and commendable.

      For Microsoft to harm Mono in any way would harm their own customers, and what company wants to hurt the customers that generate the need for their OS? I think there is a reason that CrossOver office exists beyond simply being compatible with the outside world for document exchange. It's because linux applications are still playing catch up to Windows applications. Gimp still trails Photoshop for professional grade imaging work. Evolution is still trying to play feature tag with Outlook. OpenOffice is still trying to equal Excel, Word, etc. That is not to say any of these efforts don't outclass the Microsoft products in some regards, because they most certainly do. I merely point this out to be an example of where Microsoft's commitment to their developers touches their economics. For the first time, we're seeing free tools for .NET development that are actually useful. I think this will continue with lower licensing costs.

      As for the rest of your comments, I'm going to chalk those up to zealotry, closeted or not and simply being ignorant of what good design really is. And just because you spent a few years with ASP.NET doesn't mean you are at all competent.

      And though I may sound like a Microsoft bigot, I am not. There is no fiscal or professional gain in being religious about toolsets. The more tools in that box, the more shit you can fix, and the fatter you can make the wallet. While I mostly do .NET consulting now, I still do PHP projects and, every once in a blue moon, a java project. Sure, sometimes I think about how one feature of another language might make a certain chunk of my work go faster, you also need to balance your concentration towards those things about the tool you are working with that are appreciable. I appreciate how quickly I can bang out a PHP site. I appreciate the massive library support and open source tools for Java. I appreciate C#, the .NET framework and Microsoft's dedication to their developers. If you can't do that than you are severely limiting your brain and your bank account.

      Also, consider this: If Sun hadn't taken it to the extreme, there would be no .NET. Had they looked for an agreement, instead of seeking injunction, what a better picture for them that would have been than the picture we are looking at now.

      Anyways, nice troll.

  29. Who cares about portability? by thomas.mcmahon · · Score: 2, Insightful

    Who cares about portability when mono is being used to make really sweet apps for gnome. I don't care about whether these programs run on Windows, I'm just happy they run on Gnome now. Examples of sweet mono apps for gnome Beagle, F-Spot (My personal favourite), Muine, iFolder. So what does it matter that Java is more portable than C#/Mono if mono means sweet apps for Linux now?

  30. apt-get install is overrated by turgid · · Score: 2, Interesting

    It's very easy to download the Sun JRE or JDK from Sun's website and to install it. Not much more effort that typing apt-get install.

    I've been using Debian, Fedora and CentOS recently after years of using Slackware and Solaris, and I can tell you that all the package managers have their advantages and disadvantages, but really, downloading and installing the Java distribution from Sun really isn't that difficult.

    Sun may have some strange attitudes towards the redistribution of Java, but from what I can gather this is due to stupidity and ignorance rather than malice. The wheels of beaurocracy turn very slowly in Sun.

    1. Re:apt-get install is overrated by Ace+Rimmer · · Score: 2, Interesting

      It is not that overrated. Imagine a system dependent on JRE for some or most applications. Now you would be forced to download a huge package from Internet to get it working. Of course then you would have to setup the classpaths, ***_HOMEs and such. And what if you needed JRE for an app to setup an Internet connection or to download what you need...

      On the other hand C/C++, shell, perl, python and all other apps run fine out of the box (and you don't even know what lang it was written in before you examine it in more detail). It is a serious stopper and it could be why mostly only enterprise level apps are written in java.

      --

      :wq

  31. Why Mono is Currently An Unacceptable Risk by Anonymous Coward · · Score: 4, Insightful

    Argument In Brief

    1. Microsoft's C#/CLI licensing people, at high levels, are aware of us.
    2. Microsoft can choose to do damaging things in the current C#/CLI licensing ambiguity.
    3. Microsoft considers the free software / Linux community to be a major competitive threat
    4. Microsoft does not "compete" gently
    5. A + B + C + D = ?

    The word pile amassed below defends points (1) and, in particular, (2). I take points (3) and (4) as given. I leave point (5) an exercise for the reader. ;-)

    Stupid Disclaimer

    Since I'm not a lawyer, I don't know if these disclaimers are important. But given the nature of the topic, I'll play it safe and write one. I'm not a lawyer, and this ain't legal advice, its just a dump my current thinking on an issue. It does not represent my employer's opinion. It may represent my cat's opinion, but only on the second tuesday of summer months.
    Restatement of the Issue

    Miguel has repeatedly stated that the patents necessary to implement the standards ECMA-334 (C#) and ECMA-335 (CLI) are available from Microsoft "RAND + Royalty Free". This seems like an effective open patent grant and encouraged me initially that we could do Mono. I really like Mono. Its terrific technically, and I'd love to be able to use it. But two problems upon further consideration the past couple months:

    1. I've not seen an official statement by Microsoft that will let me trust the royalty free assertion. I think we are remiss if we do not assume Microsoft is looking for ways to, quite frankly, screw us. So unless there is a statement from Microsoft that they will have to stick to in a court, I feel (at the very least) uncomfortable.
    2. "RAND + royalty free", can still seriously screw Free Software. I think this is more important than the first point. Even with RAND + royalty free you still have to execute a license agreement with Microsoft, and license agreements can stipulate things that are RAND from a corporation perspective but still screw over Free Software. Also, there is evidence that key Microsoft people are already aware of (or planned?) incompatibilities between the licensing scheme for C#/CLI and, at least, the GPL. The eye of Sauron is upon us. RAND + royalty free is very different from a patent grant.

    In short, we are in an adversarial situation. Microsoft does not want us to succeed. Thus we cannot trust Microsoft, even if we'd like to, and must consider Mono based upon the question "What is the worst thing MS can reasonably do?". We can only trust Mono if we are convinced Microsoft doesn't have weasel room. The current situation appears, to me, to have lots of weasel room. The technical merits of Mono are basically irrelevant if its a trojan horse in the long term.
    The Horror Story

    So here's the obligatory horror story based upon what I see as our current course. Actually, I don't think this is taken to extremes at all. The GNOME actions look to me like the path we are currently on, and the Microsoft actions are not out of character, and look legally tenable based on what I know today. Microsoft can choose to not exercise these actions, but they will have the possibility (and will be more likely to the more successful the Linux desktop is).

    * Act 1 - Novell hackers continue to push Mono. Novell hackers code most new independent programs/functionality in Mono and gradually start writing extensions to software like Evolution in Mono. Evolution's core continues to remain Mono free, but if you want features X, Y, and Z you have to use Mono. A few GNOME hackers write apps in Mono, some as toys, and perhaps a couple more serious. Red Hat hackers complain. Some try to weakly push Java and some stick with working in C & Python. Sun makes noise, and does their own thing, starts some wacky projects, tries to push Java with OpenOffice.org, and

  32. Re:Where are the apps? by Decaff · · Score: 2, Informative

    Cut the crap. My computer has 512MB DDR RAM, and each time I use a Java application it starts swapping LOADS. The computer is nearly UNUSABLE due to all swap usage.

    Strangely, mobile devices can run java in just a few 100k. The Java 5.0 VM itself can run in just a few MB.

    Write a simple Java 'hello world' program, and you will find it can run in just a few megabytes (use the -Xmx switch to set the max usage).

    So the claim that your machine will swap 'each time you use a Java application' is provably nonsense.

    I'll start Eclipse, to tell you how much RAM the JVM will use (it might be a shock for you!).

    It's an IDE for goodness sake! They are some of the largest apps.

    Mind you, the NetBeans IDE can run quite happily in moderate memory. In fact, if you look at the IDE config file for NetBeans 4.1 you will see that the IDE is by default not allowed to use more than about 90-100MB.

    In fact, I have just started it giving it a maximum memory of 64MB.

    Try it yourself! I am using Java 1.5.0_04 and NetBeans 4.1. The configuration file within the netbeans install directory is etc/netbeans.conf.

    So, on a 512MB machine, it isn't causing swapping. (It never does on my PCs, which have this memory).

    Saying Java is performing nearly as fast or even faster than C++ is BULLSHIT.

    If it is, then it is bullshit backed by considerable evidence. Last year there was a study of java speed for numerical work, using the well-known Linpack benchmark:

    http://www.shudo.net/jit/perf/

    Java 5.0 usually came within 5-10% of optimised C++.

    So, I am sorry, but you are plainly factually wrong.

    If you don't believe me, again, try it yourself. The source code for these benchmarks is available.

    You may also be interested to know that Java is now so fast it can be used for real-time device control and AI systems. Boeing use Java for robotic and autonomous experimental planes, and one of the entrants for this years robotic road race has its software entirely in Java.

  33. Why I worry about .NET by ghakko · · Score: 2, Interesting
    I'm a LAMP programmer, and I think it's a reasonably good platform for web applications. I'd like it to succeed because I really want free software, both as a movement and technical solution, to flourish.

    But I really worry that Microsoft has opened a large lead here with .NET, at least in the medium term. Most people have simply compared C# and the .NET framework classes against Java and base their assessment of .NET as a platform on that. But I think it misses the point somewhat.

    The Bourne shell is powerful because it allows entire programs--even ones not specifically designed to work together--to be connected together: the utility of the system as a whole increases dramatically because of this network effect. With .NET, it's the same, except with classes and objects across languages previously incommunicado.

    On Unix, every scripting language, by contrast, is pretty much an island by itself.

    If you need a binding for say, MySQL, you'd have to implement it for Python, Ruby, Perl, Tcl and whatnot. Although tools like SWIG try to automate this, in general, every new binding (N x M of them) is written from scratch. One might argue that doing it this way makes the binding conform best to the spirit of each scripting language, but in practice bindings for important libraries are often buggy and incomplete, perhaps because the cumulative effort is too great or too much language-specific expertise is needed. This is especially true for complex GUI toolkits like Gtk or Qt, which cause headaches with complicated data structures. .NET bindings, on the other hand, are only necessary if they're for unmanaged code; even then, they need only be written once.

    Re-using code from different scripting languages is very difficult. Suppose if, for example, a PHP programmer doing screen-scraping is fed up with the PHP/Curl bindings and wants to use Perl's excellent LWP::UserAgent module. Or, say, someone writing a Ruby shopping cart would like to borrow one of the payment library bindings in PHP? How is that possible? Wrapping the functionality into a stand-alone program (and hence using the shell and IPC as glue) is often so much of a hassle that people simply don't bother and end up re-implementing it from scratch. In .NET, this is almost trivial.

    Every scripting language has to implement its own interpreter/virtual machine/compiler. Making a thread-safe and efficient one is not easy; making a JIT fast enough to even come near the efficiency of native C/C++ involves a great deal of messy, architecture-specific work. The CLR, by contrast, is common to all .NET languages and any performance enhancement to it is inherited by all. It's well-tuned enough that, for example, PHP.NET actually runs faster than the native PHP interpreter, even with the Zend accellerator product.

    Packaging, deployment and building are different in each language. This can be a major problem when trying to glue scripts written in different languages together into the same project or getting the mess to install on the target system. Suppose it was an application which needs Perl 5.8 for one component, PHP 4.3.x (with mcrypt an GMP support enabled) for another and Python 2.3 (with PostgreSQL or MySQL bindings present) for others? How does one deploy this if the target system does not have one or more of these installed? Is there a simple way to put such an application in a test harness or even build it without resorting to a hodgepodge of install.py, MakeMaker and PHPAR? On the other hand, the only prerequisite for .NET applications need be the .NET runtime itself. Everything is compiled into the same common executable bytecode, so no additional interpreters are needed. Any assemblies the application depends on can be safely bundled with it even if the target system already has different versions of those assemblies installed.

    I believe, after putting seeing all of these advantages put together, that Miguel de Icaza was right and that we cannot afford to dismiss .NET as merely a Java work-alike.

  34. Re:Where are the apps? - What Speed? by Decaff · · Score: 2, Informative

    But imagine if all your applications took a couple seconds to open. Even notepads or terminals or calculators or system monitors. It would change the way you used your computer.

    That is exactly the situation on all my workstations right now, and I have never seen a system that is faster. It changes nothing, of course.

    I have stated that I do not want to wait even a few seconds for an application to load. It's obnoxious to me and, I would venture, most other users. I don't understand why you are supporting the idea that latency is good.

    I am not. I am just saying that below a certain point it is completely irrelevant and has no impact on the user. I have been in IT for 25 years and have never seen anyone ever complain or have any issues with a 2 or 3 second load time. When you say that this is obnoxious to most users, I have good evidence from decades of IT support that you are just plain wrong.

    If this really is annoying to you, you must find the majority of applications on any workstation intolerable! I use both GNOME and KDE routinely and I can't think of a single application that starts up in less that 2 seconds.

    Small, orthogonal tools. That's the UNIX philosophy, right?

    Sure. I agree. But that has never ever applied to GUI systems; they have always had some lag.

    Also, please note that the bulk of Microsoft Word's libraries are NOT preloaded with the operating system.

    Fair enough, but you mentioned Notepad. I would be very interested to see a 2 second startup for any Office application anywhere - Microsoft or otherwise!

    Your statement's only grain of truth is that IE's rendering libraries are indeed preloaded (they are used within the Explorer shell).

    Wrong. The text editing controls are preloaded (hence Notepad's speed), the menu and GUI controls are loaded, the file browsing tools are preloaded. (This is the advantage of a common GUI library in Windows).

    Because of Java's failings, I dislike Java -> anything. Does this make sense?

    No. Because as far as I can tell, what you are labelling as failings simply would not even be noticed by the majority of users, so I don't believe it is fair or sensible to call them failings.

    Yet again, I would be interested in proof that a start-up time of a GUI app of a few seconds has any ergonomic impact on anyone anywhere, other than being annoying to you.

    You are imposing a requirement on GUI software that almost no major GUI application meets. If such applications, written in supposedly high performance languages like Delphi, C and C++ can't do this, why should Java be any better?