Linked by Thom Holwerda on Sun 11th Jan 2009 10:54 UTC, submitted by Hiev
Mono Project Arstechnica reports that Mono, an open source implementation of .NET runtime, is bringing Microsoft's development technologies to some unexpected places, including the iPhone, Android, and the Wii.
Thread beginning with comment 343138
To read all comments associated with this story, please click here.
wow, i mean just wow....
by karl on Mon 12th Jan 2009 14:09 UTC
karl
Member since:
2005-07-06

I come to this thread expecting a little bit of discussion about Mono being used for cross-platform app development and the obligatory anti-mono trolls who inevitably show up in such threads. Instead I am treated to a half-dozen individuals who are obviously somewhat knowledgable about .Net coding and Mono's implementation of .Net bashing each other left and right arguing about things which only .Net developers even have a clue about.

If it were not for the vitriol I might even think some of what was being said was informative. But alas whatever informative value was burried by deliberate misunderstanding, name calling, and continuous bashing.

I must admit however that this thread went far beyond the normal anti-mono trolling which is par course for such threads. Perhaps the trolls are getting more sophisticated.

Now to try to add something constructive:

Getting upset about .exe and .dlls's, being windows-specific things brought into Linux(and other platforms)-seems on the surface to be really, really silly. The comments about the registry seem to indicate that all platforms supported by mono are "invaded" by the Evil(TM) MS-Windows registry. How preposterous.

The fact is that one of the first and foremost goals of Mono-as stated by Miguel- was to make it easier for windows .Net apps to be ported to other platforms and to offer an attractive alternative to .Net to get .Net devs who hitherto have only written for Windows to write their apps so that via Mono they can become cross-platform. To this end Mono by neccessity must have some number of kludges (taken from Windows) to ease this process-which means taking into account that some .Net devs indeed did use the registry.

This stuff is there for those devs who used that functionality-not because it is necessary, not because Miguel wants to faithfully replicate each and every MS tech in Mono-but because if a .Net dev did use the registry in their app they would not be faced with something completely insurmountable when first attempting to port it to mono. Seems quite reasonable to me. Miguel wants Mono to be an attractive alternative to .Net, Mono has been written with this mind since day one. Some devs will complain that not Mono is not absolutely identitical to .Net. Others will complain that Mono is way too much like .Net (including evil conspiracies of MS to overtake free software). Give me a break- no matter what Mono does some devs are going to be upset-given that the devs encompasses a large population of people comming from remarkably different backgrounds with different goals and different values. Surprise, Surprise.

Adkilla if I understand you correctly you are lamenting at once a) the fact that Mono has implemented a bunch of MS only kludges which have no bearing in a cross platform world and b) the fact that mono has not completely implemented each and every specific .Net tech. To be honest with ou I have no idea how Mono could not be guilty of a) if they do a good job at b). Seems to me like it is a no-win situation for Mono from your perspective. (If I misunderstood you please correct me)

Now how could Mono address your concerns ? If Mono were to become significantly attractive enough to .Net devs in the Windows world(the only place where .Net as such works) that devs were inclined to start coding in Mono and not for MS-exclusive .Net then Mono would have to start addressing a range of issues and could set themselves as the standard-ie. they could develop their own tech for each and every platform they support and apps would be written from the beginning to be cross-platform and only if the app dev only wanted their app to run on one platform (ie. windows) would they then convert their Mono app to the specific MS-exclusive tech in question (ie.registry).


If this were to come to pass then Mono would not contain a bunch of kludges for compatibility with apps written exclusively for Windows. Yet Mono is probably still a long way from attaining this goal-so far away that it is probably completely ridiculous to judge Mono according to it. On Windows Mono is really only an alternative to .Net for those devs and those projects where cross-platform compatibilty is an value-add to said projects. Mono is not a superior .Net implementation for apps written exclusively for windows. There may be some specific point where Mono is superior to .Net on windows, but .Net on windows encompasses much more than Mono. Yet the moment one considers other platforms Mono is the only answer because .Net only exists for windows. This is where Mono encompasses far much more than .Net. Last i remember .Net did not offer me a Gtk# implementation, or a cocoa#, did not offer me POSIX integration etc.

If I was a windows dev who wrote .Net apps exclusively for windows I would find Mono quite deficient-I would lament that this that and the other thing were not completely implemented in Mono and that I had to do a bunch of extra stuff, some quite tedious, to get my app up and running. But then again I would not be the primary target of Mono- it was not written for me. If I were a dev who was tasked to write an app leveraging .Net code for multiple different platforms I would probably be praising Mono from the left and the right and extolling its features -because without Mono it would be impossible to leverage my .Net code in a cross-platform app.

As is the case now-more and more apps are being written for Mono to take .Net cross-platform-for the ever growing number of devs who are writting such apps the superiority of .Net (ie. it's specifc tech which is not present or only partially implemented in Mono) is starting to fade in constrast to the advantages which Mono offers. In time there will be devs who look at .Net and see it as something quite deficient because it is not cross-platform, because it does not tie into other OS'S/toolkits etc. The number of devs who look at things this way now is probably quite small in contrast to the untold legions of .Net programmers programming away in utter oblivion to the existence of anything other than MS. But there are more and more of them each day-and Mono is bootstrapping a small industry -more and more companies leveraging Mono to carve out markets which hitherto simply did not exist.

This article started off by pointing out all of the apps written in Mono which run on the iphone. All I can say is wow-when Miguel started Mono Apple had just released OS X 1.0 and intel-macs were not even being specuated on and noone ever even imagined Apple producing phones. Now these phones from Apple run Mono apps using tech originally written exclusively for windows which have successfully been made cross-platform by Mono. I find that insanely cool. I wonder how many of those who originally created .Net ever thought that their tech would find it's way (via Mono) on Apples then non-existant iphones. Hats off to the Mono guys.

Reply Score: 5

RE: wow, i mean just wow....
by adkilla on Mon 12th Jan 2009 15:25 in reply to "wow, i mean just wow...."
adkilla Member since:
2005-07-07

Getting upset about .exe and .dlls's, being windows-specific things brought into Linux(and other platforms)-seems on the surface to be really, really silly.

You might want to read my post here before jumping to that conclusion:
http://osnews.com/thread?343134

Adkilla if I understand you correctly you are lamenting at once a) the fact that Mono has implemented a bunch of MS only kludges which have no bearing in a cross platform world and b) the fact that mono has not completely implemented each and every specific .Net tech. To be honest with ou I have no idea how Mono could not be guilty of a) if they do a good job at b). Seems to me like it is a no-win situation for Mono from your perspective. (If I misunderstood you please correct me)

Mono was never a complete implementation of .Net and will never be. They are constantly playing catch up with MS while trying to fit .Net cross platform.

Instead of cherry-picking .Net functionality that works well cross-platform and innovating the rest on their own, they have decided to be a incomplete copy-cat. I strongly believe that Miguel and his talented team are capable of innovating away from MS to provide a better alternative that works as well if not better. I also believe that Mono would be much more attractive if it were to promote itself as cross-platform CLR with a well designed framework, than a mere .Net copycat with a sub-par cross-platform design.

I will give an example where there were initiatives to make Mono more than .Net. The #WT initiative was a good example. But the insistence of Mono stay the course with System.Windows.Forms killed it. Failing to make S.W.F useable with native L&F on platforms other than Windows, they decided to take the Cocoa#/GTK# course instead. If they were to stick with #WT, it would have been a real cross-platform contender GUI wise. But no, they decided to take the half-baked approach instead. Till this day they do not have unified cross-platform GUI frameworks that Java enjoys.

From my involvement with many experienced .Net developers, I've learnt that they are aware of Mono but consider it an inferior copy that attempts to bring .Net to Linux. Some (like me) have expressed that they would switch to Mono in a heartbeat if Mono would steer their own course. Heck, we would even switch fully to Mono and dump .Net (even on Windows), if Mono would try be an elegant framework and runtime (that is compatible with MS CLR) that works cross-platform as its goal. Some of us took the attempt to share this with the Mono team over IRC to only be shot down. We could understand that Novell has now put themselves in a licensing situation with MS over .Net patents that would make it hard for them to back down. Also providing a much better framework than .Net that is also cross-platform could be implied as turning the tables against MS in its own game.

Thus we are stuck with the Mono it is today.
Now after hearing mine, what are your thoughts?

-Ad

Edited 2009-01-12 15:43 UTC

Reply Parent Score: 0

RE[2]: wow, i mean just wow....
by karl on Mon 12th Jan 2009 17:13 in reply to "RE: wow, i mean just wow...."
karl Member since:
2005-07-06

Adkilla,


I would be lying to you if I told you I was privy to the rational behind Monos choices regarding exe/dll and S.W.F. Over the years I have seen many bitterly complain about both and these two items have been often cited as reasons against Mono. But from my vantage point I think that harping on these decisions detracts from the concrete benefits that have been realized by the Mono project. In other words: one is left comparing what-if's with the reality at hand-and frankly I do not think the reality at hand is all that bad.

Although far from optimal from the total cross-platform perspective I whole heartedly appreciate the work that was done to create Gtk#/cocoa#. Right now I have at least a dozen applications installed on my machine which make use of Gtk#- good applications which I enjoy using and which provide me with tangible benefits. The availability of Gtk# means that some of the brightest devs who support Linux are using this toolset to create applications which I enjoy using.

To be honest is it really any surprise that Miguel chose to poor more effort into bringing Mono to the GNOME desktop than to focusing on SWF? After all who was it who started the GNOME project ? Right, it was Miguel. Surely you have heard the endless tirade against Miguel because of his having supposedly "sold out" to the Evil(TM) MS world. You cannot make everyone happy: You cannot be everyones friend. With each decision you make you will gain some friends and lose some-such is life.

In Miguels estimation Linux was lacking in a comprehensive framework for rapid application development-he saw Mono as a solution to this problem: bringing the ease of app development of .Net to the Linux GNOME desktop. And for some non-insignificant number of GNOME hackers he was right-they embraced this tech and started making desktop apps which many user enjoy using. Furthermore I believe Mono was instrumental in Vala being so aggresively pursued-a lot of hackers these days do not want to break their heads on code written in C.

Gtk# illustrated an alternative way to create modern Linux desktop apps and if anything spurred more and more devs to invest energy in trying to bring the advantages of the programming styles present in .Net to Linux-and I believe that Vala is but one example of this-not that there is a direct link between Mono and Vala but that both are outlets for programmers wishing to have easier and better tools for creating applications which easens the burden of writing and maintaing applications. There have been calls from all quarters for years for GNOME to adopt a higher level language for app development-the political controversy about licensing pitted Gtk# versus Java, Vala is emerging as a 3rd alternative which has none of this baggage.

That Miguel would have wanted to see the fruits of his labor in creating Mono be available and immediately usable for GNOME hackers is hardly surprising-this is the community he came from, and he and others worked hard at creating a really good implementation of .Net custom-tailored to the Linux GNOME desktop, despite being attacked from the left and right continuously.

To a lesser extent Mono then extended this focus to cocoa#. From what I understand there are now a number of Mac apps written in cocoa#. Both Gtk# and cocoa# are targetting current devs in these respective communities offering them tools which have proven quite valuable to them. When we talk about devs we are talking for the most part about devs who are already committed to one OS/platform-only some of those devs are working on projects which are designed for cross-platform functionality. Cross-platform functionality is frequently an add-on, ie. once the initial app is completed and runs on *a* platform devs wish to extend it to other platforms (ie. google chrome). The number of devs working on projects which from conception are designed to be multi-platform is dwarfed by those working on apps for one platform which are then extended to become cross-platform. Mono made a strategic decision in choosing to focus on Gtk# and cocoa#. The Mono team also is fully cognisant of the conundrum where at once people want multi-platform apps and at the same time constantly bitch and moan about the lack of platform-specific integration(ie. trully multi-platform apps tend to be "at home" nowhere).

From the vantage point of those who wish to see Mono as a purely multi-platform framework surely many are greatly disappointed in Mono. But Mono is an alternative implementation of .Net which at once is custom-tailored to both Linux (via Gtk#) and Mac (via cocoa#) and which on these platform provides very "native" applications(at least this is true for Linux and probably to a lesser extent for Mac-I don't have a Mac so I can't say much about the degree of Mono's success in making itself "native" on Mac) AND at the same time Mono is generic enough to make it cross-platform for a wide range of apps (server(Second Life) and client) on a trully impressive range of platforms (Wii, iphone, Android, Maemo etc.). You could fault them for trying to much, but not for not trying hard enough.

I suspect that the decision against SWF had a bunch of factors. I think Mainsoft and the agreements between Mainsoft and Mono probably played a role in this. It is also possible that there were more patent concerns in this area and that MS had told them not to pursue this. And Miguel and his team have been privy to the planning of .Net far beyond what most .Net devs are and may have seen SWF as being but a short-lived tech which Microsoft itself would be leaving behind( I am not a .Net coder and no remarkably little about all the ins and outs but wasn't Avalon supposed to superced SWF ?-could be totally wrong but IIRC Miguel even mentioned this 2-3 years ago). At any rate I sill question the extent to which Mono could have created a multi-platform GUI which would not have been subject to derision by those who lament platform-specific integration. Java is only now becomming viable in this regard -people have bitched and moaned about Java being alien everywhere for so long-Java was practically forked for SWT to address this issue. Toolkits like Wx have only succeeded in addressing this issue to the extent that they have been successful and from my POV that success has been marginal. Qt seems to have the best cross-platform support-but there are issues there as well (licensing, costs, c++).

As regards the exe/dll: I simply do not see this as being such a big issue. Firstly I suspect if Mono was ever to reach the point that people considered Mono before considering .Net (ie. Mono became the standard) that this could be changed-perhaps it should-but not when the number of Mono developers is dwarfed 100 to 1 by .Net developers. Secondly I have no clue as to what would be involved in creating a format which ran natively (ie. without ilrun and other mechanisms)-is such even doable? Now making Mono target ELF for Linux apps would make a lot of sense-but I suspect that lot of Mono development still takes place in MS Visual Studio-perhaps this plays a role in this decision-I really don't know-but you know I have never cringed seeing a dll file in my file system, and I have not gotten a rash due to seeing exe files. Mono apps are usually started with a bash script -big friggin deal-do you *really* care so much about whether Linux can make use of the RES chunk of the exe/dll file? I just don't get why this is a *deal-breaker*.

I guess my last question is this: you seem to be quite competent in .Net programming- what is preventing *you* from offering your skills to implement the things you so wish to see ? I am not currently an active programmer and I would need to invest an awful lot of time and energy to be able to even be able to code something more than hello-world in c#, but then again I am not lambasting Mono for it's shortcommings -au contraire I thank the Mono team and devs for their work.

Reply Parent Score: 1

RE[2]: wow, i mean just wow....
by lsls on Mon 12th Jan 2009 20:32 in reply to "RE: wow, i mean just wow...."
lsls Member since:
2006-11-13

Mono was never a complete implementation of .Net and will never be. They are constantly playing catch up with MS while trying to fit .Net cross platform.

Instead of cherry-picking .Net functionality that works well cross-platform and innovating the rest on their own, they have decided to be a incomplete copy-cat. I strongly believe that Miguel and his talented team are capable of innovating away from MS to provide a better alternative that works as well if not better. I also believe that Mono would be much more attractive if it were to promote itself as cross-platform CLR with a well designed framework, than a mere .Net copycat with a sub-par cross-platform design.


I think that Mono can be useful in many ways, and it is up to the community to make it evolve in different ways. I believe that the focus of the mono project has been adapted over time to the needs of the users.

See for example this interview to Miguel: http://news.netcraft.com/archives/2004/04/28/interview_with_miguel_...

In this interview Miguel says that Ximian was initially focused only on the core and, he says "what we wanted was to empower regular users to build applications for Linux".

also:

"the people who came and contributed software to the project were interested in Windows Forms, or ASP.Net or Web services or databases, which were part of the Microsoft stack"

I think that over the years, the Mono project has evolved from a focus on Linux development towards a focus on .NET portability, and that this shift has been due to user demand. This is understandable since there are thousands of developers and companies out there using .NET for developing their applications, and they see Mono as a fast path for migrating their applications to Linux. Beware that a big chunk of those applications are web applications, and in this area Mono can be a perfect replacement of MS's .NET.

Whatever is the focus, I think that what matters to Miguel is what better benefits Linux. Building a stack of libraries for easing Linux development is obviously good for Linux. Building a framework which eases the portability of applications from Windows to Linux is also good for Linux.

Yes, Mono is not a complete implementation of .NET and will always be playing catch up with MS. So, there will always be .NET applications which won't run on Mono. Is that a big issue? no, because there will still be many others which do run on Mono and Linux will be benefiting from it.


I will give an example where there were initiatives to make Mono more than .Net. The #WT initiative was a good example. But the insistence of Mono stay the course with System.Windows.Forms killed it.


You can't accuse Mono of killing WT#, that's not fair. It is true that the Mono team was focused on SWF and did not work on WT#, but that's probably because there was a lot of demand for SWF and very little for WT#.


Failing to make S.W.F useable with native L&F on platforms other than Windows, they decided to take the Cocoa#/GTK# course instead.


The development of GTK# started long before SWF or WT#.
See the ChangeLog (http://anonsvn.mono-project.com/viewvc/trunk/gtk-sharp/ChangeLog?re...). It started only a few months after Mono was announced.


If they were to stick with #WT, it would have been a real cross-platform contender GUI wise. But no, they decided to take the half-baked approach instead. Till this day they do not have unified cross-platform GUI frameworks that Java enjoys.


I understand that this is an interesting goal for you and other people, but I don't think this is a goal of the Mono team. Building a cross-platform GUI framework like Java would be a lot of work and would not benefit Linux as much as e.g. a complete ASP.NET implementation would.


From my involvement with many experienced .Net developers, I've learnt that they are aware of Mono but consider it an inferior copy that attempts to bring .Net to Linux. Some (like me) have expressed that they would switch to Mono in a heartbeat if Mono would steer their own course. Heck, we would even switch fully to Mono and dump .Net (even on Windows), if Mono would try be an elegant framework and runtime (that is compatible with MS CLR) that works cross-platform as its goal. Some of us took the attempt to share this with the Mono team over IRC to only be shot down.


I don't know how you could be shut down. Mono is free software, and anybody is free to build a new framework on top of it and pursue different goals. The Mono team can't avoid that.


We could understand that Novell has now put themselves in a licensing situation with MS over .Net patents that would make it hard for them to back down. Also providing a much better framework than .Net that is also cross-platform could be implied as turning the tables against MS in its own game.


I don't think that the relation of Novell with MS has much to do with the goals of the Mono project. As I said, I think it has more to do with user demand.

I understand that the current goal of Mono does not fit your needs, but you must understand that it does fit the needs of many other developers and companies. I don't think it is fair to bash Mono for having a different goal than yours, especially taking into account that you are free to take mono and built whatever framework you want on top of it.

Reply Parent Score: 1