Slashdot Log In
Mono 2.0 and .NET On Linux
Posted by
kdawson
on Tue Oct 07, 2008 01:59 AM
from the receding-taillights dept.
from the receding-taillights dept.
Several readers noted the release of Mono 2.0, which is compatible with Microsoft's .NET Framework 2.0. According to Miguel de Icaza, "... users can move over server applications built for .NET and client applications built with Windows Forms." InternetNews points out that only about half of the .NET apps out there will work on Mono 2.0, for a variety of reasons including (but not limited to) legacy Windows-only libraries and Microsoft's progress on .NET 3.0 and 3.5 APIs.
Related Stories
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
I like Mono, but... (Score:5, Insightful)
I like Mono, I really do, however it's always playing catch-up, it's by it's very nature it's always going to be one step behind Microsoft. Without the support of features in .Net 3.5, very few people are going to choose it for new developments.
Re:I like Mono, but... (Score:4, Insightful)
For the record, the new stuff takes time to trickle into mainstream development anyway, so Mono gets to at least focus on implementing the stuff the industry considers important too rather than just Microsoft.
Parent
Re:I like Mono, but... (Score:4, Interesting)
From a little experience with WINE which is in the same situation, every application uses the same 95% core but the 5% obscure stuff is different from every app. And unlike people that have the ability to say "Well, if OpenOffice is 95% of what MS Office is it's good enough", applications have a nasty way of crashing unless their obscure requirements are met. It can be a useful crutch at times but it's nothing like a good platform to build cross-platform applications on. Or rather, the OSS community's applications will be compatible with Windows but the Windows applications won't be compatible with Linux, which is pretty much where we are today already.
Parent
Re: (Score:3, Interesting)
I don't know, I've been using .Net 2's generics on Fedora for a while now, which was the main reason I moved my code to 2.0 when I started re-writing things (at first .Net 2.0 wasn't common enough to assume people had it installed). Looking at the .Net 3.0 and 3.5 changes [wikipedia.org] I can't see a huge amount of "must have" features. In fact, 3.0 seems like a bit of a damp squib in terms of features added since 2.0 compared to 3.5 against 3.0.
Just because a newer version is available doesn't mean everyone will automati
Re: (Score:3, Interesting)
I've been using visualstudio since the very beginning, and c# since the very beginning, and 2008 is the first upgrade so far that I have declined. I'm sure its time will come, but not for a while longer.
Re:I like Mono, but... (Score:4, Interesting)
Well, it should be the first upgrade you should NOT have declined; at least for the new language enhancements in C# and VB (Like LINQ and lambda expressions). I did a large project recently, which used a fair amount of LINQ. I felt C# 3.0 is when it finally left Java lagging in expressiveness.
Btw, I have also been using Mono for some time now, and the present compiler implements all of C# 3.0 language enhancements.
Parent
Re:I like Mono, but... (Score:5, Funny)
I like Mono, I really do, however it's always playing catch-up
Ahhh! So that's why people with mono always look so tired. All this time I thought they were sick.
Parent
Re:I like Mono, but... (Score:5, Interesting)
I really do not understand why Net is not backwards compatible but I suppose at least I should be happy that the libraries can co-exist instead of the old DLL hell. Microsofts attempt to replace Java could have been implemented in a better way.
How much decent Net software is there out there anyway? Is it all in-house so we never see it? I've only seen VB shareware quality stuff no matter what I've had to pay for it.
Parent
Re: (Score:3, Interesting)
Well any website with pages that end in .aspx is written in .Net, for one thing. We certainly develop a lot of in-house apps using .Net, and we also have a lot of intranet (and some internet) stuff that's built on it.
If you just want apps that'll run in a controlled Windows environment within an organisation then it's not bad. It's
Re:I like Mono, but... (Score:5, Informative)
Mythbuster alert!
http://www.smallestdotnet.com/ [smallestdotnet.com]
(thou I love mono,
Parent
Re:I like Mono, but... (Score:5, Insightful)
Seriously though, what applications are using Net 3.5 instead of all the stuff that can only run with Net 1.0 or Net 2.0?
A lot of my applications use LINQ (.Net 3.5). I wouldn't really like to go back to SQL.
Sure you can manipulate databases with SQL. You can also cross the atlantic in a steam boat. However, I'd prefer to go by plane.
Parent
Re:I like Mono, but... (Score:5, Interesting)
I see a lot of people interested in LINQ, extension methods, a more functional style of coding, and ASP.Net MVC. So maybe your mileage will vary.
Parent
Mono 2.0 Supports .Net 3.0 (Score:5, Interesting)
Most of it anyway; but crucially, LINQ.
The bits missing (Windows Workflow Foundation, Windows Communication Foundation and Windows Presentation Foundation) aren't as crucial in my personal opinion; they are just nice toys you aren't going to miss if you've never had them before.
LINQ however is a killer feature IMO; I'm glad to see that's now available on mono.
Re:Mono 2.0 Supports .Net 3.0 (Score:5, Insightful)
It is crucial in the moment when any programmer use them and application stop working on any non-Windows platform. It is also very difficult, if not improssible, to track VM incompatibilities when main developer (MS) is not interested in 100% compatibility at all. For me, as enterprise application developer, these are show stoppers. Luckily, there is Java and Sun Hotspot, which solves all this.
Parent
Re:Mono 2.0 Supports .Net 3.0 (Score:4, Interesting)
Most of it anyway; but crucially, LINQ.
The bits missing (Windows Workflow Foundation, Windows Communication Foundation and Windows Presentation Foundation) aren't as crucial in my personal opinion; they are just nice toys you aren't going to miss if you've never had them before.
LINQ however is a killer feature IMO; I'm glad to see that's now available on mono.
Personally, I find LINQ's complete throwing away of proper syntax annoying. Most .net developers I know have no idea that LINQ is simply syntactic sugar, and that the whole thing can be implemented by a bunch of method calls that make a lot more sense, from a structural standpoint.
This is the problem I have with Microsoft's technologies in general (think ASP.net's asinine oversimplification of the http protocol) - instead of improving new programmers' understanding of existing technology, they re-warp the programmers' heads around their idea of how the technology should be implemented.
Parent
Re: (Score:3, Insightful)
Re: (Score:3, Interesting)
Can I ask how much experience you actually have of LINQ, and which aspects of it (which providers etc)? Which area of performance are you talking about?
I have a certain amount of LINQ experience, and all I see is it making me more productive, with little to no performance hit. (Yes, separating out projection from filtering etc is a little more expensive than hardcoding it all in one foreach statement, but not significantly - and the resulting code is *much* cleaner.)
Re: (Score:3, Interesting)
The only catch was putting in a single link where mono (or perhaps the app in some weird cross platform way) was explicitly looking for a paticular library version I didn't have even though it isn't g
Re: (Score:3, Interesting)
Portability depends on more than the platform (Score:5, Insightful)
Good luck porting over LoadDLL("C:\\windows\\system32\\mylib.dll");.
The existence of a working mono is a necessary condition, not a sufficient one, for porting an application. Whether that condition is fulfilled and to what degree, I'll leave up to you to discuss.
Portability comes from being largely independent of the differences between the platform you want to port from and the one you want to port to. Good portability engineering consists of gathering all the platform-specific bits into one unit with a uniform interface, such that it's easy to write platform-specific modules for all the platforms you want to support; then, make sure to test on all your target platforms.
For a good piece of engineering, see Simon Tatham's puzzle collection (http://www.chiark.greenend.org.uk/~sgtatham/puzzles/). To see the importance of testing on all your target platforms, see the state of synergy on the Mac (http://synergy2.sourceforge.net/ -- "The Mac OS X port is incomplete [...]"). To see the importance of isolating your platform dependence, see any code that makes liberal use of fork and ioctl everywhere [sorry, I can't name an example].
Also, good portability engineering done up front is much less work (i.e. cheaper for your employer) than when the project is already deployed on windows only.
-- Jonas K
The inevitable Java vs Mono (Score:4, Interesting)
As a Programmer I am really torn between Java and Mono!
Both platforms solve the same problem but which one shall I commit to?
Do I install and run both platforms on my PC?
Surely running both platforms at the same time *must* be detrimental to my PC's performance (e.g. memory usage and cpu time executing both VMs)!
I also cannot afford the time to learn both platforms properly!
It is unfortunately a question of politics. .net technology and patents are a concern.
Java is now open-sourced and offically sanctioned.
Mono is the "unauthorised"(by Microsoft) port of
Both platforms have great software written for them (e.g. banshee, jedit, monodevelop, eclipse and netbeans) and patents are not really a concern to me because I live in the UK (software patents do not apply...YET!).
It is unfortunate that the mono is so closely associated with Windows, if the mono team had created/implemented a completely new set of cross-platform libraries (that bore no relation to Microsoft's framework) it would be more accepted.
I really like mono - the work that has been done is nothing short of amazing but the constant catch-up with Microsoft is a concern.
Java is widespread in mobile phones and most modern desktops unfortunatly for me it is not available on my PDA (ipaq 2210).
I am really stuck with this! :(
The real .NET (Score:5, Insightful)
Re:The real .NET (Score:5, Informative)
Download winetricks [winehq.org] then run:
sh winetricks dotnet11 dotnet20
Bingo. .NET under wine.
Parent
And why not just use Java? (Score:5, Insightful)
The .NET platform and C# looks like decent enough technology, but I just don't think it's compelling enough to prompt a switch from Java.
With these back-room Novell/MS deals, the patent situation around Mono continues to be as clear as mud, and with Java I get it all under the GPL (with a clear and written patent grant) right from the source. Not to mention Sun's process for advancing the platform (JCP), while not perfect, is far more open and community driven, catering to much wider variety of vendors and platforms than Microsoft.
With Eclipse and Netbeans, the Java tool support on Linux is fantastic as well. With RedHat and JBoss, the server platform is also well supported on Linux.
So, yeah, nice work, but no thanks.
Re:And why not just use Java? (Score:4, Insightful)
I use Java as well, and I think that Eclipse is a better IDE than Visual Studio, but there are a couple reasons for using .NET:
Parent
Platform vs language (Score:3, Interesting)
I think the mono project was started primarily because of interest in the C# language, as it compares favorably to java, fixing many of Java's flaws.
Sadly while the C# language may be in many ways stronger than Java, the platform is much weaker. Realistically, the reason Java was so successful was that there were high quality VM and classpath implementations on all platforms. Yet, Microsoft didn't seem to learn this lesson from Java, and instead relied on third parties, who can't possibly maintain parity with Microsoft .NET. Thus, .NET will always be a second class citizen on Linux, and always a poor choice compared to Java.
As much as I like C#, it's a foolish choice to write Linux apps in .NET in the same way that it is foolish to write them in win32. It will always be a second rate platform on Linux, so long as the people controlling the standard have no interest in doing the work to making the framework work across platforms.
Re:Oh just go away (Score:4, Insightful)
If we wanted to run crappy Microsoft technologies, we'd just go buy Windows, wouldn't we?
That must be why the WINE project is such a silly idea... oh wait...
Parent
Re:Oh just go away (Score:5, Insightful)
So, these two technologies are actually on opposing sides of this particular ideological fence - one is an attempt at removing lock-in, the other is an attempt at locking-in.
Parent
Re: (Score:3, Interesting)
The only .NET apps I use are nLite and vLite. The fact that these both launch native apps means that perhaps the interfaces (which are AFAIK Windows.Forms) will load but they will not be able to be front-ends to their Windows native apps that they are launch. This is very unfortunate and I wish Wine and Mono could work together to solve this problem. A lot of .NET apps launch non-.NET apps. They should at least make an #ifdef __WINE__ or something to allow the Exec() command or whatever it is to replace the
Re:Oh just go away (Score:5, Insightful)
Parent
Re:Oh just go away (Score:5, Insightful)
Before I tear apart what you think passes for an argument, let me say that the Mono folks are doing an amazing job and they get way too little credit. The tinfoil hat brigade around here seems to have taken on Mono as its personal whipping boy, and it's totally unfair and uncalled for.
Sure, but weren't you supposed to be talking about Mono there somewhere? Java used to provide lock-in, too. Hence, the GNU Classpath project, which is pretty much identical in its goals to Mono. Funny that I never saw you people screaming about that one being a trap.
Wow, get some perspective there. How many killer apps are there on Linux that the Windows people are craving? KDE? Gnome? Firefox? OpenOffice? None of those are on .NET and most of them run on Windows, anyway. Do you think that Firefox, OOo and KDE are all helping people move away from Linux by providing Windows ports? Isn't it more likely that without those Windows ports, most of these projects would go nowhere?
It's really quite obvious to anyone with any actual knowledge of how the industry works that people are going to write applications without Linux in mind. The Mono project, just like the Wine project, lets people who run Linux run applications that other people wrote for Windows.
As it turns out, there's also a bunch of useful libraries that Mono includes that you can use when coding for platforms other than Windows. It boggles my mind that anyone would think that this is somehow a trap. It's just a useful way to access Unixy things on Mono. But it clearly can't be breaking Linux lock-in or whatever pea-brained scheme you've come up with.
.NET has been around for 7-8 years now. Do you honestly think code can't become legacy in that amount of time? Here's a tip: if you think Linux has any lock-in potential for applications written on it, then perhaps you shouldn't talk too much about intellectual integrity.
Parent
Re:Oh just go away (Score:5, Informative)
Java used to provide lock-in, too. Hence, the GNU Classpath project, which is pretty much identical in its goals to Mono. Funny that I never saw you people screaming about that one being a trap.
The Java Trap was that you might get stuck on a language with no FOSS implementation and be reliant on a proprietary runtime. GNU Classpath and friends disarmed the trap by providing FOSS backends.
The Mono Trap is that you might get stuck on a platform encumbered by patents, so that even if you're coding on a 100% FOSS system, a court ruling granting an injunction against further release and development of Mono could yank the rug out from under you. Maybe that's no big deal for cute games or desktop applets, but there's no way on Earth I'd stake my business on a platform that may be nuked from orbit at any moment.
It's really quite obvious to anyone with any actual knowledge of how the industry works that people are going to write applications without Linux in mind.
It's equally obvious that Microsoft has never entered a relationship without destroying its partner. The naivety behind thinking that maybe they'll play nice this one time, for the first time in the history of their company, is simply astounding.
Parent
Re:Oh just go away (Score:5, Insightful)
Parent
.NET developers: ECMA .NET?#??!!#! WTF is that? (Score:5, Insightful)
All the budding developers who hear about .NET's cross-platform nature will want to learn it. All, except the wisest, of them will be forced to learn MS .NET from MSDN. They'll code a few .NET applications in C#, test them on M$ Windows and let their brains embrace .NET beyond all question. One day they find that most of their applications don't work on Linux/Mono. They'll scream on all public forums - "Linux is crap!!!". Someone tries to explain to them that the problem is because of their heavy usage of M$-specific extensions which are not part of ECMA .NET. Then they'll scream again - "ECMA .NET?#??!!#! WTF is that?". Such is the depth of lock-in involved with .NET.
Parent
Re:Oh just go away (Score:5, Insightful)
really? I thought MS has dropped support for OpenGL, apart from its very legacy v1.1 base. And you know they will never write a managed wrapper for it.
So, who will write a .NET game using opengl? If you're a Windows dev (and most game devs are) then you'll be using DirectX.NET, which oh so conveniently is not available for Linux.
So close. Yet so immensely far. Do you see the problem now? Its business a usual for MS, but with the added bonus of saying "But we are working on Linux interoperability, Mr DoJ, look - Mono".
Parent
Re:Oh just go away (Score:5, Interesting)
The Tao Framework [taoframework.com] is more or less the best thing out there right now for
Whilst i appreciate
Parent
Re:Oh just go away (Score:5, Interesting)
Except that C# is a decent little language? It's good to see it open-source, that way it can have a life after Microsoft tires of it.
Parent
Re:Oh just go away (Score:4, Informative)
well, it snot that decent a little language. Its a MS port of Java with extra bits added mainly in the realm of the GUI and interop with legacy COM and Win32.
They have added extra features that are cool, like LINQ, but I feel they'll be heavily misused over the coming years. They've also adding features like extension functions which will make scripting languages look like statically strong-typed languages compared to C# as time goes by.
Its also pretty complex for a little language, I'm seeing a lot of people complaining on the web about how they're using up all their memory followed by little tutorials on Dispose and releasing objects so they actually get disconnected and then freed by the GC.
I think if it wasn't for curly braces, and the .NET class library, hardly anyone would be using it. Imagine if MS only released VB.NET, you wouldn't use it, the classic VB crowd wouldn't use it, but its practically the same language as C#.
BTW. C#2 is a standard, C#3 is not. MS has promised to submit it, but they havn't yet.
Parent
Re:Oh just go away (Score:5, Insightful)
What you can't do is copy the windows runtime. I wonder how mono would do if Microsoft invoked patents against it. I suspect not well, but with Mono in its current state it is to MS's advantage - they can say they are multi-platform but know that most people will give up because of the 50% of programs that won't run and turn to Windows.
Parent
Re:Oh just go away (Score:5, Interesting)
Parent
Re:Oh just go away (Score:5, Insightful)
Thats the exact position Java has been in for years. Language Spec and JVM spec were open, but Sun's runtime was not. Anyone could make their own runtime. Yet people complained that Java was not open. So why would MS get special treatment for an open spec without an open platform?
Parent
ISO (Score:5, Insightful)
C# is an iso standard language, which puts it in the same league as C/C++.....
...and OOXML.
Parent
Re:Oh just go away (Score:5, Interesting)
I don't want to run my stuff on Microsoft technologies but I have potential (and actual) customers who already do use them.
In order to integrate their application and ours we needed to code a little plugin to run on their ASP.NET (or whatever the correct name is) servers.
Mono allowed me to develop the required plugin on a Ubuntu box. (They then wanted the resulting assembly signed, we gave them the source code so they could do it themselves).
Microsoft was relevant to us because we had a potential customer who used it and isn't about to abandon their entire existing system just for us.
Without Mono there would have been two options: .NET
a) Pony up to MS to develop in
b) Don't do the business.
neither of which are particularly appealing.
Mono allows competition and competition is good.
Parent
Re:Oh just go away (Score:4, Insightful)
Mono is Java in disguise, if you want cross platforms without traps use Java
It is like the mortgage crash, a few saw it coming, they said so, but the majority didn't care
A few people says that Mono is a legal and technology trap (search the web for mono trap), in the future this will reveal true, do not forget that you where warned
Parent
Re:Oh just go away (Score:4, Insightful)
FLAMEBAIT -- get a life! Anyone who has experience of both J2EE and .NET will tell you that .NET is better thought out, has a more consistant design,
has cleaner easier to use APIs, scales better, performs better
and is altogether a much nicer environment to work in.
I am sorry if this upsets the Slashdot worldview but its the truth. Microsfot are better at software than Sun.
Anyone who has experience of both Apache and IIS will tell you that IIS is better thought out, has a more consistant design, has cleaner easier to use APIs, scales better, performs better and is altogether a much nicer environment to work in.
I am sorry if this upsets the Slashdot worldview but its the truth. Microsfot are better at software than FLOSS Devs.
Because, we all know that those are the only things that matter when gambling your future - your legal liability is irrelevant.
Parent
Re: (Score:3, Insightful)
I agree. Why don't these people who want to use .NET (managed code) just use Java? At least that is platform agnostic (limited to whatever platforms Java is ported on).
By the way, what about dotGNU? http://www.gnu.org/software/dotgnu/ [gnu.org] At least that will be released under GPL and not some dual licence with GPL.
Re:Oh just go away (Score:4, Insightful)
Or we can create something on Linux that has to run on Windows (for whatever reason). This is a two way street - Mono can create software that runs on Linux, Solaris, Mac OS X AND Windows.
This isn't just getting Windows stuff to run on Linux.
Viewed from this perspective it is less important that Mono is behind .NET - if you're creating something new you target Mono and it should run on .NET
For many users Windows is where they are (stuck quite often) and they can't migrate 100% of their desktops to *nix, they have something that stops them on a number of systems. Mono means they can create applications that can run on a mix.
Parent
Re:Oh just go away (Score:4, Informative)
Parent
Re:IDE (Score:5, Funny)
"A question: Is there a functional IDE for Mono, for us who don't want gnome or even gnome libs on our System?"
Um, what? You'll get gnome cooties?
Monodevelop is a good IDE, and I don't think having GTK and related libs installed is going to steal your masculinity or anything.
Parent
Re:IDE (Score:5, Funny)
Yeah, it's a bitch trying to develop .net apps on my Amiga. I wish developers would stop assuming I'm using a Linux distro with features. Assholes.
Parent