Reasons To Use Mono For Linux Development
Nerval's Lobster writes: In the eleven years since Mono first appeared, the Linux community has regarded it with suspicion. Because Mono is basically a free, open-source implementation of Microsoft's .NET framework, some developers feared that Microsoft would eventually launch a patent war that could harm many in the open-source community. But there are some good reasons for using Mono, developer David Bolton argues in a new blog posting. Chief among them is MonoDevelop, which he claims is an excellent IDE; it's cross-platform abilities; and its utility as a game-development platform. That might not ease everybody's concerns (and some people really don't like how Xamarin has basically commercialized Mono as an iOS/Android development platform), but it's maybe enough for some people to take another look at the platform.
You just shouldn't bother. It's not worth the risk.
“He’s not deformed, he’s just drunk!”
Why use a Java clone instead of just using Java?
I suppose there's the Oracle factor which sucks. But Mono is by Microsoft, so it's just as bad.
Mod me down, my New Earth Global Warmingist friends!
We have a LONG memory of Microsoft's past behavior.
Have gnu, will travel.
There are no reasons to use Mono for Linux development. None. At. All.
So why don't they just relicense the .NET CLR and the rest of the packages under the Apache 2 license? It lets people use things as freely as the MIT/BSD licenses as everything else and contains the patent guarantees.
Until then, anything not under Apache 2 is suspect.
While I have never work in C# myself, the ability stop code in a debugger, write some code, and then continue executing (compiling your code in real-time) seemed like a really awesome feature (as a C++ guy, we don't get to do this).
The Unity engine is also quite popular and an increasingly popular choice is C# for use with it.
Maybe Microsoft can make one useful invention every decade?;)
-- Political fascism requires a Fuhrer.
So the only good reason to use Mono is its IDE?
Thanks, but no thanks, I'll stay with Vim and C/C++.
Using Mono makes sense if you have no memory for the past and no awareness of the problems caused by using other ecosystems primarily controlled by a single vendor.
Seriously. There are WAY more cross platform options available, and without all the risks that come from using something like Mono.
"Just say no" - Nancy Reagan
I work on a embedded Linux system running Debian Jessie armhf on a Cortex-A5 processor. At some point someone programmed a Web user interface for the system using Mono for Linux. The installation of Mono was difficult, requiring several hundred Mo of space on the filesystem and some trick to get the last package revision. Then the application was started and take all the processing load for almost 4 minutes. At his point it was eating near half the memory available on that embedded system. This was socking, especially for me that like to use qooxdoo for WebUI because it's basically a static file that need no compilation and have a very minimal memory footprint. Finally the guy switched to node.js for the WebUI on that system. The installation was easy, the startup compilation last now less than a single minute and the memory footprint is below 20%, all of that with a more complete demo that with Mono.
The only reason to use Mono is really to get Windows developers onboard.
But that's a long shot. Linux works because there are plenty of developers in mentioned programming languages that support it.
Since Java isn't terribly popular in Linux, .NET has no chance.
What people really want to know is when will Mono incorporate systemd?
Just cruising through this digital world at 33 1/3 rpm...
1) We haven't sued people for using it yet!
2) it's cross-platform (as long as you only use certain parts)
3) we have a single IDE!
4) you can write games with it... as long as it's a Microsoft console.
5) it's incomplete and buggy but were working on that!
sounds just great but why not use C++ and Qt instead?
Anons need not reply. Questions end with a question mark.
1. C# Is a Great Language
me: Yes it is.
2. There's a Great Free IDE: MonoDevelop
me: Finding a decent IDE is not a problem anymore. You can find something for every language.
3. Mono Supports Mobile Development
me: So does Java and Swift. Why does EVERY article out there think you have to pick just ONE language and be stuck with that choice forever???
4. Mono Is Cross-Platform
me: Python, Java, C, C++, Ruby, and many, many more are all cross-platform, too!
5. Mono Powers Games Development
me: The guy is totally right. He has some great examples, too.
Please just don't think, that you MUST use C# to get into game dev. For example, you can have much faster prototyping with PyGame. You can really learn to code in Swift over a weekend, if you have mastered one similar language well.
My advice to you is: pick any language, become good at it. Just don't do VB.NET or I will have to kill you.
Microsoft will do what it has always done; develop a technology, push it everywhere it can, then let it stagnate, and deprecate it in favor of the newest and bestest thing ever, before announcing that the next version of Windows will be the last to support it, so be sure to buy our new even more expensive suite of development and distribution tools while you can!!!!
Java is a reasonably mediocre language with a mediocre set of standard libraries, but you know what, I'm fairly confident that the application I write in Java today will still be usable in a decade (heck, I've got Java utils running that I first wrote in 2002 to 2003). In other words, Java may be far from perfect, but it is an enormous ecosystem with enormous penetration, particularly in the enterprise world. Even if I bought into the notion that C# is lightyears better than Java (which I don't), it is almost never purely about objective or subjective technological superiority.
Beyond that, if MS keeps to its word to port .NET over to other platforms, why on the hell would I want to use a crappy half-completed variant like Mono?
The world's burning. Moped Jesus spotted on I50. Details at 11.
There's about a billion times more library support for Java, particularly if you want to do anything that isn't related to Windows. And you have at least as much cross platform portability, you can reuse a lot of code for Android apps. iOS is a black hole for ALL VMs, so you really might as well just stick with Java, or else go the QT/C++ route.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
are there any good ones?
You'll be aged out of the developer pool, so who cares? ;)
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
Mono is something that Linux using teens learn about when they are pre-teens. Mono is something that friends don't share with other friends. Its embarrassing, and really, only something between you and your doctor. Linux users don't touch Mono because Mono is a contagion that shouldn't be allowed to spread. Mono: don't you get it. More specifically, when you touch it, its something that grasps on (due to patents), and doesn't ever let go (even with antibiotics). Save yourself the heartache, embarrassment and trouble: just stay away from those with Mono.
Why would anyone expect Microsoft to engage in such combat? Especially since the person in charge of Microsft's Open Source strategy famously wrote:
http://www.informationweek.com...
".. our PREFERRED plan is to LICENSE ... versus LITIGATE."
Gotta love Microsoft. Always thinking about our welfare. Or not.
I remember when Suse (SLED) switched to using mono for its update software. It instantly segfaulted on any attempt to run.
Late '90s software development for Windows sucked. And Windows sucked because it crashed for the slightest of reasons. And there was Visual Basic. And there was the latest hype in town: Java. Roll in .Net with C# and Visual Studio. Pretty neat and fairly idiot-proof IDE, decent set of libraries, managed execution to lower the amount of BSOD's and introduce a new language to extinguish both VB and Java.
None of these reasons was relevant outside the MS world. Plenty of languages, IDE's, editors available on Linux, some say even too many. No BSOD's, no VB. Oh wait, there's one reason: that wanker Miguel de Icaza.
"I'm not much interested in interoperability. I want substitutability. I want to be able to throw your software out."
Reason #1: because you're a moron who can't use a real language.
No. Just no. And HELL No!
If I want bloat, I've already got choices from Qt and GTK. No need to give mono/.NET devs a foothold.
After all, finding a job is a competition.
I won't run Mono-anything.
I won't run Java-anything.
Both of those libraries/languages are clearly made by people who do not understand the Unix philosophy. Do 1 thing and do that well. Do not do 50 things.
I just won't. Hell No!
I was present when Brian LaMacchia explained that we could trust "Palladium", later renamed "Trusted Computing", and explained that we could trust Microsoft to do it right because if they screwed it up, the engineers would resign. I then proceeded to remind him that he had resigned from the .NET project, for which he was a primary author, when Microsoft screwed up the security. And they left it screwed up anyway, of course.
It was so fun watching Brian squirm. He hadn't expected Richard M. Stallman to be in the room, either. Watching Brian try to pretend that Palladium was about "security" instead of about DRM was incredibly funny, especially with all the private keys stored in Microsoft's not particularly locked vaults.
I have been programming since before Microsoft existed, I remembers lots of things...
tl;dr So now I avoid Microsoft as much as is practicable. The first language I got paid to write was FORTRAN, now I get paid to write Java (cross platform, and well supported for development on Linux). I avoid Microsoft's Mono like the Plague.
I work in a strictly Microsoft shop, and we do all our development in C#/.NET (customer requirement is for a Windows application -- Java doesn't have the hardware support we need). The hardware manufacturing arm of the company, which uses Linux for all their development, got tired of their home-spun tools for device bench testing/diagnostics, and wanted the equivalent of our end-user application in Linux. We were able to port our base libraries without issue, and the WinForms support in Mono was more than good enough for our UI.
I know both Java and C# (having taught Java as a grad student). After having used Mono in practice, it is easy for me to recommend development in C#/.NET for cross platform applications.
There isn't other tools?
Anyway, from what I know, mono is not a full implementation of .net framework. So I don't see how cross platform it can get.
Java is bad. But at least there are full implementation of JSE on other platforms.
Please just don't think, that you MUST use C# to get into game dev.
In the Xbox 360 era, C# was the only language in which to write Xbox Live Indie Games. (Technically they had to be written in verifiably type-safe CIL compatible with the .NET Compact Framework, but C# was the only major language that could compile to that.)
For example, you can have much faster prototyping with PyGame.
I've done some prototyping in Pygame, but I thought Pygame was a 2D framework, not a 3D one.
An IDE is quite literally the least important feature of a language.
What a joke.
You win the dipshit award. "Convicted monopolist" is a phrase cunts use. And Microsoft is not giving up on .net you liar. Your attempt at FUD is risible.
Mono is such a steaming pile of shit, that if you want to run it on anything that is not GNU/Linux, it crashes. Have test suite written in .NET and it needs to run on Solaris, too? Too bad, one is royally screwed.
And what about the fact that it is always lagging behind the .NET reference platform on Windows?
Total crap, runs only on GNU/Linux. Talk about voluntary vendor lock in. Technology which thrills!
"Chief among them is MonoDevelop, which he claims is an excellent IDE; " ... which made my jaw drop.
Monodevelop is a fucking awful, AWFUL piece of software. Bloated, slow, and broken hundreds of ways.
They've "abandoned" it even though they're about to release C# 6 and a complete rewrite of ASP.NET called vNext which is being released as open source. Or do you have secret insider knowledge that they're planning to rewrite ASP.NET again in Javascript?
"There are a lot of decaffeinated brands on the market today that are just as tasty as the real thing."
If it was a question then the answer would be "None"
I use Haxe http://haxe.org/.
MonoDevelop/Xamarin Studio FOSS Edition is the key point here.
I have to admit, I resent MS just as much as the next guy and I consider C# a half-assed cross between readability of C, speed of Java and portability of Visial Basic and unlike some MS fans do not consider the PL the second coming of Christ. ... But (you did see a big "but" coming up there, right?) I have to say that MonoDevelop is an impressive FOSS product. It works out of the box on Linux, OS X and Windows, it's actually a pretty good IDE and it makes getting up and running with C# GUI/client development a breeze.
You can get from zero C# experience to an own feasible GUI app in a matter of hours.
Something I can't say of other great toolkits, such as Qt.
In a nutshell, MonoDevelop is the only reason I would actually even consider C# as a PL for a project. .Net ecosystem available as FOSS, I wouldn't completely dismiss C# for non-trivial infrastructure and middleware either.
And now with major components of the
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
Only the (currently allowed, in principle they can add more to the "licensed use only" list) open spec, it is entirely unworkable to use Mono for development in Linux since the programs allowed will be a neutered and worthless subset of what would be done if the language were actually open.
Moreover, the patenting licenses of .NET means that including the methodologies of .NET, which Mono has to do, infects your code with Microsoft licensing.
1. Patent issues
2. Need to ship mono runtime - It is difficult to ship programs to end users with it. If you build GTK# programs, and want to ship binaries, you also have to ship all of GTK to have something that works everywhere. This makes your distribution huge. If you build programs with windows forms, they will have modal dialogs, and other horrible windowsisms that aren't acceptable in Linux world. However, at least in this case, you can ship a working mono with graphics, providing you are very careful to package its dependencies.
3. Slow execution times - much too slow for things like complex games.
4. Dependency on runtime.
5. Mono is NOT cross platform. There are subtle differences in behaviour on different platforms, and there is no common gui toolkit.
6. Monodevelop is not the best IDE.
7. It is incomplete and often very buggy.
I mean, Microsofts development philosophy is so much better. Maybe its time to switch to their operating system as well?
... using .net/Mono may make sense.
If you remember how Microsoft threatened Linux developers only a few years ago, and how many "technologies" they crammed down Windows' users throats only to abandon them shortly after, not so much.
Also, Re: Game Development. The original author is an idiot that thinks gaming == xbox. The console designed for... watching TV. No thank you.
Microsoft is the Anti-Christ. This tool does not benefit the community. Using gcc/c++ benefits the community. Using Mono only benefits Microsoft because that encourages everyone to try Mono and then the developers end of feeling limited on the Linux MONO IDE because it is deliberately crippled with less bells and whistles than the MICROSOFT WINDOWS-BASED .NET IDE.
The bottom-line long-term strategy for Microsoft is to suck money out of developers pockets on an ongoing basis. Their agenda about Linux was revealed years ago with the "halloween papers" their real strategy was "Fear, Uncertainty, Doubt" towards Linux;"Embrace, Extend, Extinguish" Linux. For as long as Linux afficionados remain vigilant, that's not going to happen if Linux developers continue to use gcc/g++. I clearly recommend ignoring all Microsoft offerings on an eternal basis. I look forward to the day that Microsoft is irrelevant in the software domain. Move on. Nothing to see here.
Apparently not everything that Linux runs on:
http://buildd.debian.org/status/package.php?p=mono&suite=sid
And sure, Microsoft has a history of douchebaggery. But look at how nice the IDE is! An C# is nice too! So fuck the risks, gimme the shiny shiny! /sarcasm
(ok, I admit, C# and its libraries really are pretty nice)
We already have nice languages that are cross platform, mobiley, with IDE support (hello, Python). Why take such risks for the sake of shiny development tools?
I thought that was gone five years ago.
He has done more to harm Linux than anyone, other than Lennard "systemD" Poetering.
Copyright (c) 1990 - 2014 Dice. All rights reserved. Use of this comment is subject to certain Terms and Conditions.
I don't think MS is going to 'stop supporting' .NET. Hell, Visual FoxPro 9 SP2 was released as late as 2007 and there were hotfixes released as late as 2010. Granted, MS hasn't really supported it in a big way in about 10 years, but it was a LOOOOONNNNNGGGGG time 'dying', and there are still quite a few users.
Even if .NET were to follow VFP its going to have active support for AT LEAST the next 10 years. Given that MS has no other similar product or reason to ditch this one in favor of another, as well as various active ongoing technology programs that build on the .NET CLR it hardly seems likely to fade very fast.
I think what MS has determined is that their boundless enthusiasm for managed code was a bit over-the-top. It makes sense as an approach for 'apps' and less-demanding or 'internal use' type applications. I think they've also realized that the real value of such an environment is in Java's niche, as a high performance platform-agnostic host for business logic. Unfortunately for them they'll never displace Java in that niche. That boat has sailed.
Still, MS itself will in all probability continue to write .NET applications. C++ is a great language, but it takes a huge amount of effort to deal with memory management issues and such crap. C++ is also a language filled with lots of pitfalls. It is incredibly easy to write bad C++ code, and you really need to study the language itself for a few years just to be a truly competent coder. Frankly I just stick to Java, but if I was a .NET guy I'd just stick with that. Why not?
I wonder about HTML5/Javascript. Personally I think Javascript is another terrible language. We're kind of stuck with it, but between the terribleness of HTML, the terribleness of the DOM, and the terribleness of JS writing UIs in that environment really is a pretty awful and expensive process. We've found that with JavaFX (and no doubt other equally good toolsets) we can write a UI in 1/2 or 1/3 of the time it takes to do the same quality of work in HTML/JS. While it is certainly not going anywhere in the near future I have to see this whole paradigm as ripe to fall. MS may think they've hitched their wagon to the final answer, but IMHO something much better will come along before too much longer.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
Nothing super-complicated can ever ever ever be whipped out in no time and no thought.
Suse used Mono in SLED 9-11 from several things, but specifically Novell's ifolder implementation. With SLED 12, mono is no longer available. Considering that Suse/Novell used to employ the most of the mono team. but no longer, it may be obvious that this is a dead end
~corporate tool, but employed~
Eclipse better than VS? I'm pretty sure you mean IntelliJ. Eclipse is terrible. Comparison only makes sense between VS+ReSharper to IntelliJ (ReSharper and IntelliJ are JetBrains products) NOT something awful like Eclipse.
none! Use Python for Pete's sake!
Nowadays, every language implementation and compiler has been released under a very permissive license. If the guys from Xamarin would try stopping making money out of Mono I'm sure it would become a lot more popular. For example:
-LLVM (BSD)
-Lua,Python, Ruby, etc. (BSD Style)
-CoreCLR (MIT style)
-Dalvik (for Java)
Even GCC runtime license is more permissive. Mono is a dual licensed commercial product, so I'm surprised Slashdot is making publicity out of it.
Ok, MS doesn't do patent abuse when it concerns .NET (yet).
But all Android vendors have to pay up to Microsoft for all the Linux/Android based phones they sell, because of patents. This is extortion pure and simple, and it's Microsoft abusing patent system for monetary gain.
--Coder
Mono has and always will have a subset of the functionality and ecosystem available to .Net windows developers. If a developer builds their skills around .Net using mono it's only a matter of time before the benefits of using .Net on that platform outweigh the benefits of using Linux for that developer, that project, that company. Sooner or later more jobs being available for those with .net skillsets on windows or higher paying jobs will mean mono developers taking those jobs which leads to more professional experience on that platform and rinse and repeat.
Mono is a sinkhole designed to drain developers away from Linux. Stay away from traps, use tools that provide superior capabilities on your already superior platform and build your skills and experience on those.
- If you are a retard that can't clean his own shit than C# is the right language for you!
- If you are a moron that believes for a single second that Microsoft become over the nigh a selfless company, than than C# is the right language for you!
What about technical issues such as recompiling (almost?) the whole of mono just to add in a new baud rate?
Everything is built like a house of cards with so much omni potato gobble de gook crappulent interdependencies and MOOD APIs
(DOOM spelt backwards). By the time all the dots are joined, it spells microshaftees at work AGAIN.
Nothing has changed then.
Welcome to the vast variety of languages on Linux with the attributes you have. Unfortunately you're still an underperformer in:
- Speed: Plenty of faster-running and faster-compiling (or not compiling) languages to chose from
- Convenience: Python, Perl, Bash, PHP are all lighter-weight, easier setup, & ready-to-go
- License: It matters to the free-software community.
- Self-Competition: Killed D-Lang, Harmed Rust (Co-routines). You've got it (Microsoft CLR runtime) and we all know that's trouble.
- Packaging: Installing Mono-based apps into a non-Mono box are huge.
- Tooling: Experienced devs live here & expect standards. Leave the standards & you've left the community.
So for every purpose there's a better tool (except running code from devs who won't leave Windows). Since devs are leaving faster than ever and universities have all-but-abandoned Windows in CS education, this category is too small to matter. As for legacy software, it'll stay on Windows for fears that it's not as platform-independent as people think (see Java @ 2005), so it's not even an exception.
Science & open-source build trust from peer review. Learn systems you can trust.
convicted monopolist
Nope. They settled with the DoJ and consented to an agreement overseen by a FISA judge.
So, lots of NSA backdoors. But no conviction.
Have gnu, will travel.
> Java is a reasonably mediocre language with a mediocre set of standard libraries, but you know what, I'm fairly confident that the application I write in Java today will still be usable in a decade
This. Java is the COBOL for the new century, but COBOL has served us way better than most Microsoft tech, with the possible exception of win32 whose only hope of survival is with wine and reactOS. You go MS only if you have enough dev power and want to milk the clients for needless updates. Which was great in the 90s but now is becoming kind of a risky business.
Sure they're still running, but just because java takes forever to execute.
Knock knock. Who's there? (long pause) Java
reason defies logic
With various GNU/Linux distributions, Mono support is spotty and therefore I'd steer clear of it entirely. Why do we need it? We don't. We're much better off with native frameworks that are better suited to the GNU/Linux OS itself. Such as Python for example.
I wouldn't say Java is utterly consistent. Its pretty generic though, and I like that. If you know C you can pretty well understand the flow of code in a Java method, and if you have a general understanding of OOP then you will pretty much understand Java. I think the same can be said for C#.
Frankly I was considering using a scripting language to write some test driver code. I figured it would be a little less tedious and easier, but what I found was that with a modern IDE it just wasn't worth the bother. Yeah, I could make my test harness a little simpler, and in theory I could even edit it without recompiling, but it was just plain easier to write the stuff in Java, its just not that hard to code in.
I mean there are very definite use cases for scripting, but its not like the old days where it was much easier than coding in a compiled language.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson