Mono Beta 2 Released
A little birdy writes "Less than a month after Beta 1 was released,
Mono Beta 2 has been released. See the Release Notes, or go directly to the download page. It includes a C# compiler, an implementation of the Common Language Infrastructure and two stacks of APIs: a Unix, Linux, GNOME, Mono stack for APIs that takes the most advantage of your Unix server and desktop and a set of APIs compatible with the Microsoft .NET Framework 1.1 that provides support for ASP.NET (web services and web forms), ADO.NET and many other components." And in a related story: darthcamaro writes "The drive to develop a FOSS implementation of Microsoft's .NET framework by DotGNU and Novell's Mono project is being painted as a contest between the Free and Open Source communities in an article on internetnews.com. The article details the running argument between DotGNU's Norbert Bollow and Mono's Miguel de Icaza on the issues of commercial involvement, software patents and all the 'religious' stuff that the Free software community holds against the open source community."
Is this the same as Stereo Alpha 1?
Does anyone know of any significant applications developed using the Mono Linux API stack yet?
Also will the applications I write with this stack work on Windows?
----
Do we like this project, or hate it?
The mono C# compiler is a work of engineering genius.
It uses a program called TreeCC which goes beyond the Lex+Yacc model and provides an aspect-oriented tree programming model. This makes it very easy to write visitor patterns on your tree, and you can do syntax and semantic analysis with ease.
The resulting source code for a full working C# compiler is minute. TreeCC expands it into the real code.
Check it out!
It will be interesting to see what the performance comparisons of MSNET/MonoNET and MonoNet/LinJava. I would also like to see the CLI for Java project gain steam to take over some MS mkt share on the Winserver side (and allow seamless upgrades to Lin/Unix for those). Since C-pound is much like a C++/Java mutant it is not hard to transfer to the language.
I'm quite interested in seeing the first tools to take advantage of System.DirectoryServices, as this should enable us to manage a windows Active Directory natively from Linux.
I agree with Bollow's reasoning and reality, but I fear that his sentiments may fall far short of his dream. He'll have to cope with
With that said, I think it's a very good idea to try to slowly nudge Microsoft developers over to other platforms, particularly if we come out with more advanced and/or convenient features than Microsoft's own standards. Nevertheless, time will tell whether this project pans out or not.
Does anyone know if M$ has gotten or is getting a patent for the way .NET works. If Mono is to close to something like that they could try and squash the whole project.
Evolution or ID?
The only information that is needed for the success of mono is the following: are the relevant ECMA standards 334 and 335 and just RAND, or are they really RAND and royalty free as miguel and others have claimed?
.NET is really very nice and productive. Microsoft will finally have made a valuable and lasting contribution to computer science.
If it is really RAND and royalty free, it will become my favorite development platform. Working with
If not, it is just another poisoned fruit by microsoft.
--
Private property is the central institution of a free society (David Friedman)
Here's what is actually happening. When companies are deciding on .Net or other technologies, these projects are held up as examples of how choosing .Net will not lock you into Windows. Then they go ahead with buying the Windows servers and developing the half working .Net app.
He may think he's giving companies choice to move to Linux. But what he is really doing is providing justification for choosing Windows.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
We do support two stacks of APIs today in Mono: the Microsoft compatible stack (ASP.NET, ADO.NET and Windows.Forms) but we have been investing heavily in taking advantage of our own set of libraries that Linux, Unix, Gnome, X, Mozilla, CORBA specific.
For instance, Microsoft uses XmlSchema, Mono supports it, but distributed RelaxNG support as well.
We are working on Windows.Forms, but we also have strong bindings for Gtk# to build native applications. In fact MonoDevelop (www.monodevelop.org) is fully written using this stack.
We support the Microsoft database APIs, but we ship providers for all the open source (Postgress, MySQL, Sqlite) providers and other third party databases (DB2, Sybase, Oracle).
Tao is a backend agnostic set of 3D graphic APIs (OpenGL, Cg, SDL) while we still plan on supporting the Direct3D managed APIs.
Our set of APIs is what has allowed us to build things like MonoDevelop: a fairly complete IDE for Mono for developing Linux-based applications.
I was under impression that mono has switched to a modern generational garbage collector, the Intel ORP GC. But the current beta uses the conservative boehm garbage collector.
A conservative GC is nice for a quick hack, but it really does not cut it for a modern VM.
So which one will it use in mono 1.0? Boehm or ORP? And if it is the boehm collector, what plans are there to switch to a modern GC?
By the way: the conservative garbage collector is the only real technical flaw of mono. Other than that it is quite a modern VM. Quite amazing for this short development time...
--
Private property is the central institution of a free society (David Friedman)
This seems like a legitimate set of concerns, but I think the ability of Microsoft to change the game at this point is severely limited.
The reason why Microsoft can't radically alter .NET is because of the existance of legacy apps. The company I work for has thousands of man-hours and hundreds of thousands of dollars into our ASP.NET applications. Microsoft can't break these applications. The .NET API has to remain consistant or they'll lose that legacy application support and lose customers. The fastest way to piss off an IT department is to make a change that breaks their apps. Believe me, I know...
So, if Mono can get the .NET 1.1 standards done, they can support all those legacy apps with few changes. Even if/when Microsoft introduces some spiffy new libraries with .NET 2.0, businesses can still say "it's cheaper for us to get off the forced upgrade wagon and move to Mono as a platform for .NET and we can keep our legacy applications." Unless .NET 2.0 comes up with some massively useful new system, there isn't that strong a reason to upgrade.
Granted, Microsoft can still pull out a patent and try to shut Mono down, which remains a threat, but I don't see them as doing that. All Mono has to do is use that as a talking point - don't develop for .NET because of patent issues. This hurts Microsoft by slowing the adoption of .NET. The worst that happens is that Mono has to fall back on its own libraries, and given that things like Gtk# are useful on their own they still have something to show for their work.
The more I think about it, the more I think Mono is in a strong position. I'd be more worried about Microsoft unleashing a patent infringement case than I would about them changing the APIs to shut out Mono. If they did that, they'd be shooting themselves in the foot.
It's as if Linux were able to run all Win95 applications just as Windows 2000 was coming around. Yes, Windows 2000 was infinitely better than 95, but if you're a PHB and you have a choice of moving your legacy apps to an expensive proprietary system or a free open one, you're going to be more inclined to do the latter as it makes your bottom line better. Legacy app support is absolutely crucial and right now Mono can do something that not even Linux can do - support Microsoft-based legacy apps with a minimum of changes. That gives Mono a big advantage in the marketplace, and while it helps Microsoft move developers to .NET it also helps make Linux a more attractive platform for enterprise development, especially on the backend.
... let's see those windows.forms! By the release notes it sounds like progress is being made but they said what's shipping with 1.0 will be pre-alpha.
LilMikey.com... I'll stop doing it when you sto
Ive seen MonoDevelop and SharpDevelop and am not impressed with either. The day Novell is able to churn out an IDE like VS.NET for MONO is when Mono will be really able to make waves.
Read this
I would love to see an example of what this has enabled that can't be done with Microsoft's tools, even if it's just doing it for cheaper.
.5% market share.
.NET platform. The two things are pretty much completely independent. One, or the other, or both may catch on.
You can deploy your ASP.NET applications, developed with Microsoft tools, on cheap Linux server farms.
Look at the DOC format and how even slight inconsistencies can prevent other technologies from getting past
Problems with DOC compatibility are a network problem: you aren't there when the recipient's attempt to open your DOC file fails. However, even if Mono.NET isn't 100% compatible, since all the development is happening in house, you can fix it pretty easily.
If this just enhances the Linux platform or turns into a platform itself, it may have a chance.
Mono is that, too. In fact, Mono is two things: an entire environment for writing Gnome and Linux applications in C#, and an implementation of Microsoft's
Gnome desparately needs a better programming platform than C/C++, and Mono provides it.
However, once it becomes a platform, if you think MS won't try to demolish it the way it has done to every other platform, you are mistaken, especially since the project has shown no leadership and is essentially a clone of what MS is doing
Currently, Linux apps written in C/C++ are competing with Microsoft apps in C/C++, and Microsoft does whatever they do to compete. With Mono, Linux apps written in C# are competing with Microsoft apps written in C#, and Microsoft will still do whatever they do to compete, so nothing much changes.
One thing is for certain, howver: Linux apps written in C# are much more competitive with Microsoft apps written in C# than Linux apps written in C/C++. Developing apps in C/C++ is just way too much of a drag on any group of developers. Microsoft saw the light and moved on to something better, and it is high time that Linux developers do the same thing.
But... it this something that is a serious effort, or is it just an "If Microsoft can do it, Open Source can do it better" thing? Is there really a need / purpose / use for this other then to "one-up" the hated M$?
"Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
MONO is a very exciting concept. Having some degree of compatibility with Microsoft but with the current SCO-like strategies of litigating competition out of the picture and with the general feeling that Microsoft will use patents as a way of stifling it's biggest threat why should I feel good about the project?
Maybe someone can help me out here? What is going to prevent Microsoft from playing the patent card when it suits them?
The race isn't always to the swift... but that's the way to bet!
Not in the case of MonoDevelop.
MonoDevelop is focused on being a great Unix
IDE which means integrating with the base OS as
much as possible: use the underlying widgetry,
use the Unix conventions (create makefiles,
configure scripts).
It is a fork of an IDE from the Windows world,
SharpDevelop: a fairly good tool, that integrates
into Windows, and we did not want to run only
a Linux version of a Windows tool.
We wanted a Linux tool for Linux.
Miguel, have you guys been significantly more efficient developing MonoDevelop in C# using the Mono class libraries than you were writing Evolution in C? In other words, is all the work that has gone into Mono worth it in terms of application development?
You are correct.
.NET 1.1 100% compatible with the .NET 1.1 service pack 1.
If we want to be 100% pure we will never be fully
compatible. But neither is
Are we damn close? You bet. Are we exactly
the same? No.
Miguel.
I am the parent poster. Thanks for the information. I guess I'm saying I would drop the support for the Microsoft stuff.
Microsoft is in many ways successful. If you take away the predatory aspect of their business practices which I personally think are totally reprehensible and inexcusable, you will see an attitude that is some combination of "not invented here" plus "it doesn't matter until we do it". The good thing about that, is that it represents leadership in some way. They basically stay focused on the cool stuff they can do, and won't cater to other technologies that don't represent the greatest level of advancement of their own agenda.
Again, I think this can be taken too far, and they do, but why anyone would try to make life easier for Microsoft, I don't know. Maybe it's out of pity for the people that are stuck developing for their platform when even those people would really love to see a superior, open, stable, and powerful alternative. If those people wouldn't want that, then they have no vision and you are obligated to lead and not follow in that instance.
The problem is, the way to accomplish the creation of such an open platform is to focus on creating it significantly more than interoperating for the sake of pragmatism. Every single instance of that pragmatic attitude ensures that Microsoft will continue to have it's way and prevent true competition and the flourishing of tremendous creativity in the IT community.
Some people think they have to interoperate with Microsoft and continue to push the whole standards thing while Microsoft bastardizes every one of them they get their hands on just to take the higher road and set an example. Why don't you just lie down and make yourself a doormat at the gates of 1 Microsoft Way.
What I am proposing is to innovate and screw the standards the way Microsoft does, but not do it on purpose like Microsoft does. There is a lot of truth to the tension between innovation and standards. Then, once the innovation has occurred on the Linux platform first, let someone else work to create the standard with Linux as the defacto reference implementation.
So, if Mono wants to succeed, develop as many hooks and tie ins to the Linux stack as possible and refuse to support as many hooks into the MS stack as possible, not out of some anti-MS principle, but knowing that each effort to provide such a hook would be better spent developing another hook on Linux. That is how you establish leadership that other people, MS included, will be wise to follow.
That said, if this happens MS will likely flex its muscle against it. If you thought SCO was bad, wait until this happens with MS, regardless of the merits and whether a single MS product manager wrote something on a website. I wish it weren't so and the geek in me loves the idea of seeing some advanced tools on Linux that aren't available anywhere else for some time to come. That exclusivity and and first-run advantage is what has put and kept MS in the position it's in. Still, it would be great if such a thing occurred from the ground up in that manner. I understand true creativity is often a matter of discovery in addition to invention (such as with HTML) and it can't always happen that way, but it would just be so much greater if that creativity were coming from a group other than MS, if you value that creativity to such a level as you have demonstrated.
I am biased, but I would say yes, we are more
efficient.
That being said, I recommend you ask the question
to third parties that are using Mono/Gtk#: gfax,
beagle/dashboard, MonoDevelop
That was the big showstopper and why my last project used java. Has it changed?
Although those benchmarks were done against
our first JIT. We redid our JIT to address that
(and many other issues), so the data is relatively
old (one year+)
So if I am to start developing a new desktop GUI application, what should I use to make it cross platform? And don't say "java" or "wxwindows".
It cannot be C#, Windows Forms combination because Mono does not have real support for Windows Forms yet.
Would I be able to package GTK# in some kind of installable form for distribution on Windows so I can do C#, GTK# on Mono? Is this the right way to think about this?
Can I use Visual Studio to develop Mono, GTK# applications?
Although the official reason that GnomeBasic was dropped was because of "stagnation", the real reason that it died was because Mono was supposed to take it's place.
If that happened, I've seen no evidence of it.
While you can write Mono code in Java, PHP, Logo, Oberon, Pascal, Forth and Lisp, VB is still unavailable.
It's a pity such a popular language appears to be entirely ignored.
I'm sure it is heresy to ask, but am I the only one who's confused by the Mono and DotGNU difference? I read the internetnews article, and the controversy is still pretty opaque. I don't use .NET, and don't have any imminent plans to do so, but if I did, why should I prefer one implementation over the other? Is it purely a religious issue?
To paraphrase Life of Brian: The only people we hate more than Microsoft are the f*ing Mono developers. Or the f*ing DotGNU developers. Take your pick.
Splitters!
I don't know
which is worse,
reading or
writing comments
for slashdot on
my cell phone.
Keep up the great
work Miguel.
Its the simple case of Meritocracy dude! The one who contributes the most does have the most say and does end up pulling the strings. Whats wrong with that? Sun is pulling the strings on OpenOffice. And its 16 programmers only recently, since a few months back. Until then it was just some 3-4 developers, someone correct me if I'm wrong.
I've written free, open, and closed software; I've accepted money from companies big and small, and I've also been paid to work on non-commercial free projects. I try, very hard, to be an agnostic when it comes to conflicts of religion -- such as the debate of Windows vs. Linux, or KDE vs. Gnome, of C# vs. Java. Tools are tools, and it is how they are used that matters.
And given that case, I do not like how Gnome is being used. Money drives everything, so Novell's involvement only bothers me when I consider their past history of screwing up good things like WordPerfect.
Foremost among my concerns is how Mono can be used as a wedge by Microsoft; if they can not "beat" free software with legal trickery (e.g., SCO), they can slip behind the lines via involvement in Linux via proxies. Microsoft has proven itself untrustworthy, in my personal dealings with them as well as their highly-publicized run-ins with anti-trust law.
I'm not against .NET or C#; I've written some C# code, just as I've written Java and C++ and Python and Fortran and COBOL over the years. I dislike proprietary standards (like .NET and Java) because they trap people, limiting choices and input form the community at large. Give me the chaos of C and C++ over the corporate machinations of C# and Java; I will accept a bit of chaos if my tools can evolve based on conceptual and community diversity.
All about me
Do not presume that MS's past use of patents for defensive purposes only means there is a low probability of threat to the Mono project...
MS has hired an IP manager who not only believes in but has spearheaded IP rampages.
"Marshall Phelps has long been a vocal advocate of the need for companies to take IP licensing seriously."
"...he inspired at his previous company, IBM, which is now reaping almost $2 billion a year from licensing its patents."
"At IBM we did a lot of it. We had lots of lawyers doing preparation and prosecution around the world. At Microsoft, we don't have anyone doing that, but we are going to start."
"According to Phelps, managers too often fall into the trap of seeing patents as a purely defensive measure, a tool with which to stop the competition in their tracks.
Phelps says he is pleasantly surprised by just how understanding Microsoft's executives have been. "On these IP issues I don't have much of a problem getting anyone's attention at Microsoft. It starts at the top, and if you've got a guy like Bill Gates who's really concerned about IP and really likes it then you don't have much of a management problem."
Make no mistake about it, Microsoft has learned to do business by using its capital to get what it wants. Microsoft cannot buy out FOSS but they sure as hell can litigate FOSS directly or indirectly to "stop the competition in their tracks."
As most everyone here knows, FOSS has been on the Microsoft radar for several years now and they have been very active and very unsuccessful in halting the progress of FOSS.
This is the last ditch effort on Microsoft's part to stop what is becoming an unstoppable force. It will not matter if the FOSS community produces a better and more technologically advanced product because Microsoft will not be competing based on the merit of their products.
Whether or not the patents that are filed are frivilous and ridiculous, they will be used offensively to diminish the threat of FOSS to the Microsoft revenue stream.
Be prepared, there is more of the SCO syndrome to come.
burnin
Firstly, if you want to test Java for speed, use IBM's VM - it can be very much faster than Sun's.
Secondly, I just don't believe these results. Given equivalent code Java is usually quoted as being within 10%-20% of C++ speed (and IBM's VM is faster). I am highly suspicious that exactly equivalent code was not used. Was an Integer class implemented in C++?
Also, what about memory use? by default, the 1.4 VM allocates 64MB max heap. The test is allocating a million objects. I don't know how Integer is implemented, but if it involves even a few tens of bytes, there is going to be a lot of garbage collecting going on.
The article details the running argument between DotGNU's Norbert Bollow and Mono's Miguel de Icaza on the issues of commercial involvement, software patents and all the 'religious' stuff that the Free software community holds against the open source community.
You know, it's funny, but all things considered i've noticed more ire coming from open source people towards free software people than the other way around. I've heard at least seventeen thousand rants on slashdot regarding the 'utter flaming stupidity' or 'rotten worthlessness' of RMS, but very few free software 'zealots' as they're so often called blasting the open source community for their beliefs, or lack therof. I've never heard anyone on slashdot call Linus a wanker.
why is that?
i'll tell you why, it's actually very simple. open source advocates are hobbyists at heart. It's true. even if your job, career, whatever focuses on OSS, you're almost inevetably doing it because you enjoy playing with computers. And i mean that in the most positive way; i enjoy playing with computers, i think they're very fun and interesting things. But the software... doesn't really matter as long as you can play with it and do something interesting -- usually meaning that you can see the code. but either way, you're good, as long as there's something interesting to mess around with.
Free Software 'zealots', on the other hand, are not hobbyists, they are activists. They want to change things for the better. They are very serious, and operate on principle, not interest. That is why they don't flame the slashdot trolls, because the real FS guys -- they're to busy trying to enact permenant change for the better.
So, the next time anyone (you) talks about, 'oh, the free software people are such a bunch of zealots, i wish they would just calm down'... i hope they think about that ire and from whence it really comes. And then i hope they tell me, because i don't know -- i wish i did. What i do know, is that you're mad, but it's not me you should be mad at.
~dijjnn
Funny, I've never seen Java perform anywhere close to the speed of C and C++ and that benchmark is quite believable.
This would definitely have been the case 4 or 5 years ago, before hotspot compiling. Java was then typically 10%-20% of the speed of compiled C++, but there is good reason why Java should be pretty much the same speed as C++: All good Java VMs now produce not just native code at runtime, but highly optimised native code resulting from profiling analysis. Java 1.5 even caches the native code to disk, so you are running a pre-compiled binary the next time you start an application - there is no interpretation phase.
I use Java for numerical work and have found that some math routines run up to 10% faster (on the IBM VM) than the same code compiled with optimisation using GCC.
Mono mmap()s the files it loads, so that shows up
on the VSIZE; The RSS is mostly Gtk/Gdk/Pango/X
libraries and libc.
Anyone who wants to compare the performances now instead of looking at the older graphs, can download the C# Scimark or the cli-grande (C# version of the Java Grande Section 1) benchmark and see for themselves. I know what the differences are in performance between the 0.23 version used in the original posting and the current Beta, but it is probably better if people try for themselves.
You don't have to look to hard to find FS rantings. Just look at the FSF's pompous, obtuse description of the difference between FS and OS or RMS's silly rant on why Linux must be called GNU/Linux. I don't recall anywhere in the GPL where it says that RMS reserves the right to approve of the name of your product. RMS is called a kook because he is one.
Perhaps the thousands of rants targeted at RMS are simply reasonable observations or your perception of imbalance reflects your own biases on the issues. One thing's for certain, your characterization of FS contributors as "serious" as opposed to OS "hobbiests" is absurd. I wouldn't characterize BSD contributors as any less serious than GNU people. I would say, though, that they feel their OS license should not be burdened with a political agenda. Quite the contrary, I think many that most support the concept of the GPL are ones who don't contribute at all but like the idea of a license that burdens future software with RMS's personal idealisms.
You know how Gnome, KDE, and wxWindows each have their own object system hacks on top of C/C++? And how they are all different and incompatible with each other? Well, C# has a built-in standard for that functionality: a standard object system and a standard way of querying objects about what they are and what they can do. So, reflection is one important capability.
Another one is runtime safety. When you load a shared library into a C or C++ program and call one of its functions, anything can happen: it can corrupt arbitrary data structures in your program and you may not even know it. When you load code dynamically into C#, no matter how buggy it is, it cannot corrupt data that has not been passed to it (unsafe C# code behaves like C/C++, but dynamically loadable code should not be unsafe, and you can enforce that). So, concretely, when you load a plug-in into Gimp# or Apache# and the plugin crashes, you don't have to shut down the application. Runtime safety also prevents buffer overflows and other common security holes.
Yet another is sandboxing. Sandboxing means that you can restrict the operations of sections of code. That means that you can safely run untrusted code, not just potentially buggy code. As an ISP, for example, you can let your customers load modules into Apache# without having to worry about the module from one customer doing something to the module of another customer.
You already mentioned garbage collection.
Those are some of the major benefits of C# (and Java) over C/C++. And they make a big difference. Lack of runtime safety is responsible for most of the application crashes we experience; with runtime safety, applications still have unexpected bugs, but they can usually recover from them. Lack of sandboxing means that people come up with all sort of complex extension methods (e.g., CGI scripts) instead of having a simple, clean interface. Lack of reflection and standard object systems is one of the reasons that makes libraries so wildly incompatible. And, finally, lack of garbage collection is responsible for a huge amount of extra work during library development and for a lot of bugs in C/C++.
You are not fully understanding the issue. If something were only Windows, they would not go for it. They do want some portability. Mono gives the illusion of such portability, thus they move forward with projects which in the end are really stuck on Windows because of libraries and tools and experience.
Then of course it only half works (have you seen what most ASP.net projects end up looking like?), but all of the people of any skill have moved on by the time anyone knows that and it's left for some poor fool to keep it all working and adding what changes they can, until they get fed up and quit or convince someone else to take on the old man.
I have made it my mission to never to be that fool, and have made quite a success of it so far. But I still feel great pity that the whole cycle ahd to happen and lead to this horrible result which easts people up. It doesn't have to be that way.
"There is more worth loving than we have strength to love." - Brian Jay Stanley