Mono has never really been a Microsoft technology, only an open
sourced re-engineering of a Microsoft technology (dotNET).
AFAIK the only Mono code written by Microsoft that has ever existed is
the original C# compiler open sourced and publicly licensed by MS in
the opening days/introduction of dotNET.
In fact, this had been the major bone of contention, MS said it only
open sourced and publicly licensed those very few building blocks of
C# only and everything else related to building an application,
including the Frameworks with their app objects were supposed to be
proprietary, yet Mono went ahead and created its own imitation of
those things, delivering on about 97% of everything Microsoft claimed
Up until a few months ago.
Along with launching the new ASP.NET 5 which is completely open
sourced, publicly licensed and supposedly cross-platform (yes there is
a Github project for this, but current Linux implementation is very
rough), MS also changed course and embraced Mono as part of this new
"no more proprietary which only runs on Windows" course. So, now Mono
is officially endorsed by Microsoft for running dotNET, but
practically and technically nothing has changed, only the legal status
has been clarified. Today, everything that has ever run on Mono still
does so and everything that might have required "real" dotNET still
won't run on Mono and I don't know that there is going to be any
likely change for the forseeable future.
Bottom line is... If you compile to Mono, it'll run as well as it ever
has with no change, and generally speaking fairly well. If you compile
or write your code to dotNET, YMMV if you want cross-platform
about Mono adoption.
First, the technical aspects. Of course, anyone running a Mono app
will require the Mono runtime libraries. Mono libraries are widely
available and for the most part have existed long enough to be
reliable and performant. But, they're not always automatically
installed up front so it's a big additional download and larger
footprint. Generally speaking, I've never heard anyone experience a
cross-platform issue and shouldn't. IMO the concepts and Dev/Runtime
model makes a lot more sense and is much more performant than the Java
Dev/JRE model delivering similar objectives (Write once, run
everywhere. The diff is that Java is compile once while Mono/dotNET is
compile to specific targets). Tools to optimize dotNET/Mono are a lot
cheaper and do a better job than anything I've seen for Java unless
you're willing to spend <very> enormous amounts of money. Although
MonoDevelop is still evolving as a better Dev tool, I'd instead
recommend using any of the much more powerful and polished Visual
Studio tools (using Mono libraries if you wish) if you can, but of
course VS only runs on Windows.
The non-technical aspects. There is a strong prejudice about anything
that is even remotely related to Microsoft and often with good reason
(be too competitive and you'll either be eaten or chopped off at the
knees). Mono had Novell as its patron/sponsor for many years until the
Attachmate buyout, so for several years now Mono has had to try to
survive as a "for profit" technology. Everything about Mono became
"for pay." You couldn't build anything but very generic toys using
what was still publicly licensed, open source. If you wanted to build
something special, you'd almost certainly have to pay Mono at least
one type of license to get "the good/great stuff." I don't know if
anything has or will change with Mono's licenses because all I'm aware
of is that Microsoft has lent its stamp of approval, nothing else.
There have been some widely used Linux apps using Mono, probably the
most well known is Banshee which was the default multimedia/music
player for many distros some years ago.
Personally, during earlier "dark years" I used MonoDevelop to learn
Mono and contribute a few minor things to Monotorrent. Somewhere I
still have my code where I built a full private system to share files
using the torrent protocol securely. During those years I complained
constantly that MonoDevelop didn't have an integrated debugger or
compiler. Yeah, you write your code in MonoDevelop but you couldn't
really run a featured debugger and you always had to compile outside
the app. Really inconvenient and almost intolerable when compared to
even free versions of Visual Studio. And yes, when it became
intolerable I did write my mono code in Visual Studio.
So, depending if you are a glass half-full or glass half-empty person,
Mono is one of many formerly discouraged or proprietary technologies
related to Microsoft which are on the cusp of change, but whether it's
for a bigger, brighter future or a path to inconsequence is anyone's
guess but will likely be based on the value of its features because
today there are new competitors which can deliver performant apps
quickly in a very lightweight way while also being very scalable...
Stuff like nodejs, web based technologies and more.
Post by Tracy Reed Post by Leo Tindall
I've been working with C# in MonoDevelop, writing a bare-bones 4X game for
a few friends, and I began thinking about how useful it is to have a truly
cross-platform development framework. I haven't seen as much development
using it as I would expect.
Truly cross-platform development framework? You mean Java/Eclipse/etc?
Post by Leo Tindall
Are there major problems with it that I have
yet to encounter, or do people simply not like C#/VB?
Alternatively, is there a great wealth of Mono (or deliberately
cross-platform .NET) applications which I have yet to discover?
That's a Microsoft technology. It will never work as well anywhere other than
Windows. And Windows stinks.