“The MonoDevelop team is proud to announce the release of MonoDevelop 1.0. MonoDevelop is a GNOME IDE primarily designed for C# and other .NET languages. MonoDevelop enables developers to quickly write desktop and ASP.NET Web applications on Linux and Mac OS X. MonoDevelop makes it easy for developers to port .NET applications created with Visual Studio to Linux and Mac OS X and to maintain a single code base for all three platforms.”
Before the traditional “mono is evil” flames can someone point me to a few balanced articles on the benefits and problems with Mono?
I really want to understand this!
I have very limited experience with monodevelop, but this is my experience:
Good:
1. Good intellisense, feels much faster than eclipse.
2. Native toolkits gtk# for linux and winforms for windows. I think a common gui over platforms are futile, it will never excel, because it can’t make use of existing infrastructure.
3. Decent documentation.
4. C# is a produktive language – a improved clone of Java, and .net class library is good.
5. Best of all I don’t need to use make files! one of the things that has kept me from programming in linux – I HATE MAKEFILES!!!
Bad:
1. No debugger, BIG PROBLEM!
2. As late as the Release candidate, monodevelop tended to crash quite often.
3. ASP.NET support is very incomplete.
4. .net 2.0 support is incomplete (from what I have heard).
I’m glad that you like it! Here are a couple of answers/additions to some of your points:
Good #2: We don’t actually use WinForms on Windows, though MD can run on Windows and Mac. We’re pro-GTK!
Good #4: Agreed, C# and the class library are awesome. C# 3 is even cooler, and Mono now supports it (though MD doesn’t yet).
Good #5: MD can both generate and synchronise makefiles too, so even if you don’t want to use them, you can distribute them. MD has a command-line build tool too.
Bad #1: The debugger’s a major priority for the next release. We’ve been waiting for a stable release of the Mono debugger library.
Bad #2: Instability is likely to be a problem with an old version of GTK# (Ubuntu?). MD is very stable on recent GTK# versions.
Bad #3: As the developer of MD’s ASP.NET support, I’d be interested in hearing what you’d like from the ASP.NET support in future versions. Code completion is in development, but the visual designer is on hold pending a stable release of WebKit-GTK.
Bad #4: Actually, the 2.0 support is near-complete and very stable. The 2.0 runtime in particular has been usable for a very long time — MD itself has been built and running on the 2.0 profile for almost two years. The only significant part of 2.0 that’s still not complete is WinForms 2.0.
“The only significant part of 2.0 that’s still not complete is WinForms 2.0”
Who needs it????
GTK# is fantastic. I believe more documentation on this would be awesome.
Well it really sucks on windows…
If Makefiles are the only thing that keep you from programming in Linux, and you want to program in Linux, I suggest you spend you research about Makefiles and tools like automake, for just one hour. Because I really don’t see why one should hate them, what is it you hate?
Well, I can understand that, but why does that keep you from programming?
I do know nothing about make and the autotools, but when using a modern IDE it is not necessary to know anything about it. Just click on “run”, and the IDE will run through all steps necessary automatically.
I hope this is the version of Mono/Monodevelop that will allow me to create ASP.NET apps. So far, on every previous version, the template that created an ASP.NET project always produced a Default.aspx page that refused to compile and run. I am a .NET deveoper in Windows, and I really want to move some of that skill into the Mono world. I really would think that the simple app that your wizard creates should at least compile and run. It may have been because I was using VB.NET. There seemed to be a conflict between the class being named Default, and Default being a reserved word under VB. I tried renaming the page (and references to it, of course) to something else, which allowed it to compile, but then it refused to run. I could never figure out how to get the embedded XSP server to run my “new” page. Anyhoo, this release may be the one! I’m going to try it this week-end if I can get it to work under Feisty. I had to go to an older version of Ubuntu due to Parallels not working for me with Gutsy (even the latest Parallels). Perhaps now that Parallels is going to be distributed with Ubuntu, I may be able to get Parallels working with a newer version of Ubuntu. Ideally, Hardy Heron would support Parallels out of the box and come with Monodevelop 1.0. Woohoo!
The default VB.NET templates for ASP.NET are fixed in the 1.0 release. The ASP.NET templates are auto-translated from C# using CodeDOM, and the VB.NET provider didn’t handle escaping of language keywords. Unfortunately it’s difficult to find time to give full attention to languages other than C#, which is why this went unnoticed for a while, but bug reports and patches are always appreciated
I can use either language (I would _HOPE_ most developers could), so I think I will stick to C# this time for safety’s sake!
@fretinator
I use VirtualBox on Gutsy and it runs perfectly. XP actually boots faster than when it was running on this hardware natively!
Edited 2008-03-14 22:42 UTC
I agree. I also have an XP image setup in VBox, and it runs great. The problem is I already have some extensive Parallels images (dev tools installed, etc) setup that I do not want to recreate. I actually have separate licensed copies of XP Pro for my VBox and Parallels images. One of these days I will be able to wean myself from Windows, but not yet. I also keep a real windows partition around (Vista Business) for running Half-life 1.
I also keep a real windows partition around (Vista Business) for running Half-life 1.
No offense, but if that’s all you’re keeping it around for, installing WINE and running halflife 1 (or 2) through it would be much more efficient
That’s what I do …
Edited 2008-03-15 10:28 UTC
I have Cedega, Crossover Office, and even a regular Wine install. The bottom line is Half-life 1 refuses to work for me under any of the three. It keeps crashing. I figure it probably has something to do with my ATI X1300 video card, because it always happens after I am actually in a game and running around. Sometimes I can last as long as 5 minutes before it happens. It’s a real bummer, cause it does seem like a pretty dumb reason to have to boot into Windows. I had it working on my laptop, but it was pretty jerky on a 64MB integrated card. My X1300 is a 256MB PCI-x card. I’ll make it some day!!
From all the development tools I’ve used in Linux monodevelop is the best, is easy to use and just works.
The only problem was the constants crashes, but I tried it long ago and maybe now is stable.
A nice benefit of this is a lot of the code written to interface controllers and machinery (today) is written in .NET. As an example, we bought a small laser welder that used a .NET program to control. It worked, but forced us into requiring a Windows PC to use. And, of course, we were saddled into installing the obligatory array of extraneous crap (ie. antivirus, windows updates) blah-blah-blah, because we were in the Windows World.
A linux box to control the workstation would have been ideal.
This is OT: Why would you need any of that stuff for a computer to control a machine? Just disconnect it from the network and run the minimal windows software needed to drive the machine.
I hope the designers of the device did not expect real-time behavior from the PC part of the device.
Yeah, we could’ve ran it stand-alone. But it was necessary to network it based on the needs of the engineers.
Yes, I’ve had a go at Mono for a lot of different reasons, sadly, not all of them to do with the technology, but Mono and MonoDevelop together, are indeed the best ways to develop any kind of Gnome application, and possibly any Linux desktop application besides QtDevelop and KDevelop.
While there are some question marks over the merits of compiling and running everything to run in a VM, the merits of the supposed language neutrality and monkeying around with Microsoft .Net compatibility, you only need to look at the features that are in there to see how useful this is:
At last, a sane way to create GTK GUIs in a structured way.
Ah. A way of creating a bunch of menus that is actually reasonably straightforward to do, update and maintain. Fancy that?
Goodness me, a way to import and use web services using a reliable library and infrastructure. Maybe Red Hat might be able to use it to make the online desktop a reality?
As long as Python and wxPython are around, why would anyone want to code in Mono? I seriously don’t get it. My comments below just use Python as an example. This is not meant to be a pro-Python flame bait.
Aside from ASP.net where needed, I just don’t see where Mono does anything that Python/wxPython can’t. With all the FUD concerning patents, what’s the point? Where I work, I am able to create full GUI apps (with native widgets) with absolutely no run-time requirements whatsoever. The entire app with everything it needs to run is in a single folder (my executable, and 6 dll’s totaling 5 megabytes). I get the benefit of managed code, the maturity of the wxWidgets codebase, a totally rich GUI with native look and feel. You can create true win32 NT services, call any native dll (including win api) , or any other “windowzy” thing. Plus, there is no need to download MASSIVE VM’s like Java, .NET, etc…
(For those unfamiliar with Python: You *DON’T* need Python installed on client machines to run apps written in Python. Your code can be deployed as .EXE’s on Win32 boxes without poking anything off into Windows directories or anywhere else.)
Edited 2008-03-17 03:40 UTC
Sure, and there’s nothing that Python can do that C can’t do. And there’s nothing that C can do that Assembly can’t do. Different people like different languages, and most people don’t want to learn new languages, they want to use the one they already know and are productive in. (Remember most people != people who read OSAlert and learn new languages for fun.)
Just because you can embed the Python runtime into your .exe, doesn’t mean you don’t have a runtime. Mono can do this as well, see mkbundle.
So if you know Python and are happy with it, Mono probably isn’t for you. It’s for the millions of C#/VB.Net programmers out there who want to use their existing skills to write applications that run on Linux.
Aside from ASP.net where needed, I just don’t see where Mono does anything that Python/wxPython can’t.
For Python in particular? Speed:
http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lan…
Mono also permits a large cross-language, cross-platform class library that has one “major company” backing it, and is backed by an ECMA standard (which had several other large companies such as IBM and Intel providing feedback). The use of static typing also simplifies the creation of IDEs (compared to Python/Ruby, where you effectively need to embed an interpreter to do code completion as the variable types could change at any time, and could still be wrong anyway depending on the order of invocation of other methods at runtime…).
(Dynamic typing has its advantages, to be sure, but IDE support is not one of them.)
With all the FUD concerning patents, what’s the point?
Which shows that you’ve bought into the FUD without understanding the basis.
Software patents cover everything. Do you seriously believe that Microsoft would have a patent that covers C# specifically and not Perl/Python/Ruby/etc.? With the USA patent system (which encourages wide-as-possible patents)? (And if you do believe this, what are you high on?)
Any non-trivial program (and likely many trivial programs) will violate hundreds (if not thousands) of patents whenever they execute. That is how big the patent problem is. “Hiding” from it by saying “I’m using Python/GStreamer/Dirac/Ogg/insert-technology-here” is showing lack of knowledge of the highest order — you can’t know that it’s patent free until after you’ve had the patent lawsuit, by which time it’s too late. Even if you’re right and you didn’t violate anyone’s patents, that’s several years and millions of dollars later…
Remember, people are being sued as recently as last year for generating JPEG graphics!
In short, bringing up patents is FUD, as the patent problem applies equally to everyone distributing software in the USA. The only way to avoid it is to restrict yourself to software languages, practices, and problems from 20 years ago, and even that might not be enough (I wouldn’t be surprised if patents are granted for similar/nearly-identical pre-existing patents with only obvious/minor changes…).
You should also keep in mind that Microsoft isn’t the only player here. There are thousands of companies filing even more patents every year, and you likely have more to fear from some random never-heard-of-before third party company than Microsoft; just look at how often Microsoft/Apple/etc. are sued by random never-heard-of-before companies…
Where I work, I am able to create full GUI apps (with native widgets) with absolutely no run-time requirements whatsoever. The entire app with everything it needs to run is in a single folder (my executable, and 6 dll’s totaling 5 megabytes). I get the benefit of managed code, the maturity of the wxWidgets codebase, a totally rich GUI with native look and feel. You can create true win32 NT services, call any native dll (including win api) , or any other “windowzy” thing. Plus, there is no need to download MASSIVE VM’s like Java, .NET, etc…
Mono supports the same thing via mkbundle, though I believe the results are larger than 5MB. See also: http://www.mono-project.com/Linker