Discussion:
Opinons on Mono as a cross-platform framework?
Leo Tindall
2015-07-31 21:21:43 UTC
Permalink
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. 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?

Thanks.

Leo
--
KPLUG-***@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
John H. Robinson, IV
2015-07-31 21:48:58 UTC
Permalink
A quick count on Debian 8.1 (Jessie) shows:

% apt-cache rdepends mono-runtime\* | grep -v \^..lib | grep \^\ \ |
sort | uniq | wc -l
79

I have no idea how many of them are interesting.
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. 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?
Thanks.
Leo
--
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
--
KPLUG-***@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
Tracy Reed
2015-08-01 00:20:52 UTC
Permalink
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.
--
Tracy Reed
Tony Su
2015-08-01 19:55:00 UTC
Permalink
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
was proprietary.

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
capability.

Now,
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.

IMO,
Tony
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.
--
Tracy Reed
--
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
--
KPLUG-***@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
Andrew Lentvorski
2015-08-02 03:54:59 UTC
Permalink
It may not be what you want to hear, but, right now, Java is sitting as
the king of cross-platform.

Especially if you are working on a game that doesn't require hideous
amounts of CPU, the Android compatibility is kind of a big deal.

-a
David Brown
2015-08-03 15:32:13 UTC
Permalink
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. 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?
Mono still lacks a lot in terms of performance, compared to something
like the JVM.

Although Microsoft has released a lot of their source code to .NET,
it's still largely just source code one could look at. It will take a
lot of work to incorporate the much-better JIT into Mono.

I'll be real curious to see where this goes. Mono still has way too
much of a Windows feel to it, mostly because all of the APIs are
developed by Microsoft.

I also haven't seen mentioned the IP concerns that many in the Linux
community have with .NET. I'm not certain what the reaction will be
to the new releases by Microsoft, but in the past, there has been a
concern that Microsoft has a lot of patents on parts of .NET, and that
has seriously hampered adoption with a lot of Linux distros and users.

David
--
KPLUG-***@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
Tony Su
2015-08-08 02:44:38 UTC
Permalink
Although Java has a JIT engine, I don't think it exists in dotNET.
At least in dotNET, I don't remember any concept of needing a JIT,
everything is supposed to run in a very predictable way.
From my personal experience and reading others' experiences, IMO
performance optimization is easy and cheap if you're using Visual
Studio (which includes some really great optimization tools like an
excellent profiler and ability to do TDD on the fly) which are not
easily done in the world of Java (optimization can cost a lot, tools
aren't necessarily integrated). So, for example you can't compare the
IDE experience running Eclipse or Net Beans to VS, the Java tools can
code but you'll have to find something else to do your optimization.

As for what you can do in Mono and how it performs vs MS "real" dotNET
(aka dotNET 4.x), performance is supposed to be pretty comparable and
that is because both compile to the Common Language Runtime(machine
bytecode). At that level, everything runs pretty much the same no
matter what coding language you used and what framework or libraries
were used.

The real bugaboo for most ASP.NET web developers is the extensive use
of ASP.NET forms which Mono has not been able to reverse-engineer and
practically every major ASP.NET website uses.
As I noted earlier, MS has no public plans to close this gap. My guess
is that MS is simply allowing use of Web Forms to die a long and
gradual death and in the meantime happy to let it generate revenue.
So no, there isn't going to be an immediate wholesale re-deployment of
ASP.NET websites from Windows to Linux.

Aside from that, the "only" languages Mono supports today (AFAIK) are
C# and VB (relatively new, but I've heard pretty good).
MS ASP.NET tools support something like a dozen various languages
including all the most common scripting languages (javascript, python,
more) and some esoteric languages (like COBOL and F#).
From what I've read, patents and other intellectual property should
not be a concern today. Before there was always the idea that MS could
one day all of a sudden yank the rug out from under Developers by
applying new restrictive conditions and change licensing. But all this
has been transferred out of Microsoft "proper" into a third party
(although heavily Microsoft influenced) foundation. Microsoft is no
longer supposed to directly own, manage and control these
technologies. Whether anything terrible can still happen would require
inspection is open for conjecture, but my guess is that becomes very
unlikely.

IMO,
Tony
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. 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?
Mono still lacks a lot in terms of performance, compared to something
like the JVM.
Although Microsoft has released a lot of their source code to .NET,
it's still largely just source code one could look at. It will take a
lot of work to incorporate the much-better JIT into Mono.
I'll be real curious to see where this goes. Mono still has way too
much of a Windows feel to it, mostly because all of the APIs are
developed by Microsoft.
I also haven't seen mentioned the IP concerns that many in the Linux
community have with .NET. I'm not certain what the reaction will be
to the new releases by Microsoft, but in the past, there has been a
concern that Microsoft has a lot of patents on parts of .NET, and that
has seriously hampered adoption with a lot of Linux distros and users.
David
--
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
--
KPLUG-***@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
Loading...