Mono 2.0 and .NET On Linux
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.
I don't think it should surprise anybody that Mono 2.0 cannot handle applications written for .Net 3.0 or 3.5...
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.
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...
Microsoft: you shall never possess the necronomicon!
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.
throw new NoSignatureException();
A question: Is there a functional IDE for Mono, for us who don't want gnome or even gnome libs on our System?
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.
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.
Boffoonery - downloadable Comedy Benefit for Bletchley Park
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
You should be able to just get the GTK headers and libs and compile it. Patt dropped Gnome from Slackware for this very reason - it's a horribly complicated package to get right.
/usr/local/lib, but I can throw them in the package so you can do a removepkg to remove the app and libs in one fell swoop.
I could try to roll you a tgz later today. Are you running 12.0 proper? You'll have to drop some gtk libs in
If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.
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/ At least that will be released under GPL and not some dual licence with GPL.
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.
If mono would be full .net compatible (say "if"), this would mean, people be allowed to move their Windows .net enterprise application from Windows to Linux.
Be sure, that MS will never let that to happen ! This is not anything like MS beein BAD or things like technologically it is not feasibile ... just marketshares and money. An enterprise do care about their money and investment : so do their shareholders.
Alright, think of this. MS had runaway from Java when they though "we can no control this and make it platform dependent", thus "it's too much of a risk, let's trash VisualJ++, jview and the wfc's".
What did they do instead ? They build their own "Java platform" version. But one they can control and make sure it will never be used to endanger their assets.
Crossplatform sounds always good to people ears, so they also had to make sure the platform is portable to some reasonable level (money, could helps there to delegate to third party), but also that "it will always works best on Windows".
Money get back to its dady ;-)
Whatever Corel, Icaza & al claim, the only platform that MS cares is Windows. If MS realy cares about non Windows running .net framework, then would have at least build a compatibility test kit or GPLed the framework already, isn't it ?
Seriously, appart from the marketing hype, what is the chance a real life corporate enterprise applications build using .net migrate without problem from Windows to Linux ? IMHO, it is the same chance people migrated cobol application to Java with a single click: very little. Better to have full managed code, better to have mono supported API, better to use code used often, etc.
By the way, what is the long term for .net ? think of MS DNA ... at one point of time it will no more fit in MS grand-strategy and be deprecated by their master. Just because, beeing successfull would it has the potential to kill MS milking cow ! You can even anticipate, it will be some kind of "embrace and extend" thing that they really loves. Something that will let non Windows .net user in the middle of the road.
At first, MS has realized by pushing .net, a Java engeneer can move to a C# project ... But they do not have realized that by doing this a whole new generation has already become "Java-minded". .net developper, thing of this : do you like accessign to non-managed "pre .net" APIs ? does it sound modern to you ? easy to use ? simple ?
They now master Object, GC, persistence, etc and do not want to get back. If you are a
Look around, years back, it was .net "everywhere" ... now, seriously, the suffix has been deprecated. This means that even MS top strategists shows little interest for .net: less bankable than others MS assets + threat to other assets = let's not put lots of things on this (but some little to try to slow down opponents).
Anyhow, things are evolving, Linux is becoming ubiquiteous, Java is becoming ubiquiteous ... and those two are the best MS nightmare. How to kill them ? I dont think any strategist has an idea at redmont (or at least one that does not imply suicide of one of their assets).
Time will show ...
Rgs,
TM
There's a big difference between the two - because devs don't target WINE, WINE is the "embrace" part of moving from Windows. Because devs target .NET, .NET is the "embrace" part of moving from Linux.
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.
I'm a minority race. Save your vitriol for white people.
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! :(
I wish the real .NET could be installed on Wine. Not because I like .NET, but because I want to run those programs that people make in .NET these days, in Wine just like I can do with regular programs. If Wine wants to work like Windows, it should also be possible to install the real .NET on it just like you can do on the real Windows. They should try to make it work just as well as they did with MS Office. Then it would become possible to run so much more programs in Wine without problems and without having to reboot to Windows!
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 command with a Unix command like wine . Most things will probably work okay.
Patent encumbered lock-in of future software?
I'm a minority race. Save your vitriol for white people.
You're not making much sense. Yes, people don't target WINE, they target the Windows API, just like they target the .NET API. Wine is a means of running Windows code on linux, Mono is a means of running .NET code on linux. People will be writing code for both, so might as well support running it on linux.
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
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.
Web Services exist for this specific reason. You can create Java components and let your customers access it easily from their .NET code.
839*929
*sigh*
.NET provides it. WINE helps people leave windows and still keep their legacy applications. Mono provides a way for new applications to be moved from Linux to Windows.
.NET that can be run on Mono, in which case we have bigger problems, such as lack of intellectual integrity on the part of those making the argument
WINE removes lock-in,
Unless, of course, the argument is made that there are legacy applications in
I'm a minority race. Save your vitriol for white people.
Except C# is much better than Java and .NET is much better than J2EE.
Old COBOL programmers never die. They just code in C.
Have they now released it so that M$ cant come along and pull the plug using Patents they hold or via Copyright/DMCA junk?
Just asking
c# is not open source, is patent riddend and the life of mono on linux depends only on the god will of microsoft, on which feel free to bet your guts.
> Mono allows competition and competition is good.
So your saying the developer has to make a choice to recompile their application to run on mono?
Wouldnt it just be better if m$ just released a version of .net themselves and not get people like de icazza to move away from unfinished projects (ie gnome v0.2) and create new ones (ie moonlite + mono)?
I'm guessing that 40% of those incompatible apps are due to code which references Win32 libraries via P/Invoke. Seriously, almost no-one is developing for .NET 3.x. Most apps are written for 2.0, which is included with XP SP2 and Vista, but 3.5 is a 300MB download, so almost no-one has it. Microsoft had to release a client-only subset version of it which is cut down, and its around 30 MB, but it'll cause a lot of confusion (RE: versioning), and I don't think it supports LINQ.
Most human behaviour can be explained in terms of identity.
If you were setting out to write a serious new web application and cross platform was a real requirement why not just use Java? If your requirements are smaller there are plenty of other languages that offer cross platform deployment that are up to date on all platforms.
It's great to see this project continuing to develop but it's going to be like Blackdown Java - a niche product at best. The only saving grace is that, unlike with Java, you can't actually run the MS VM on Linux (AFAIK).
I used to have a better sig but it broke.
"InternetNews points out that only about half of the .NET apps out there will work on Mono 2.0"
On my Windows XP computer half the .NET applications break anyway.
-Woof woof woof!
the portability is a myth. look at how much applications are written in a portable way (OpenOffice, for example)
posix and c/c++ where portable and uniform across operating system for at least three decades, and if cross platform development doesn't thrive on those, then none of those wannabe portable languages will do any good for portability.
portability using a common runtime is a myth, and is a weird version of the microsoft format lockin (yes applies to Java too). look at how many platform debian packages are compiled towards, THAT is portability.
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.
How the fuck does this kind of pig headed zealotry get modded Insightful?
You should take things on their individual merit rather than some sort anti-whoever prejudice.
Mono is NOT merely to allow you to run Windows .NET applications, it is there to provide a platform independant runtime which you can develop in C# (for example) for.
You feel sleepy. Close your eyes. The opinions stated above are yours. You cannot imagine why you ever felt otherwise.
trying to codesign large Windows executables. At the time their Authenticode tool was better than Microsoft's own.
Never send a human to do a machine's job.
FLAMEBAIT -- get a life! .NET will tell you that .NET is better thought out, has a more consistant design,
Anyone who has experience of both J2EE and
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.
Old COBOL programmers never die. They just code in C.
Wine makes it possible to run Windows applications, built on the WIN32 API, to run on Linux. Mono makes it possible to run Windows applications, built on the .NET framework, to run on Linux.
In both cases, most applications will probably be developed primarily for Windows, but can also be run on Linux. Yes, you can develop .NET apps on Linux, run them on Linux and then move to Windows while keeping your .NET apps. That doesn't mean that Mono provides lock-in. It just means that .NET/Mono comes closer to cross-platform portability than WIN32/Wine does...
I for one look forward to games coming out using .net and managed opengl libs. Suddenly game makers won't have to do much work at all to write games that perform well on windows, linux, even osx. Sounds like removing lock-in to me
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.
Before I tear apart what you think passes for an argument,
Ad hominem
let me say that the Mono folks are doing an amazing job and they get way too little credit.
Irrelevant - I did not begrudge them their due.
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.
Then you have a short memory.
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?
Strawman, I never claimed anything like that, the majority of applications are in-house development efforts, and there are more portable and less legally dangerous alternatives to .NET
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.
Wine does, certainly.
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.
I believe it is because your experience of the industry might just be limited to software for the masses, and not the majority of software written.
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.
Irrelevant, Ad hominem and a strawman. Well Done!!!
.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.
I leave the above in purely to demonstrate your lack of an argument.
I'm a minority race. Save your vitriol for white people.
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".
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.
To be pedantic I think the C# language definition is open source. What isn't is the runtime. You could write a C# compiler with its own runtime and you'd have a pretty nifty alternative to Java.
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.
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.
I'm a minority race. Save your vitriol for white people.
You're not much of a debater. Yes, there's an ad hominem in there (but only one, not two as you claim). However, ad hominems don't invalidate anything else I said, and it's not necessarily even false. I still think you're a pea-brained moron and your response has done nothing to change that.
If you want to be taken seriously, respond to my argument against you thinking there's Linux lock-in that Mono is breaking. Or present some other argument that I shall take great pleasure in mocking similarly.
J2EE v .NET is not the same comparison. Java v Net is.
Does it really scale better? Or is it that no-one notices any more because computers have got more RAM and faster CPUs nowadays.
the API is (well, was) almost entirely the old Java/J++ class library.
Now that said, you're still right. MS *is* better at development software than Sun. Visual Studio is best in its class and .NET is easier to use mainly because of that. I wouldn't like to type out those long, long namespaced methods without the IDE to autocomplete for me!
Do you want Vista? I don't. .NET makes everything bloated to an insane degree.
Some Gnome guys try to push a piece of crock named "Tomboy notes". If you try it, it will take more memory than the whole rest of Gnome together. And Gnome, well, isn't quite the paragon of being bloat-free.
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
So what? Decent languages are a dime a dozen: Scala, D, Ada..
They are alternatives which don't tie you to Windows.
WINE is as to Windows as Mono is as to .NET
This is basic logical reasoning.
It's false logic, as demonstrated by the fact that people don't target Wine, but do target Mono.
Also, Wine is not legally encumbered, Novell needs cross-patent deals with MS, Wine devs have never needed so. This attempt to equate Wine and Mono as somehow "the same thing" is intellectually dishonest.
I'm a minority race. Save your vitriol for white people.
If you think MS doesn't have patents on parts of the Win32 API, then you're really messed up. The cross-patent licensing deal with Novell was for all patents. It would also include any Win32 patents. NET vs. Wine isn't relevant there since the patents involved weren't divulged..
.NET apps to run on Linux. People now write for Mono. Wine started as a way to compile Windows Apps for use on Unix. People now also write and certify their applications for Wine. You also appear to think this is different, and somehow get people to mod you up for your poor reasoning.
Mono started as a way for
Put identity in the browser.
Anyone writing for Gnome should use Vala, Gnome's own c#-alike language.
Put identity in the browser.
Actually, there are quite a few very well written opengl managed libs that take full advantage of hardware acceleration, written by people other than microsoft. Some of these are even free and open. I understand you think what you believe is correct, but can you all please ease up on the zealotness?
They'd remove the patent encumbered bits (which are compiled as a completely seperate component), and get on with being an implementation of the .Net runtime on other platforms.
My first C# app was to convert some Java code. It was a breeze.
Now beng a bit of a master of C#, I recently needed to convert C# into Java. Arrrggghhh....what a nightmare! The first stumbling block was that you cant pass variables by reference. I had to completely redesign it, and the result kept the Garbage Collector very busy.
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.
In fact, it really is.
IIS 7 is leaps and bounds ahead of whatever Apache 2.2 is cooking, open source third party modules included.
Being able to develop pipeline modules for IIS 7 on C#/.NET is phenomenal.
Why no better spend the effort in creating a VM for Ruby, Python or a new language instead of implementing a half baked M$ .Net framework and C#, who wants to use C#? it is to verbose and ugly language.
Poor Miguelito but he is wasting his time and life with this project that doesn't benefit nobody, it doesnt benefit Open source, it doesnt benefit Linux, even doesnt benefit M$ folks.
Anyone writing for Gnome should use Vala, Gnome's own c#-alike language.
Or writing for Maemo. It's a pretty fantastic way of getting lean programs with advanced language features. Unfortunately, it's still a little lacking for bindings in the stable version (GNet wasn't functional in the last stable version, which was a deal breaker for the stuff I was doing.), but it's very promising for embedded apps.
"He may look like an idiot, and talk like an idiot, but don't let that fool you. He really is an idiot." - Duck Soup
Comparing Visual Studio to something like Eclipse isn't exactly a fair comparison, since Visual Studio doesn't do cross platform, at all. For anyone who doesn't live, eat and breathe Microsoft products, this is a bit of a problem. Monodevelop is currently the only almost equivalent for doing .NET work in a cross platform visual way....
That being said, if you're doing heavy duty development work and don't use Windows, Eclipse is a much better environment than Monodevelop, so it's pretty safe to say that Java development on non-Windows systems is easier than .NET development. If you don't use Windows.
"He may look like an idiot, and talk like an idiot, but don't let that fool you. He really is an idiot." - Duck Soup
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.
WINE allows you to run Win32 applications on X/Unix. Mono allows you to run .NET applications on Linux. While superficially these appear similar, there's an important difference: WINE and classpath implement specifications that are publicly available whereas Mono, through a deal with M$, implements something which is not freely implementable. The difference shows up like this: you can write an alternative for classpath or for WINE (although it would take another 10 years) but you can't write an alternative to Mono (no matter how many years you take) without having a deal with M$ either directly or indirectly. In summary, M$ CONTROLS who can implement .NET while that is not the case with Win32 or Java. Can you see the Lock-In now? Anything that requires you to have a deal in order to implement it is not an open standard.
The largest prime factor of my UID is 263267.
As a .net developer, you have to notice that Managed DirectX doesn't exist anymore, and XNA is too nowhere near as powerful as MDX was. There is SlimDX, which is a binding around DX10, which is quite cool, but has only become available recently.
.NET. It provides cross platform .NET bindings for openGL, SDL/glut/glfw, as well as OpenAL, devil and CG. It's basically a cross platform XNA equivalent.... but a lot better ;)
/. is full of MS bashing, I'd actually suggest you go try mono with the Tao framework, and it might prove to be a suprisingly pleasing environment to work in....
The Tao Framework is more or less the best thing out there right now for
Whilst i appreciate
C# is an iso standard language, which puts it in the same league as C/C++.....
WINE is as to Windows as Mono is as to .NET This is basic logical reasoning.
You are wrong. Read the reply that I've written to the parent post of the parent post of the parent post of your post to know why.
The largest prime factor of my UID is 263267.
Wine is to Windows as Mono is to .NET is right, but that's not what goose was on about.
Wine is the opposite of .NET.
If you write **for** MONO it should work on windows.
If you write **for** .NET, it probably won't work on Linux.
If you write **for** Wine, it should work on Windows.
If you write **for** Windows, it probably won't.
Note: MONO is the odd one out. There's no analogue in the "lock in/ unlock" stakes that WINE has for MONO.
Except patent pledges and license restrictions. Of which Novell say there are none but haven't said so in binding statements.
Mono allows competition and competition is good.
The existence of Mono depends on its developers having deal with M$. But it's being advertised as if it's something like WINE. While M$ claims .NET is a cross-platform standard, it is cross-platform only across the platforms that M$ permits Mono developers to target. Mono is compatible with .NET only to an extent that is determined by M$. So here's the bottomline:
Mono allows M$ to advertise itself as allowing competition while in reality it only allows competition to the extent that M$ wants to.
The largest prime factor of my UID is 263267.
Microsfot are better at software than Sun.>
Check again.
May be you are doing wrong comparison. Because many companies develop products for Java.
Development: more than one 'good IDEs' take example of Eclipse .. launch configuration, refactoring etc features are far ahead than "licensed" Visual Studio.
Runtime Services/Frameworks: BEA, Oracle have provided lots of performances and features including J2EE and SOA BI ....
Framworks like Spring, Hibernate have forced good software designs.
So its not about Microsoft and Sun. .Net
Its about Java and
Does this allow running VMWare Infrastructure Client under Linux?
The VMWare ESXi product is now free to use and very capable of high-class virtualization, but the admin interface is for Windows-only, apparently written in .NET.
This means sysadmins with a Linux or Macintosh workstation are unable to see the screen of guest machines running under ESXi or execute complicated configuration tasks. (The command-line interface available for Linux users is very primitive in functionality compared to the Windows-only GUI client.)
This is a shame of VMWare Inc. and I hope it can be corrected with MONO. Do you have some info on this topic?
Before I tear apart what you think passes for an argument,
"Ad hominem"
Erm... do you know what 'ad hominem' means? This is insulting your argument, not you personally. It's insulting to you personally by proxy, on the basis that you believe your argument etc etc. Okay, yes, there is an ad hominem element to it still as you are insulted along with what you said, but that doesn't invalidate it. "Ad hominem" is hardly a defence.
"Then you have a short memory"
Or more likely: hasn't come across posts where you express the bug up your ass about java.
"Wine does, certainly"
Erm... mono "certainly" does too... not *all*, and often without some porting (such as changing paths to reflect unixy filesystems), which is stated. You may remember what WINE was like as 'early' into the project as Mono currently.
Among other things, Mono allows transference of skills of Windows programmers to Linux systems, should they desire to work under Linux. If you think people are going to develop under Mono on Linux, and then move their projects over to the Windows platform instead, I think that demonstrates how little confidence you have in Linux.
"Irrelevant, Ad hominem and a strawman. Well Done!!!"
Untrue, irrelevant, untrue, and unduely patronising.
The revolution will not be televised... but it will have a page on Wikipedia
C# has removed some JAVA frustration, Java always felt a little strange compared to C++, it doesn't have real properties (and don't tell me about those get/set functions that's just fake). With C#, it feels a little like having delphi but than without the pascal syntax... To bad it is mostly windows only...
...only about half of the .NET apps out there will work on Mono 2.0, for a variety of reasons...
All those reasons can be traced back, in one way or the other, to the fact that M$ gets to decide what fraction of the .NET applications will work with Mono. M$ chooses the fraction to be big enough so that people will be fooled into thinking .NET is a truly cross-platform API yet small enough to keep Mono always as a second-class citizen compared to .NET.
The largest prime factor of my UID is 263267.
google target wine
(1.21 gigawatts) / (88 miles per hour) = 30 757 874 newtons
My claim is that of the two techs mentioned (Wine and .NET), one enables migration from Windows, the other prevents it."
Are you serious?! How do you think that Mono prevents migration of software from Windows to Linux? Bare in mind that for that to be true, what you're saying, is that if I have some software written for .Net and want to migrate it to Linux, I could do if it wasn't for Mono? So surely that means that if I avoid installing Mono, then I will be able to migrate it to Linux? Without Mono, I can run it, but installing Mono prevents me from running it? If that's not what ya meant, maybe you could word your argument more clearly?
The revolution will not be televised... but it will have a page on Wikipedia
I forgot there's a hell lot in MS .NET that's not in ECMA .NET. I forgot more than 99% of the .NET developers read the MS. NET documentation rather than the ECMA .NET documentation or the Mono documentation. I forgot lot of foolish but vocal people consider the compatibility between Mono and MS .NET as a measure of .NET's cros-platformity while they should actually consider the incompatibility between dotgnu and MS .NET as a measure of the lock-in involved.
The largest prime factor of my UID is 263267.
C# is a copy of Java with some ugly nasty C++isms thrown in, for example 'virtual' and operator overloading.
The difference between Canada and the USA is that in Canada healthcare is a right and gun ownership is a privilege.
It works with Visual Studio, which has built-in automagical wizards for filling out frontends. This tool even works with libraries that other people have made.
It also has a web programming model that's almost exactly the same as its non-web model.
I haven't seen this level of RAD support in any other system which also has support for the web - much as I would like to - especially in Java.
Hopefully, one day I will. I'm subscribed to the MyEclipse project. Mylyn is awesome, subclipse is the best subversion client I've ever used, but I have found no actual set of libraries that I can develop with the rapidity of the ones that come with .Net 3.5.
Mod me down and I will become more powerful than you can possibly imagine!
Say what you will but compared to Java, C# is beautiful. And yes I do use both of them.
"Blah blah blah." - [citation needed]
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.
The largest prime factor of my UID is 263267.
erm, J# is an ms port of java. C# isn't. It's much less migraine inducing than java for starters.
Or better: Write a C# compiler that compiles to the java virtual machine.
How is this a flamebait and the parent not? Zealots should not be mods ;)
My claim is that of the two techs mentioned (Wine and .NET), one enables migration from Windows, the other prevents it.
And Mono now negates that last part you said since it allows you to move .NET code over to *nix, so, relating to the actual discussion of Mono, what exactly is your point again?
Actually, as a long time developer in C#, I welcome the ability to program for my home OS (Linux).
I can't be bothered to learn Python, Perl, C++ or Java - having .Net right there in Gnome (and with Windows Forms support too!) is absolutely great for me.
I've never heard much of anyone developing apps in .NET for Linux. It's possible, but I've not seen it done seriously. Mostly I've seen people developing apps in Windows for for Windows using .NET. Then, suddenly, though rarely, they see they can migrate these apps to their *NIX platform and get more out of their development.
If you look at Mono from the perspective of *Nix devs using mono - yes, it's a method of lock-in. If you look at Mono from the perspective of Windows devs using mono, and their apps then being useable by *Nix people, then it is a method of removing lock in.
That being said. I've never heard of a professional shop using Mono for *Nix development, or many non-professionals doing the same. It's always been targeting Windows, without the intent of cross-platform. If anything the whole basis for a lock-out argument and mono seems to be a straw man.
Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
And anyone who has experience of both IE and Firefox will tell you that IE is better thought out, has a more consistant design, has cleaner easier to use interface, scales better, performs better and is altogether a much nicer environment to surf in.
Dr. Dobb's http://www.ddj.com/ talks with Miguel de Icaza about Mono 2.0 in this audio interview.
The fact is that the .Net Framework is an excellent set of libraries to do most common programming tasks.
Take your pick of .Net languages or implement your own.
its not so much zealotry, if you code for Windows, you code using Microsoft libraries and everything that comes with Visual Studio. If it doesn't come with VS (or the platform SDK perhaps) then you don't use it.
I'm serious, things used to be a bit different, you could grab code from all over and use it without problem, but I've seen a definite shift away from that over the last few years.
Perhaps its because MS has supplied more library code, or perhaps its because of the Open source movement (ie managers have discovered people using free code, have read "free code is communist" on a website or magazine and have put 2 and 2 together to end up with "no use of free code in this organization").
So, nowadays, if you're going to write for Windows, you are very much pushed towards using the 'standard' or default libraries, and that means DirectX in this case.
OpenGL does have good libs, I like it, I've used it, but the number of Windows developers who'll use it is very small indeed. Its a shame and its why my attitude towards MS has shifted over the last few years, I am still a Windows developer, but I see the monoculture has grown too much.
But its not open souce, Microsoft still holds the copyright on the actual language schema. Implementations may be, but not the language.
While would be a bad PR stunt, they could pull it at any time. ( unless things have changed recently )
---- Booth was a patriot ----
C# has some features that Java just lacks: efficient parameterized classes, multidimensional arrays, value classes, call-by-reference, explicitly unsafe modules, and native code interfaces.
We were waiting for years for Sun to fix those, but Sun never did (there has been some movement on some of them recently, but it's too little too late). As far as I'm concerned, the only reasonable general purpose programming languages these days are C++ and C#. Java simply isn't even in the running.
There are maybe a dozen commonly used Mono applications on Linux. They don't involve .NET at all, they are written in Gnome. When you install Mono on Linux, you usually don't even get the .NET libraries.
The value of Mono on Linux is primarily as a better programming language for the existing Linux, Gtk+, and Gnome APIs. The fact that it also provides .NET compatibility is icing on the cake.
Without the support of features in .Net 3.5, very few people are going to choose it for new developments.
Lots of people are already choosing Mono for new developments, and most of them don't use or care about .NET.
I really don't care about cross-platform support. Why? Because the major work of getting applications to work well on differnet platforms isn't the GUI library, it's doing all the platform integration work. A cross-platform library only makes that more difficult.
In different words, the way to do a cross-platform C# application is to use .NET libraries on Windows, Gtk# on Linux, and Cocoa# on OS X.
On the other hand, if you use Java and Swing, your application will never work well on any platform.
IIRC, a lot of hobbyist developers are moving from C++ to C# (example: CDBurnerXP). Apparently the .NET platform is really popular in Windows. Most devs I've talked to in real life know much more about .NET than about Java.
So what happens when there's a new Killer app for Windows that requires .NET? Think about it, what if suddenly Adobe said all its products required Microsoft .NET 2.0? .NET is not the "embrace" part of moving from Linux. For starters, it's a Microsoft Technology. Nothing to embrace here.
I'd think more of .NET as "yet another Microsoft product to keep making the Windows platform more interesting". The problem is that it's a DEVELOPMENT product and developers start using it. I see .NET as a danger because it keeps being a moving target. AND it's developed at Microsoft's whims.
Strategically speaking, .NET is a very powerful weapon against non-Windows Operating Systems. Why? Because it's a PLATFORM. Not only we have to target Microsoft Windows, we also have to target Microsoft .NET if we want to keep Windows users happy.
C# is an iso standard language, which puts it in the same league as C/C++.....
...and OOXML.
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)! .Net isn't a VM, it's a JIT compiler. Your .Net language is compiled to MSIL (similar to byte code) then JIT compiled to machine code. You can do this in advance of executing the application, with a tool called NGEN (Native Image Generator) which speeds up the application startup time.
Personally I find the design of Java a hassle. You have to handle every possible error (.Net allows you to bubble the error up to the calling code and capture all errors there), properties are long handed and also I find it a hassle to set up classpaths and find myself at the command line more than I feel I ned to be.
There's also a selection of different libraries for everything whereas in .Net it's a simple case of using System.Xml.Whatever - in Java I feel like I have to read a giant bunch of essays about which XML parser I should be using which is a complete drag.
Then there's Web services. No "Add Web Reference" in Java, it's a royal pain in comparison. XFire has been discontinued in favour of something that doesn't integrate with Eclipse.
I've also found trying to get answers and help is a hassle in Java whereas in .Net a million people have had exactly the same problem as you already and have already posted code examples.
I run Eclipse and Visual Studio on my machine with no problems.
As you can probably tell, I'm totally happy with .Net as a platform.
Yes, they will both be in a struggle to maintain 100% compatibility as well, to a point. As soon as Mono comes out with a new version Microsoft will create a new incompatible version like they have been doing. This is the position MS want to be in. They've somewhat lost the ability to change Win32 because it would break everything. They can create a new version of .NET and just claim you need the new run time. Seriously. Why do we need 6 run time environments (1.0, 1.1, 2, 3, 3.5 ... and soon 4)? While I am on the subject... if 3.0 is built on 2 with WPF, why isn't it called 2.5 and why isn't 3.5 (3 with LINQ?) called 2.55? I mean, let's give Java it's due. Version 1.6.4 will run all old Java code and .NET 2 won't run 1.1 byte code without the 1.1 libraries.
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
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.
Dewey, what part of this looks like authorities should be involved?
Actually, having used programmed in C# a fair bit for the past 4 or 5 years, I'll attest to it being rather portable. One just has to avoid any use of those p/Invoke calls, and keep everything contained within the .NET environment.
I dunno... it lot me around Main()
Since I happen to have Ubuntu and the latest version of Mono for that, and one particular app that I'm sitting on which would probably work in 2.0, I'm just wondering: Does anybody know if or when the upgrade will happen for Debian users?
--Edward Dassmesser
Until something goes wrong, which, in my experience, it frequently does. You can review the Apache source code to figure out what's going on. More importantly, others can too, so if others have had the same problem you have, there's a very good chance that a fix is already available . . . EVEN if the Apache devs themselves did not come up with it themselves.
That's been my experience with every pair of analogous MS/Free projects. Even if the MS offering has some features or advantages that the Free offering does not, the Free offering is still infinitely easier to work with over long periods of time. There's more of a learning curve, but that learning curve only has to happen once, and the knowledge gained thereby lasts a long, long time.
Freedom is valuable for its own sake, but there are practical benefits too.
Nonaggression works!
It's false logic, as demonstrated by the fact that people don't target Wine
Uhh... yeah they do. How do you think Google ported Picassa to Linux?
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?
Its a MS port of Java with extra bits added mainly in the realm of the GUI and interop with legacy COM and Win32.
What the hell are you talking about? As a person who's worked extensively with both Java and C# (and Smalltalk, Perl, Python, a bit of Lisp, and probably a few others I can't remember right now), C# has some awfully nice features in a single package. It is, without a doubt, entirely derivative, but it took some of the nice things in Java, and then added things like:
1. Properties. Yeah, they're fancy getters and setters, but they're very nice syntactic sugar.
2. Real annotations. Being able to attach metadata (say, descriptions to enumerated type values) is very nice.
3. Generics.
4. Delegates. All the power of function pointers, plus type safety. This is *really* nice for event-driven apps.
5. Real, honest-to-god closures. This is the killer feature for me. I *refuse* to work in a high-level language that doesn't support higher-order functions.
And that's just off the top of my head.
Sorry bud, but you're just wrong. C# is, in my mind, the next logical step for a Java-like language, and I think it's very well executed. The class libraries, not so much, but the language itself is excellent and I'd choose it over Java any day of the week.
You or I not be as efficient at reviewing Apache (or IIS) source to track down the remaining tricky bugs as one of the Apache (or IIS) devs. Attempting to do so would be wasting your time, hence stakeholders' money, and would be bad practice.
You ask the vendor politely to fix it. If they don't think its a problem, and its a serious enough issue, then you give them money to fix it.
You'd also be running the risk of your shitty bandaid fix not being accepted, or being modified. Then you are up shit creek supporting an inhouse fork, without a paddle.
The source code is only useful if your time is practically worthless.
3laws: No freebies, no backsies, GTFO.
For an example of a .Net project targeting both Windows and Linux, see OpenSim. http://opensimulator.org/wiki/Main_Page
The only one with visibility I know of is the HandBrake GUI named RippedWire (http://rippedwire.sourceforge.net/about.html). So it's out there, but to call it popular would be an infinity-1 sized exaggeration.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
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.
While I wouldn't stake a business on running .Net apps in linux (for a number of reasons, including the above), I would point out that since you can call native code from .Net, it's possible to write your way out of the problem if something like that occurs. Granted, it would be a pain in the ass rewriting your application, but it's completely possible, and can be done incrementally, much like prototyping in python and moving to C.
-PainKilleR-[CE]
SharpDevelop is better than Monodevelop, and is BSD licensed. It also, frankly, pwns the crap out of Eclipse. The only reason I don't use it on Windows (its much faster than VS, btw) is that its refactoring tools aren't yet on par with the excellent Resharper add-in.
Regardless, you can compile cross platform binaries with Visual Studio. If your time is worth so little that the $200 license for Windows is too high, then I respectfully suggest you reconsider either your rates, or your career.
3laws: No freebies, no backsies, GTFO.
SharpDevelop is better than Monodevelop, and is BSD licensed. It also, frankly, pwns the crap out of Eclipse. The only reason I don't use it on Windows (its much faster than VS, btw) is that its refactoring tools aren't yet on par with the excellent Resharper add-in.
You missed the most important part, which was the cross platform part of it. SharpDevelop works under Windows, nothing else. Monodevelop is more or less a port of SharpDevelop meant to work with GTK#.
As far as cross platform stuff goes, Monodevelop is all you're left with for C# stuff (if you discount Eclipse plugins).
Regardless, you can compile cross platform binaries with Visual Studio. If your time is worth so little that the $200 license for Windows is too high, then I respectfully suggest you reconsider either your rates, or your career.
You know, the "Linux users only use Linux because they're too cheap for Windows" meme is a little old. It has nothing to do with the license for Windows -- I just find it to be an inferior operating system for both my development tasks and my daily computing tasks. The fact that you naturally assume that I'd rather waste my time either maintaining a completely separate virtual or physical machine simply for the privilege of having a marginally nicer UI for designing apps which are only guaranteed to work as advertised on a single operating system?
As it stands now, I have no trouble using Eclipse as an IDE... I just avoid using C# for anything other than CLI tasks. Saying that anyone who doesn't use what you use is cheap and/or underpaid and/or incompetent is just plain condescending. If not ignorant. Use what you're comfortable with, and don't dog other peoples' choices in operating systems. It's just a single tool, and not worth scrapping my entire workflow and machine installation to accommodate.
"He may look like an idiot, and talk like an idiot, but don't let that fool you. He really is an idiot." - Duck Soup
.Net is slowly replacing the Win32 API, and doesn't hold the backwards-compatibility issues that are inherent with an API that debuted in NT and Win95. This is why it's popular with Windows developers. Additionally, you can learn one API and use C#, VB, C++, J# (ie Java syntax) and a number of other languages to access the API in a very similar fashion.
In other words, they're trying to address many of the problems developers had with the Windows platform. If developers have fewer problems writing software for Windows, then that obviously is a problem for other platforms.
On the other hand, you can always write software targeting older versions of the run-time, and most developers do so specifically because they don't want to learn the new portions of the API and are often limited by availability within their target audience. Despite .Net being widely available through Windows Update, you don't see a massive migration among end-users to the latest version of .Net, and it's a pain in the ass to tell users they have to download a patch (even if it is on Windows Update, but this applies to Java as well) to run your program.
It doesn't address your base point, but Adobe wouldn't bother moving to .Net for the simple fact that most of their software has a huge base among Mac users. I'm really mildly surprised that they haven't tried to embrace the Linux community by leveraging the code they had to write for OS X compatibility.
As someone that develops for Windows at work and primarily uses Linux at home, I really have come to believe the killer apps on Windows are games and IE. Unfortunately it's not that IE is a good platform, it's that people keep writing to it because it has such high usage numbers. If I could get Netflix movies running through firefox it would eliminate a large percentage of my boots into Windows. DRM and the increasing quality of console ports lead me to playing fewer PC games anyway, leaving me with RTS games and occasional western RPGs as my primary reason for booting the PC into Windows for gaming. Frankly, as my PC ages it gets less important because new games won't even play on the laptop any more.
-PainKilleR-[CE]
To those who forgot, this is the same ISO that fast-tracked OOXML, just adding that to the pool of thought.
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
When do you envision this theory, developers targeting Mono, coming into practice?
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
I thought only parts of .net were ecma standards and therefore 'safe', like c#. Isn't winforms covered by some MS patents?
This seems like a precarious position for anyone without a patent covenant.
--10scjed IANAL,AFAIK
Yeah, but that was before they fast tracked OOXML, back when the holy grail was to get an open standard approved by them. Ahh how the grapes have soured...
There, I fixed that for you, as if the company Microsoft backstabs is large enough, they manage to recover (see: IBM).
GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
.NET 2.0 was supposed to be a clean break from .NET 1.x. .NET 3.x, and all future frameworks, are fully backwards compatible, in that .NET 2.0+ apps will work just fine with those frameworks. You only need the new runtimes if you use functions that are new to those versions. As for legacy 1.x code, well, they should work just fine with whichever version of Mono is equivalent to .NET 1.1, right?
.NET apps don't work in Mono 2.0 because Microsoft has moved onto .NET 3.5 is pretty sensationalist; obviously apps that use features which are implemented in 3.0 and 3.5 won't work in something that is equivalent to .NET 2.0, where those features HAVEN'T BEEN IMPLEMENTED YET.
The summary's whole spiel about how half of the
Anyone can "stand up for what they believe", but it takes a very brave individual to change what they believe. - Loundry
Probably more useful for companies to use "in house". It's low risk (if Novell et al decide to scrap it - use .Net, if Microsoft change .Net out of all recognition - use mono) it isn't too bad as a development platform (.Net is well considered - even if it is Microsoft). You might argue that Java is an alternative - and yes, it is.
I've programmed in Java, not in Mono/.Net - so I won't attempt to argue the case either way (as I just don't know enough about Mono/.Net).
That's a hell of an idea. I wish I had mod points for you. One caveat though -- The JVM doesn't support unsigned types.
Similes are like metaphors
There is a big difference in that C# supports unsigned types.
There is also the fact that it is tightly integrated with Windows. Say what you want about lock-down, but when you're an ISV, you value a cohesive platform that targets the vast majority of the market share.
Similes are like metaphors
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.
I can't really comment on the specific, Microsoft-related instances you're talking about - but I would say that this sometimes really is how progress works. Moving forward, coming up with better ways to do things, sometimes means leaving old ideas behind. Microsoft has the power to do that and make it stick.
Going with the established pattern just because it is the established pattern can make programmers more comfortable but it isn't necessarily the best decision.
Bow-ties are cool.
Given that Mono runs on Windows, what happens if you try running a Win32 version of Mono under WINE?
Without Mono there would have been two options: a) Pony up to MS to develop in .NET
b) Don't do the business.
neither of which are particularly appealing.
Mono allows competition and competition is good.
You can download the entire .Net framework and compilers free of charge from Microsoft, and you can get cut down versions of the VS IDE as well (or you can use SharpDevelop). In short, you most certainly can get started (and infact progress as far as you wish) in .Net development without ponying up anything to MS.
Mono is still good, however - I'm not disputing that.
Hey, I have no complaints against Mono. Those poor guys are doing a lot of hard work. And they've done great so far. My complaints are against .NET as a whole. My chief complaint is that neither the Mono team nor the programmers who write .NET/Mono applications seem to realize that Mono is always going to be a second class citizen and always playing catch-up no matter how competent the Mono team is. Another complaint is that M$ is falsely advertising .NET as a cross-platform framework while in fact it is only interoperable across those platforms which M$ dictates through its deals.
The largest prime factor of my UID is 263267.
It works a little bit better than .NET (with winehacks) as far as running GTK# apps and all, but you might as well use native Mono for that. I got .NET 2.0 installed with winehacks and attempted to run nLite and of course, it crashed (a framework crash, not a Wine crash). I tried with Mono 1.3 last time but that was pointless for that. Wine's project plan is to support Win32 Mono as far as I know (especially since it is free software) to run .NET apps.
C# definition is openly "specified" (ECMA), not openly sourced. Mono provides the open implementation for this specification.
http://www.ecma-international.org/publications/standards/Ecma-334.htm
I liked Vala as a language and briefly took it for a spin, a while ago. However, without mature IDEs that Java and C# have, I found the experience closer to programming in D than C#, even though the language is closer to C#.
To be pedantic I think the C# language definition is open source. What isn't is the runtime. You could write a C# compiler with its own runtime and you'd have a pretty nifty alternative to Java.
http://live.gnome.org/Vala
tomorrow who's gonna fuss
Half of .NET apps are working by default my ass.
In my case it's close to 0%
Some have few Todo items, but they crash on some other part of the code.
I guess it'll take at least 6-12 months until it's actually compatible with .NET 2.0 as they are advertising right now.
Too bad, I have high hopes for Mono.
"WINE is as to Windows as Mono is as to .NET This is basic logical reasoning."
Not really. The fundamental requirement of Mono is to implement .Net ISO standards. On the other hand, WINE was never intended to fully implement the Windows API and development is primarily driven by the desire to see the most popular applications run on it.
There are also applications that are specifically targeted to Mono which might not run on .NET as implemented by MS. Thus in general Mono isn't really a way to transition from Linux to Windows. On the other hand, does anyone create applications that specifically target the WINE "API"?
And don't forget that Mono is ALWAYS a day late and a dollar short compared to .NET,since it always seems to be a couple of versions behind and feature incomplete. This works greatly in MSFT's favor,since having a bad implementation can be more damaging than no implementation at all. Because it is always behind and feature incomplete you will ALWAYS have a better experience on .NET with Windows,and all it takes is some nasty crashes or not being able to get what you need to run correctly to leave a VERY bad impression on the user.
ACs don't waste your time replying, your posts are never seen by me.
The problem isn't that Mono prevents migration from Windows. To the extent that apps are built targeting .NET, Mono obviously helps migrate those apps.
But at the same time, if developers are targeting .NET under the illusion that they'll get easy portability, then there are probably better solutions. QT comes to mind, not to mention Java.
It seems like Mono will never provide complete portability. The article talks about percentages of the code that will work under Mono, the assumption being that the developer will need to make tweaks to get a Linux version. I'd bet there'd be cases where they'd have to do tweaks to get a Mac version too. At that point, what's the advantage to using an interpreted language over a nice C++ framework like QT?
Bottom line - If portability is the goal, Mono might just muddy the waters. Why not work to build something truly portable with whatever perceived advantages of .NET built in?
Posted from my Android phone. Oh, I can change this? There, that's better...
Groovy adds all the glory you would find in Ruby and Python directly to the Java platform. It's tremendously fun to use.
Guess what? You'd better stop using all software altogether. Pretty much every piece of software written today violates some patent somewhere. If Microsoft wants to sue Mono, they can do that. They can also sue Linux, KDE, and any number of other people. You know why? Because they have a lot of superficial patents that anyone might violate totally by accident.
Your argument, then, is that no business should stake itself on open source. Good to know.
Who cares whether MS plays nice? Any business relationships involved are between MS and Novel. Mono is open source and so in no way tied to Novel. Novel might run into trouble with their MS deal, but it matters to Mono only insofar as many of the devs are paid by Novel.
"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."
I don't think you really understand how patents are written. Any patent that MS may get isn't going to be written as .NET specific because that would limit the scope which lessens the value of the patent. Instead MS would patent technique X and if so motivated would sue anybody that implemented technique X regardless if it's implemented in Mono, Java, or plain C. Writing your application in C wouldn't provide you with any special immunity from the patent.
If Microsoft wants to sue Mono, they can do that. They can also sue Linux, KDE, and any number of other people. You know why? Because they have a lot of superficial patents that anyone might violate totally by accident.
Yeah? Ones as fundamental to the success of those projects as the innards of C# are to Mono? Suppose MS sues KDE for violating their patented algorithm for decoding PNG files. KDE switches to a different algorithm and new versions continue to blossom. They could be barred from distributing old, violating versions but an orderly migration is still possible. In the worst case scenario, we'd lose KDE. That would suck immensely, but life would go on.
Now, suppose MS sues Novel [sic] for violating their patented algorithm for binding methods in dynamic languages. Have fun working around that little gotcha! If Mono really caught on and everyone started using it, then MS stepped in and destroyed it, we'd face the equivalent of losing GCC. That would be about the most damaging blow they could land, but people of your mindset are happily buying into that vulnerable position.
No, I have no expectation whatsoever that MS is in this to play nice. If they really wanted to embrace non-mainstream OSes, we'd have Office or VisualStudio for Linux. People would pony up good money to buy those. And yet, their most visible outreach to Unix involves providing a new foundation for everyone to build upon. You don't have to be a conspiracy theorist to see how convenient that would be for them.
Dewey, what part of this looks like authorities should be involved?
Some features in C# such as generics can't be implemented as is to run on a standard JVM because the JVM doesn't have the capability to support it. .NET's CLR was designed to support generics at the byte code level. In Java, generics are implemented by the Java compiler that just hides the object casting from the programmer. The result is that the JVM doesn't really know what the types are at run time.
Well from a generic point of view, the 'portable' part of .Net implemented by Mono has nothing special over the Java platform, which can be used by Scala.
Sure .Net provides Windows programming, but in this case you lose portability..
Instead MS would patent technique X and if so motivated would sue anybody that implemented technique X regardless if it's implemented in Mono, Java, or plain C.
But they could very well (and supposedly have) patented algorithms necessary to the implementation of .Net itself, thus making Mono directly infringing. I can hypothetically write patent-clear code in C, but even "hello world" in C# is built on shaky ground.
Dewey, what part of this looks like authorities should be involved?
Yes. I bet they've got all kinds of patents like, "A method for displaying information to the user in such a way that the user has to acknowledge the information before proceeding" and such.
Really, MS probably has patents that affect GCC, Linux, and a whole bunch of other stuff. They do, after all, have their own compilers and kernel that they have presumably filed patents on. Likewise, Sun probably has patents on Java, and maybe even C++ and other compilers. Borland likely does, too.
Really, you're just spreading FUD like any of the good MS marketing people.
Sure you do. Please provide specific examples of things the Novel deal lets Microsoft do to Mono that they couldn't have done before the deal.
"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." .NET devs want the latest and greatest they have to use Windows.
Just as planned. Mono isn't a threat to Microsoft, it's actually a help. Because the standard is controlled by Microsoft, Mono will always be playing catchup, so if
...and that is all I have to say about that.
http://jessta.id.au
"But they could very well (and supposedly have) patented algorithms necessary to the implementation of .Net itself, thus making Mono directly infringing."
How likely would it be that .NET would contain patented algorithms that are so general that they are absolutely unavoidable when implementing a .NET clone and yet specific enough that other languages, libraries, frameworks or plaforms don't violate them?
"I can hypothetically write patent-clear code in C, but even "hello world" in C# is built on shaky ground."
No. You can't patent on a code-specific basis. In theory, if there was no prior art, somebody could patent "An algorithm for greeting Earth", but they couldn't get one patent for every computer language that could implement it.
You can download the entire .Net framework and compilers free of charge from Microsoft, and you can get cut down versions of the VS IDE as well (or you can use SharpDevelop). In short, you most certainly can get started (and infact progress as far as you wish) in .Net development without ponying up anything to MS.
Are you permitted to commercially distribute what you create with those versions?
Perhaps you can but I was under the impression you couldn't. Perhaps more research (wasted time) would have revealed otherwise but an obviously free version was a better option.
Boffoonery - downloadable Comedy Benefit for Bletchley Park
From their Express Editions FAQ:
http://www.microsoft.com/express/support/faq/
;)
It took me all of 32 seconds to hunt down that FAQ page, so your research must not have been much at all...
Take of your "MS-criticism-sensitive glasses".
MS has plenty dosh to sue. Most GPL companies can't afford to break the lawsuit.
Check out how Amazon are patenting user-feedback bonuses.
Or, a little closer to the bone, MS's "IsNot()" patent. What if the agreement to be .NET compatible required "IsNot()"? MS already do that with some of the MSOOXML stuff.
....that .Net is the primary framework for extending a lot of Microsoft stuff, as well as a few other vendors' things that run on Windows. So if you're developing an in-house extension these days to customise something like Outlook or Word to do a few extra things appropriate for your organisation, chances are it'll be .Net code that does it. We have several customisations like this, and it's frustrating at times because it means that Office apps (or whatever else) will stall for several extra seconds either at startup or at some other time depending on how it's configured, because they're loading the framework. Being able to write the customisations in an cleaner and more coherent API tends to make it worth the tradeoff for us, though.
Our Document Management System also uses a mixture of .Net and COM to integrate with MS Office, and its primary API for us to write extensions for it is also a .Net API.
There aren't a lot of production off-the-shelf .Net apps for the reasons I mentioned (difficult to reliably distribute to random users), but I think it's still popular simply because Microsoft promotes it as the way to interact with and customise most of their stuff. That and ASP.Net, which is very popular all by itself.
Why is there P/Invoke available in the language anyway?
Just dump it.
Good news I think...
An extra number of (previously) MS only developers having a better option of porting their code than they ever did before. Sounds like a good thing doesn't it...?
Personally I'd welcome more apps on Linux or any other none MS platform - and using a core Microsoft technology isn't a bad thing. It means the development skills are going to be taught and available for some time - even it they never get off the MS platform for 50% of the time.
However, there is a downside - it could, of course, bomb. As a point of interest I mention a previous port of a MS language. Indeed, it could have the same worldwide impact as "Novell NetBasic". For info, I believe it was later relabelled "Novell Script for Netware". There is a reason to the mention of this second spurious piece of trivia, unfortunately it is just a ploy in hope that the other 2 people who tried to script anything in it might be aware of it by the other name can come to my aid and save me from all those people pointing and laughing. I'm sure it was a great idea to rewrite a completely unstable VBScript interpreter for the Netware platform.
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.
Exactly, which makes it pretty useless, so it's as bad as OOXML in a way, so tell me again why I'd want to bother writing Microsoft-specific software for Linux? No thanks.
Promote true freedom - support standards and interoperability.
I'm somewhat bewildered by this argument, but would really like to understand the issues better. From what little I know, I thought the .net framework was an open standard, that the Mono people didn't require any kind of license agreement with Microsoft, and that the project had the blessing and assistance of Microsoft engineers. (This was before Novell started funding the project, or whatever their exact relationship is.)
The argument that Mono provides a way for applications to move away from Linux is technically true, but laughable. .net and its associated technologies like C# and ASP.NET are strongly associated with Windows, and whatever you may think of them, popular technologies. If you can run an asp.net website on a linux server that's got to be a good thing, hasn't it? (But then, I see from Wikipedia that ASP.NET is a patent grey area.)
Some reasoned argument, please, not blinkered ideological bullshit.
Some reasoned argument, please, not blinkered ideological bullshit.
Since you asked nicely - Everything written for Mono would run on .NET/Windows, very little written for .NET/Windows will run on Mono. The "compatibility" is a one-way street, you are usually compatible when moving from Mono to .NET/Windows, you are almost never compatible when moving from .NET/Windows to Mono.
Unfortunately the ideological mental midgets seem to have taken over, and want to poison the word "compatibility" to mean a two ways street, which it is most certainly not.
I'm a minority race. Save your vitriol for white people.
This sounds very like the situation with WINE, though, whose devs are continually playing catch-up with the Windows API. I'd really like to know why you think they're diametrically opposed.
Reading the other comments on this page, it seems the biggest concern about the Mono project is not what compatibility it does or doesn't offer, but that it strays into proprietary areas of Microsoft's code - under the aegis of the MS-Novell patent agreement - and so has become a kind of outpost of Microsoft in the Linux world.
I'm not sure what the long-term implications of this are, but I still think it's better that Mono exists. Better that some work is required to port an app to Linux, than it remain completely locked into Windows.
Patent-wise, it would seem that WINE is even worse off. Google's lawyers appear to think they're in the clear supporting WINE, but MS could just be biding its time before hitting a major Linux port with a lawsuit.
You ask the vendor politely to fix it. If they don't think its a problem, and its a serious enough issue, then you give them money to fix it.
BONGGGGG! you ever tried doing this with Microsft?
As a former user of .NET, I've got to tell you that C# is a much better language than Java. .NET everything is an object (in C# you can invoke methods directly on string literals, if you wanted to). C# has an integrated query language (syntantic sugar for making expression trees). .NET has real generics, not like Java. Sheesh, I can tell you 1000s of reasons why some people really like to use .NET and wouldn't use Java. .NET core library is better designed than the JRE, where things like XML parsing are simple, so you don't have to deal with overengineered crap. .NET framework with its languages to be better designed developerwise, maybe this is in part because it doesn't strive to be uberly generic and run everywhere. .NET, I lectured in a .NET course in my university. I stopped promoting .NET when the Microsoft/Novell deal was announced. Since then, I'm trying to digest Java, but I can't. :)
.NET supports delegates and events, so you don't have to clutter your code with anonymous classes to do simple stuff. C# supports operator overloading (so you can do things like == on strings). In
Also,
If you are doing desktop apps, Windows Forms is a bliss to work with (Even gtk# is great). In Java you have to deal with Swing which is good, but with things like events support in the language it could be better (at least it supports doing some things declaratively using annotations, but it is that or using anonymous classes crap).
I could continue telling you advantages all day...
I find the
By the way I HATE Microsoft. I was a supporter of
Which patents were those?
That's the stupidest thing ever. Man most of you people have no idea. Argh. And it's been done. Mainsoft does it. It's called Grasshopper. Mono as a VM is 100% compatible with .Net. Mono's problem is not it's VM, it's the class library. It's just incomplete. It's also apps that call to native Win32 libraries, which will never run on Linux.
I'm an avid Mono user. My company develops software internally that runs on Mono on Linux servers. We choose C# because it's a very good language. That's about it.
The real worry is not MS raising patent concerns about Mono. It's other people out there raising patent concerns. Against Linux. Against Gnome. Against the rest of the software stack. Each of these is heavily patented. Mono is no different in this regard, except it has something to do with Microsoft. MS makes OSs, office products, business productivity apps, game engines, and huge amounts of other things. All of which are potentially patent ridden. At any point here MS could use their patent arsenal to sue about MUCH MORE than just Mono. But we're under that thread from other players too, not just MS. Other players which have sued people in the past. MS never has.
Check out Unity3D. It's a game engine written in .Net, that runs on Mono, and uses OpenGL.
My whole problem is 'the agenda' as much as I hate using the term. That is to get as many developers on-board developing .NET apps. I cannot be sure why, other than to make our computers slower, and make programming easier. Good thing on the latter part. On the former, I have the same opinion on .NET as Java (SLOW start-up time, often slow performance).
I think the real issue at hand is why Mono cannot just be .NET (so it can run everything without porting). And the company we have to ask that to is Microsoft. However, we already know the answer: software patents.
As for managed code, I'm going to 'digest' C# using Gtk# or Qt# interface, but I am going to lean more towards Java, even if it is 'worst'. I do not mind .NET apps (nLite and vLite for example). I just wish more developers would jump on board making Mono apps instead of .NET apps, which would mean utilising Gtk# or Qt# instead of Windows.Forms. They still have not put Windows.Forms in 2.0's binary release for Windows (I installed it in Wine).
The other problem with Mono IMO is it has no intentions to solve the problem where an app launches a non-CLI app, not via Wine or any means. Mono is not really working on Wine yet either, and .NET is still a pain to install (all kinds of hacks just to get simple Windows.Forms apps to run).
Yep.
You do it here: http://connect.microsoft.com/
To be frank, its extremely unlikely that you will encounter a showstopper bug that nobody else will, given their install base. I don't know of any developers who have been in this position. However, if it did happen, call your local MS office and you'll be able to pay to get work done (same way you can pay for patches to out of lifecycle products).
3laws: No freebies, no backsies, GTFO.
You don't seem to be making much sense, you're confusing the language with the implementation of the language and the libraries.
C# as a language, which is a standard that is available for anyone to implement. As a language it is certainly superior to Java thanks to things that Java missed such as operator overloading, implicit getter/setter methods and so on.
Because C# as a language is superior to Java and .NET is superior as a framework to any of those available for Java would be my guess.
Platform neutrality is much less of a benefit to a Windows only company (which 90% of companies are) than the vast productivity gains that .NET offers over Java. Visual Studio only serves to widen the gap as Netbeans, Eclipse and so on and so forth simply aren't as good and don't allow you to be as productive.
If I want to write a cross platform application I'm with you, I'd use Java not .NET and Mono but for the majority of companies out there who are Windows only Java offers no benefits over C# and .NET and in fact only has disadvantages.
Some people will disagree with me and tell me I'm wrong simply because they hate Microsoft and it's technologies but you only have to look at the increasing popularity of C# and .NET vs. the decreasing popularity of Java to see this is fact. Whatever the open source community might like and might feel is best isn't necessarily what industry is doing.
If I'm writing a program that I know is never going to run on anything other than Windows for it's lifetime what better option is there in terms of productivity, security and efficiency than C#, .NET and Visual Studio?
Why not just code native code then? I know this involves things like actual memory management on your own, but I still don't see AutoCAD .NET or Lightwave .NET. My guess is they do not see any performance benefits even though they can do 'rapid development' with .NET unlike native C or C++.
I just see C# as an intermediate step to get the industry ready for F#.
Reality is the ultimate Rorschach.
Actually, the street can be as two-way as you'd like. The problem with .NET code written on Windows not running under Mono (presuming compatible versions of .NET) is when the developer goes outside the bounds of .NET and uses p/invoke to hit native libraries.
This, of course, can work both ways.
This isn't entirely true.
WINE does not aim to implement an operating system, it's aim is to implement Windows API's to allow applications built targeting Windows to run on other O/S's.
Mono however attempts to be a replacement for the .Net runtime, tool-chain and API's.
It seems that you don't realize the advantages of the .NET framework.
From the perspective of someone who has developed in both java and .NET, mono just works, period.
If I need to develop a back-end server application I do it in java. When I need both a desktop and back-end application I use mono/.NET.
Yeah, my server and client share common code, and I routinely violate the MVC paradigm, but we've already established that I'm evil, right?
People tend to assume mono means C#. One aspect people often overlook is IKVM, which compiles jar files into .NET libraries. Its not a silver bullet, but it has its uses. It allows you maintain helper classes in java, but expose them in .NET.