After three years and much controversy, Miguel de Icaza’s Mono project has finally released its 1.0 version. NewsForge recently talked with Erik Dasque, the senior project leader for Mono, about the release of 1.0, the controversy and criticisms encountered along the way, and the plans for the future.
My English isn’t really good, but shouldn’t that be lowdown?
Damn that’s too much like Microsoft …
Ok, here’s a test case for you –
.class public auto ansi ‘XYZ’ extends [‘mscorlib’]’System’.’Object’
{
.method assembly hidebysig instance native int ‘obj_address'() cil managed internalcall
{
} // method obj_address
}
assembly as a .dll , link your test against this – and Do a Marshal.WriteByte(27, 42); and Enjoy the crash
Or you could handcode a .dll with circular inheritance and watch Mono eat up RAM (ok RSS of 320 MB is WAAY too much).
Or call the constructor of some other class than the parent class in a .ctor and watch it choke
These are a few of the 300 test cases that failed during my review of Mono (totally we have about 1700 testcases partly from mauve ports and rest was totally original) . In short I’ve stopped believing 1.0 being stable …
Btw, try these on Parrot (people, please support Parrot and let the Pies fly)
> people, please support Parrot and let the Pies fly
I thought that was an april fools joke (ok, maybe Parrot itself was a n april’s fools joke initially).
http://weblogs.asp.net/astopford/archive/2003/07/21/10364.aspx
looks serious …. But I don’t see Miguel acting very friendly towards this bird.
“Parrot is based on Religion ?” http://www.edwardbear.org/blog/archives/000216.html
My English isn’t really good, but shouldn’t that be lowdown?
Although, `low-down’ would be correct, `down low’ has precisely the same meaning. `Down low’ is just more colloquial. (See http://www.dict.org/bin/Dict?Form=Dict2&Database=wn&Query=lowdown and http://rapdict.org/terms/d ).
I think releasing a version of Mono that looks stable now might persuade people to take notice of it.
A modern application language is vital for free software to stay competitive with proprietary. Having looked at Mono a lot recently, it does still seem very shaky. I just hope that it can improve quickly before it generates a bad impression.
Just think,
What it Miguel and his crew had devoted their time to creating a new development platform opposed to simply lingering into an extremely risky (legally) technology; something truely free from the shackles of Sun and Microsoft.
Answer me this:
1. What does Microsoft have to gain from supporting a programming environment that allows Windows programs to be easily ported to Linux? Remember: they bent over backwards to see Java didn’t achieve this in the nineties through illegal actions.
2. If Microsoft decides that it will license the technology standardised by the ECMA (which it has the right to do), wouldn’t that make that Mono NOT free-software? Wouldn’t that mean that every copy of Mono would have to be licensed by Microsoft under their terms?
3. What advantages does Microsoft have to see such a technology succeed? And, more importantly, what instruments does it have (and it has many) to put it to it’s OWN use -for their benefit.
I defy anyone to provide REAL answers to these questions, and not simple name calling…
Stephen
Just think,
What it Miguel and his crew had devoted their time to creating a new development platform opposed to simply lingering into an extremely risky (legally) technology; something truely free from the shackles of Sun and Microsoft.
Answer me this:
1. What does Microsoft have to gain from supporting a programming environment that allows Windows programs to be easily ported to Linux? Remember: they bent over backwards to see Java didn’t achieve this in the nineties through illegal actions.
2. If Microsoft decides that it will license the technology standardised by the ECMA (which it has the right to do), wouldn’t that make that Mono NOT free-software? Wouldn’t that mean that every copy of Mono would have to be licensed by Microsoft under their terms?
3. What advantages does Microsoft have to see such a technology succeed? And, more importantly, what instruments does it have (and it has many) to put it to it’s OWN use -for their benefit.
I defy anyone to provide REAL answers to these questions, and not simple name calling…
Stephen
“”Parrot is based on Religion ?” ” rel=”nofollow”>http://www.edwardbear.org/blog/archives/000216.html”
That’s a wrong quote. Miguel said “ideology”, not “religion”. See also http://primates.ximian.com/~miguel/archive/2003/Jul-22.html about WHY he says it’s based on ideology.
I wonder if they plan to support C++/CLI in the future.
> http://primates.ximian.com/~miguel/archive/2003/Jul-22.html
> about WHY he says it’s based on ideology.
What he says is that Mono takes some pains (and memory) to
convert an essentially stack IL to a register format (x86) ?.
Hmmm… that blog doesn’t go onto explain what parrot does.
or how mono is different from what the last 8 years of VM
development has been using.
mov %eax, %ecx
add %eax, %ebx
is what my take of the “Perfect code for the job” will be
I must apologize the the phenominally long answer…. It’s so long, it requires two posts to submit.
Part 1: Thoughts, commentary, and Before The Questions
Real answers and no name-calling? You might as well ask for an unbiased opinion. 🙂
(Frankly, I think a truly “unbiased opinion” is impossible, as everyone has some biases. These can be taken into consideration, but it’s likely impossible to avoid them wholesale, as they affect our thinking. Just consider the recent “Iraq has WMDs” argument, which the whole world thought was true, but really wasn’t, because they all took ambiguous evidence as meaning that they actually had WMDs. Group Think in action…)
What it Miguel and his crew had devoted their time to creating a new development platform opposed to simply lingering into an extremely risky (legally) technology; something truely free from the shackles of Sun and Microsoft.
The problem with this is that it simply isn’t practical, much less possible.
Why isn’t it practical? Why did Stroustrup use C as the basis for C++ instead of developing a completely new language? Because he wanted to write a language people would actually use, and be useful. Even though C has lots of known warts and problems, it is still widely used and deployed, so basing C++ on C would allow more developers to use it.
Mono is in the same position. Sure, you could come up with a completely new system, but no one would use it as it would be completely different from what people are used to and expect. Consider Common Lisp, or any other functional language. Functional languages have lots of known advantages over other paradigms, leading to truly elegant code (yay macros!), but they’re infrequently used. Why? Because most developers aren’t used to them, and have no interest in expending time/energy/effort in learning something new when the have More Important Things To Do.
Given that Java and .NET are (or likely will be) the dominant paradigms, if you want to write something that will be used by a large group of people, you must copy them. Or at least be similar to them.
Parrot also has the same issue: it’s not completely new, as no one would use it. It will be able to run existing Perl5 code, so it will have an existing user base that it can build upon.
It would be nice if the “perfect” solution would be widely used and deployed, but this is reality, and unfortunately the superior solution doesn’t always win. (See past arguments/flames/etc. about the dominance of Microsoft softwware. 😉
Now, why isn’t it possible? Because Sun, Microsoft, IBM, and every other major IT company in the US has so many patents on everything that, if they really wanted to, they could shut it down no matter how “new” a technology is. As Nat Friedman put it, if you write any software that’s over 1000 lines of code, you’re probably infringing someones patent (http://www.nat.org/2004/may/#20-May-2004) .
The only way to avoid the patent problems is to stick with 20+ year old technology, which wouldn’t be terribly convenient to any user base you wish to gain. 20 years ago was the introduction of Smalltalk and C++. C++ which predates templates, exception handling, multiple inheritance… Never mind anti-aliased fonts, high-resolution displays, or any current hardware.
The alternative argument is that nothing truly new has been developed in the last 20 years, and they’re all extensions/enhancements, if not re-implementations, of older stuff. This can be used in a Patent Suite to invalidate the patents, but that’s not a useful defense before the patent suite.
Answers answered in Part 2…
Part 2: Answering the Questions & Concluding Remarks
1. What does Microsoft have to gain from supporting a programming environment that allows Windows programs to be easily ported to Linux? Remember: they bent over backwards to see Java didn’t achieve this in the nineties through illegal actions.
I take issue with your perception of Microsoft and Java. Microsoft wasn’t trying to keep Java from being ported to other platforms. Microsoft was trying to allow Java to be better integrated with Windows. There’s a difference. 🙂 The difference is much like C: you can write portable code which compiles/runs on multiple platforms, but you’re not required to. Microsoft wanted to extend Java so that it would be the dominant language for Windows programming; at one point, they stated that all Java classes would be COM+ classes, with full, direct support.
See:
http://www.microsoft.com/msj/1197/complus.aspx
http://www.microsoft.com/msj/1297/complus2/complus2.aspx
Of course, things greatly changed once Sun sued Microsoft to prevent Microsoft from extending Java in this fashion.
My point is that Microsoft wasn’t trying to prevent Java from being portable. They were trying to allow Java to become non-portable, so that developers, if they chose to, could write platform-specific code.
Notice that this is exactly what .NET allows, and makes this trivial via DllImport.
As for your actual question, Microsoft hsa nothing to gain from supporting a programming environment that allows Windows programs to be easily supported to Linux. However, what’s your definition of “support”? To me, they’re not actually supporting Mono right now, much as they don’t support Wine. This doesn’t mean they’re actively fighting against Mono and Wine; rather, it’s more like apathy or ignoring a minor pest. 😉 I suspect that, in time, Microsoft and Mono will be similar to Microsoft and IBM: they cooperate in some areas (standards), and compete in implementations. This is the sign of a healthy ecosystem.
Now, I can alter your question slightly: what does Microsoft have to gain from supporting a programming environment that has been standardized via ECMA, however limited that environment is? The first thing is “crow”, or rather “making Sun eat crow”. For years, Microsoft wanted Sun to hand Java over to a standards group such as ECMA or ISO, much like C and POSIX are handled by standards bodies, precisely so that (1) there would be a standard, and (2) “the typical rules” would still apply. “The typical rules” are, of course, that extensions can be made. So Microsoft has added numerous new keywords to C/C++, just as GCC, Intel, and every other compiler vendor. Some extensions eventually get standardized themselves (such as the MPI extensions), but this allows companies to experiment with changes. This supports “innovation”, though I’d hate to use that word. Perhaps “progress” is better.
Another way to consider this to look at history: what was in it for AT&T to standardize C, C++, and POSIX? I’m sure part of the answer is that a lot of customers, competitors, and developers in general were clamoring for a standardized interface to write against, so “goodwill” is also part of the answer. Microsoft is in dire need of some goodwill, so this is likely also part of why parts of .NET were standardized.
2. If Microsoft decides that it will license the technology standardised by the ECMA (which it has the right to do), wouldn’t that make that Mono NOT free-software?
Yes. But only in countries which follow the US’ draconian patent laws. Alas, Europe looks set to go this route, as does Australia, but there’s hope people will learn better in time…
However, to the best of my knowledge, Microsoft has stated that they will license all required patents under RAND + Royalty Free terms. This doesn’t prevent them from requiring a license similar to the Office 2003 XML Reference Schema Patent License (http://www.microsoft.com/mscorp/ip/format/xmlpatentlicense.asp),
which would also prevent Free Software, but I suspect that a number of companies at ECMA would not be pleased if Microsoft tried to do this.
Plus, there’s the “goodwill” that Microsoft would lose. Though they might not care…
Wouldn’t that mean that every copy of Mono would have to be licensed by Microsoft under their terms?
Possibly, but there could be a number of mitigating circumstances, such as public outcry. Again, if they care…
There’s also the typical patent defense strategy: the patent is invalid due to prior art. Given the US patent system, this is an entirely probable defense, given all the trivial patents granted, and Microsoft might not want to have its patents challenged. This is where having Novell backing Mono is a Good Thing.
3. What advantages does Microsoft have to see such a technology succeed?
Why would Microsoft want to see .NET succeed? Maybe because the future of Windows is based on it? If it doesn’t succeed, then Windows is doomed, and Microsoft is without a major cash cow. .NET must succeed, or Microsoft will be very unhappy.
For the above reason, I think your question is poorly worded. Perhaps, “what advantage does Microsoft have in seeing ECMA 335 become/remain portable?” This was also touched upon earlier:
– developer goodwill (developers love the idea of potential portability, even if many rarely use it)
– more corporate support (IBM is in the ECMA 335 standard group)
– more research work (perhaps more students are likely to spend time on something that’s cross-platform than something tied to Windows)
– ECMA 335 isn’t all of .NET, but just a useful subset, so they’re not giving everything away anyway
– etc.
And, more importantly, what instruments does it have (and it has many) to put it to it’s OWN use -for their benefit.
If you know that they have many, why ask the question? They have the standard tools: copyright law, patent law, trademark law, trade secret law, collusion, inuendo, FUD, FUD, FUD, hiring hitmen, etc. 😀
Which of these tools are applicable is another matter. Copyright isn’t likely to be an issue, nor is trademark or trade secret law, but who knows? Patent law is obvious, and has been touched upon already. FUD is, well, FUD, but it can be wildly effective just the same. And Mono has too many people for hitment to be useful. 😉
For some closing thoughts, I know it’s fun to think of Microsoft as the Bad Guy, and I’ve done it often enough myself. They are a convicted monopolist, they have required companies to sign contracts requiring that only Windows be sold on a particular product line to get the lowest license fee, they have put lots of companies out of business. All this is true.
However, Microsoft has also contributed to a number of royalty free standards, such as C++, XML, HTML, SOAP, and lots of other W3C activities. They’ve even gotten patents on a number of those standards (IIRC, they have a patent on CSS which caused a public outcry several years ago). But just because they have a patent on a particular field doesn’t mean they’ll be using it to force competitors out of business.
Instead, and unfortunately, Microsoft is doing what it’s supposed to be doing in the current climate: get as many patents as possible — no matter how trivial — merely as a safety precaution, in case some other company comes out and sues them for patent infringement. At present, it’s for their defense only, and Microsoft has very little or no history using them offensively. Of course, this can change at any time. But so can the Stock Market, and you don’t see people leaving Wall Street in droves…
Will all mono programs *have* to run on a virtual machine? If so what are the performance ramifications?
Hmmm… that blog doesn’t go onto explain what parrot does.
See http://www.parrotcode.org for information on Parrot. IIRC, Parrot is a register-based VM, and has 128 registers: 32 registers each of Integer, String, PMC (object references, etc.), and Numeric (BigInts).
Obviously this can’t match any current hardware architecture, so the entire VM must be interpreted. I suppose JIT compilation might be possible, but I suspect doing a JIT for a register VM with that many registers will be difficult. Consequently, Parrot can’t currently reach “move %eax, %ecx; add %eax, %ebx”, except within the interpreter.
JIT compilation likely isn’t necessaryl they’re focused on writing an interpreter which will outperform Perl5, so performance isn’t likely to be a major problem.
CIL (Common Intermediate Language, which .NET and Mono use) requires JIT compilation to be performant, due in part to polymorphic opcodes. For example, “add” just adds the top two items on the stack. Java has iadd for adding ints, ladd for adding longs, etc.
Or how mono is different from what the last 8 years of VM development has been using.
Conceptually, Mono isn’t any different. Just different techniques, such as using an SSA tree for JIT compilation.
Also, keep in mind that there is frequently a large gap between research systems and production systems. Even if the Mono JIT is doing nothing that hasn’t been done for the past 8 years, Mono is a production system and not a research testbed (though it hopes to be both), so this is still a notable achievement.
Will all mono programs *have* to run on a virtual machine?
Define “run on”. All Mono programs must run within a VM, but on common platforms (x86, PPC) a JIT is used, so it’s native code which is executing. No interpretation is ever performed, unless you use the interpreter, mint. Mint is god-awful slow, though, so you want to avoid it if at all possible. Or use Portable.NET’s interpreter, which is faster than Mint but slower than Mono’s JIT.
If so what are the performance ramifications?
There is a startup penalty for the JIT compilation (done on a per-method basis), which should (hopefully) be negligable. This can be compensated by “pre-JITting” the code, which pre-compiles the program to avoid the runtime JIT compilation. This can be done with mono –aot [program-name]. However, pre-JITting is not a replacement for the original program; you can’t distribute the pre-JITted version and keep the original to yourself. The original program is required for many VM features, such as Reflection.
There is also the overhead of the Garbage Collector and other runtime features which cannot be pre-JITted, such as runtime code generation via System.Reflection.Emit.
The release notes of Mono detail what things are known to
be incomplete or broken in the release.
It seems like you have plenty of other cases, it is a shame
that you chose not to file bug reports, we do not know about
those problems, and if we do not know about them, we can not
fix them.
Miguel.
Since Miguel is following this thread, I have to ask the $64,000 Question, especially as the Ximian guys had said they would have more information on it when they released 1.0.
What assurances does Ximian/Novell have from MS that they will not start demanding RAND licensing on the ECMA part of the .NET framework, thus making MONO non-free (as in freedom).
Even though MONO may be technically the best thing since sliced bread, without clear public assurances from MS, MONO is legally unsafe. In which case GCJ/CLASSPATH would seem to be a safer route for open source developers seeking a managed language environment, given Sun’s clear patent grant on the Java language.
You can read http://www.news.com for an interview where I cover some
of that.
But the net result is that nothing has changed, the FAQ still
represents the position that can be taken, and it applies to
all software in general, not only Mono.
Miguel.
Thanks for your long, informative post about Mono. It should be converted to an article here at OSNews, for its quality.
I remember Miguel said there was a “legal review” in progress, around May, and he would post the result as soon as he got them (so people would stop asking this 10x a day, I suppose). I wonder what happened to this review.
Oops sorry, Miguel answered the question at the same time I posted. Seems like the position is “there are thousands of patents so we can’t be sure about _all_ of them, but seems OK as far as we could see, and that’s the same for any other piece of software out there”…sounds OK for me.
People seem a bit paranoid about Mono, but they should stop and think it the other software they use don’t have pretty much the same “risks” somewhere. I mean, can anyone really _guarantee_ that say, Python, don’t infringe one of Microsoft’s or IBM’s hundreds of thousands of patents?
“People seem a bit paranoid about Mono, but they should stop and think it the other software they use don’t have pretty much the same “risks” somewhere. I mean, can anyone really _guarantee_ that say, Python, don’t infringe one of Microsoft’s or IBM’s hundreds of thousands of patents?
”
this is the same logic that one of the MS guys said when talking about IE security. how can you really be sure about mozilla’s?
walking down a warpath just because you can die in your lane too isnt that good a idea
there is a higher chance that mono is infringing on one of the MS patents and that MS will strike back rather than compared to python or java
What I mean is that people keep saying the danger is that Mono could become too popular, and start “stealing” Windows developers and then MS could try to make a patent stunt.
But then, if there was no Mono, and any other new framework became too popular, MS could do exactly the same. At the end it boils down to the fact that there are so many patents out there, for pretty much anything you can conceive related to software, that either you stay under your bed forever or go out there and do what have to be done. You gotta have a bit of courage to go out there and face the big bullies sooner or later.
Linux needs a modern development framework, C/C++ is cool but for a little, and Java had their time and for one reason or another didn’t make the cut. And if you think about it, there isn’t really anything 100% “original” and “safe” that you can create, at least nothing that would resemble the major platforms enough to convince people to give a try (it would be great if everybody were open to try and help improve _beautiful_ stuff like Ruby and Python, but that’s not a perfect world…)
Java had their time and for one reason or another didn’t make the cut
Before I get flamed, I mean Java didn’t make the cut in the desktop. In the enterprise it’s doing very well of course.
There are too many ridiculous software patents, and yes, in a theoretical sense you are probably safer writing code in Ruby than in C# Mono, but by the time Microsoft feels the need to pull a SCO and break out their patent portfolio for some quick cash, in say 2100 or so, you won’t care because you’ll be dead.
Patents aren’t diamonds: they don’t last forever. They last only (only!) 20 years from the date of filing (IIRC, not that 20 years isn’t an eternity for the computer industry).
So, by 2025, all the current patents will have expired. And if you’re really cynical, the ideas underlying the current patents will have been re-patented 5 or more times in the following 75 years, so by 2100 the situation will be worse than today.
The more things change…
1. Why mono have to separate all the dependencies? Will it be nicer to have a runtime package (from source or binary) and one SDK? (like java or .net)
Now it seem to create a little dependency hell.
2. Why mono’s team will, is to make a developpement framework only for linux. With effort GTK could be quite well portable (which is nicely done now with 2.x series)? It is certain that for now, installing mono and gtk is quite complicated on other OS (numerous package lost on web, config, compiling with gtk#) so now imagine simple user just for the runtime (that is also lost on the web and need a lot of package to run a gtk# application) …
But considering my first question possible and mono being easily installable on different Os with gtk# and all, would it be a big advantage to make mono THE framework of choice to develop on it?
Apple, Windows, Unixes, Linux …
1. It was split for packaging reasons, to fit in well with the existing RPM, debian, and other systems well. There also exist “meta” packages which should install all of mono as one like you want.
2. Gtk# works fairly well on both Windows and the Mac. In particular, on Novell’s forge site there is a Gtk# runtime only package specifically for .NET on Windows. I am told Gtk# is not yet packaged for the Mac because of the dependecies of Gtk+ and other GNOME libraries. It will likely take them a little longer to get it right.
Every now and again, someone mentions Python as an alternative to both Java *and* Mono for desktop app development and possibly more integration with the Gnome desktop. Immediately after that, someone pipes up and says that Python doesn’t even compare with Java/Mono.
Aren’t many of the Redhat/Fedora control panel apps written in Python?
How would, say, a Quicken/Quickbooks type app perform if written in Python/(Tkinter || PyGTK)?
I’m diving into Python this weekend to see for myself what all the fuss is about. Could it really be that we don’t need Java or Mono at all?
Jonathan,
Thank you for your reply… Although I don’t agree with it, I appreciate your opinion.
In your post, you said:
“For some closing thoughts, I know it’s fun to think of Microsoft as the Bad Guy, and I’ve done it often enough myself. They are a convicted monopolist, they have required companies to sign contracts requiring that only Windows be sold on a particular product line to get the lowest license fee, they have put lots of companies out of business. All this is true.
However, Microsoft has also contributed to a number of royalty free standards, such as C++, XML, HTML, SOAP, and lots of other W3C activities. They’ve even gotten patents on a number of those standards (IIRC, they have a patent on CSS which caused a public outcry several years ago). But just because they have a patent on a particular field doesn’t mean they’ll be using it to force competitors out of business. ”
I think this is a major point that sometimes looked-over. Microsoft, as a company, was built on forcing competitors out of business; there is no basis to believe that, based on their history, they WON’t do so again when it is their interest to Mono. They contribute to standards when it is in their interest to do so, not out of a natural concern for the people who use them. They are also more readily known, for undermining open-standards when such standards impose on their desktop monopoly. Anyone who looks at the Internet “Standards” these days knows this.
And contrary to your stated opinion on their reasons for integrating Java, the recent DoJ case discovered that high level executives within Microsoft had attempt to “pollute” the Java standard by intermixing their -proprietry- implementation on the windows platform. This -in was hoped- would lock Java onto the one Platform, as they will attempt to do with XAML in the future. This is a fact and it was proven in a court of law.
What Mono gives Microsoft, if it is successfull in becoming the number one Linux development platform, is the ability, with one swoop, to set back the Linux desktop for years… and this is something that is sooner recognised, the better.
Ste
i agree with Ste,
Just wait until someone steals some marketshare (lets say Novell) by using some .Net technologies using Linux (such as mono). When Microsoft felt the hit, they will hit harder back. And this time it will be different tha SCO-Linux case.
Then i wonder the people who deliberately refuse to see the elephant (java) in the small room (linux) will say “but we thouht it was an open standard..”
Allowing usage of .Net related technologies in OS’es other than windows is a good strategy of Microsoft. Sadly people fell for it.
No its not the same. Mono has copied .Net, piece by piece as far as possible. Yes there are things which are unique to Mono, things for Linux/Unix. But a very obvious goal has been to copy .Net so that it .Net can run on Mono.
I remember reading an interview with Ballmer in which he stated that Microsoft has spent too much money on .Net to give it away. So we will see how he reacts if Mono becomes a threat to the empire.
I just wish that Mono had taken the CLR idea and built their own API’s and left .Net alone.
“I just wish that Mono had taken the CLR idea and built their own API’s and left .Net alone.”
That is what i am talking, the obvious elephant people refuses to see. Java Byte code , and fast virtual machine, IDE’s (Eclipse, Netbeans, IDEA, JBuilder) , Native platform independent GUI’s (SWT) and compilers, open source APIs (thousands and mature) are around. it is fast , mature (hammered with years of test) and gives real platform independancy (from mobil to mainframes). There are several languages capable of producing Byte code (Jython, Rubby, Groovy etc), or native code can be produced from java (Gcj, exelcisor etc.). it has native access tools and libraries too (JNI, newly announced Java Desktop libraires). Does .Net or C#(mono) will solve a problem faster than java? no. does it easier to learn? no. is it more mature? no. are there better IDE’s for mono or .net? not even close. how about open source libraries? maybe 20 times less, and trying to copy each java application.
That is why i am grumpy about mono. no matter how cool or fashinable is it..
Does .Net or C#(mono) will solve a problem faster than java? no. does it easier to learn? no. is it more mature? no. are there better IDE’s for mono or .net? not even close
Fair enough, but then the natural question that comes next is: why the heck Java never managed to get to the desktop? there might be a reason…
Easy to talk, harder to do.
Why reinvent the wheel when someone already has a blueprint laid out on the table in front of you?
i agree with the comments above the microsoft will swoop in and entangle Mono with lawsuits if it gets any traction.
See, MS doesn’t have to be on the “right side of the law” to do this – they can throw so many resources at Mono for YEARS that will scare away any use of it, even if the .NET libraries are out in the open under ECMA – doesn’t matter. And if Mono has been adopted for large parts of Gnome, or for large parts of the infrastructure, those projects will be in Limbo.
I watched microsoft absolutely connive and murder companies throughout the 90’s – incredible how everyone forgets. To wipe out Mono under massive amounts of litigation would be incredibly easy. And they will do it, they’ll just wait a year or 2 for Mono to be more embedded in order to cause maximum damage.
Once again, Python bindings for GTK, or Java with SWT, these our strong options today, and probably safer. And to think if all this programming talent had been applied to these projects, or Parrot, instead of a copy of .NET – and for what, so you can run ASP.NET unchanged between Windows and Linux? Big deal. Microsoft is laughing like crazy up in Redmond.
Linux is as much GTK as it is Mozilla, and Mozilla is as important to Linux as GTK is, in a way. Because Mozilla kind of became — at least on GNOME — the key browser to use within your application.
Bollocks.
Because it was not imposed for desktop use and GUI tools was not really responsive enough . Or maybe it was because of the misconceptions about it. Especially after Swing get faster with 1.4.2 and native GUI’s are introduced (SWT) i do not believe there is a reason to believe that java is not suitable for desktop use. And there are pretty good java desktop apps out there. Azureus is one example for that. Also there is a pretty decent Office software written over java and Swing (Evermore). just for an example check also Columba ( http://columba.sourceforge.net/ ) to see how a decent gui can be written with java. Thus, i believe this is only a matter or perception. After the introduction of better native os integration tools and beginning of JVM share with Java 5 (1.5) java dsktop apps will appear more.
After the introduction of better native os integration tools and beginning of JVM share with Java 5 (1.5) java dsktop apps will appear more.
Not so sure. It seems like yesterday but actually Java has bee n out for some 10 years now, usually after ten years a language passed the “make or break” period already.
BTW as I said before, I am refering to Java on the desktop here…on the server side it’s a different story.
Although, `low-down’ would be correct, `down low’ has precisely the same meaning. `Down low’ is just more colloquial. (See http://www.dict.org/bin/Dict?Form=Dict2&Database=wn&Query=l… and http://rapdict.org/terms/d ).
Here’s the low-down on the whole down low low-down situation…
You do of course realize, that “the whole truth/circumstances” (low-down) is not the same as “being secretive in nature / covert” (down low)? A rather significant difference – arguing that the two are one and the same seems a frivolous task at best, considering the history of the English language.
I am generally the strong Python advocate in these Mono threads. I really believe that all it really needs is a JIT compiler for its byte code and two new statement blocks (a Do/repeat type loop block statement and switch/case type block statement) to make it competitive with EITHER of the proprietary “mamaged software platform” solutions.
Hi CS,
I’m not certain I want to stand up for Python just yet (since I’m just learning it right now), however, I’ve read that Python can easily make use of C or C++ modules if speed is an issue (I suppose in a similar way that Java has JNI/CNI, but probably much simpler). That is to say, if you write an app in pure Python, and you find that it’s too slow, you can supposedly quite easily profile it and then take the bottlenecks and rewrite them in C for speed. This seems like a great fit for Gnome.
It also looks like switching from Java to Python is going to save my fingers a lot of typing.
Another note is that every time I read what Bruce Eckel ( http://www.mindview.net/ , author of “Thinking in C++” and “Thinking in Java”) has to say about Python, it’s always very good — and since I respect what he has to say about programming languages, I feel I’ve got to give it a try.
I don’t know about Python needing a JIT compiler. On a related note, I’ve never heard of an AOT compiler for Python … I wonder if there *is* one, or how hard it would be to implement. (?)
http://news.com.com/2008-7344-5271084.html
I have talked to 100 times more developers that would rather use Java and get it more integrated with GNOME than use MONO.
Very true. I just don’t think that Mono can be used for anything important right now (legal situation). But I think that the basic idea of not having to write wrappers the whole time, is an excellent one.
The fact that it is harder not to just copy also gives MS a very good argument against OSS. They will be 100% right when they say they spent billions developing .Net and they want a good return on their investment. So, “Pay up” could be their argument. And they would be right.
> But I think that the basic idea of not having to write
> wrappers the whole time, is an excellent one.
Ahumm… and Ximian has been working for 2 years for gtk# … ?
Also unless something runs on .NET/Mono, that logic is bunk.
Unless I run ironpython or something, all my gtk-python code
will be useless in mono .
Ximian has already failed once with Bonobo … now it’s Mono’s turn
…I’ve read that Python can easily make use of C or C++ modules if speed is an issue
I think any framework to be successful must be complete in itself, i.e, people don’t want to have to resort to 2 or 3 languages/technologies to solve a problem, that raises costs and complexity, and reduces mantainability.
If Python (by far my favorite language) want to be succesful with the “big guys”, the performance problem should be addressed. But then again I don’t know if that’s the goal of the Python authors, to make it compete with Mono or Java.
The “problem” about Python, at least when I show it to my .Net/Java friends, is that it’s almost “too good to be true”, they don’t get the dynamic+strong typing combination and the fact such compact, elegant language can actually take care of Real Problems.
One thing they complain a lot is the fact you don’t have to declare variables; it makes any typo pass as a new variable and makes it harder to take care of variable scope/lifetime. And, of course, the use of Tab/spacing as part of the syntax, which I consider a non-issue, you get used to it in 5 minutes, and then (at least in my case) start to love it.
I agree with you guys that, if the OSS community managed to get over the scripting prejudice, and spend the same time and money they spent on Mono around Python (or Ruby), we could have a framework right now that would kick MS and Sun’s ass really, really badly, and take names.
> I agree with you guys that, if the OSS community managed to
> get over the scripting prejudice, and spend the same time
> and money they spent on Mono around Python (or Ruby), we
> could have a framework right now that would kick MS and
> Sun’s ass really, really badly, and take names.
Parrot … Python + Perl5 + Perl6 all on one VM..
Microsoft’s business model is: Lock in, Lock into Windows, any threat to windows is a threat to Microsoft.
Sun’s business model: develop on Windows or a Linux desktop and install and run on any server you like: SCALE up into Sun Servers. As your business grows you can grow into Sun OS and Sun Servers.
Microsoft has a Long history of killing it’s competition when threatened.
Sun doesn’t.
Using Mono will give Linux Mono.
Aptly named.
No licencing fees because you are free of Windows Os on Linux?
Guess again.
With Mono they are right now, because there are is no Mono widget set, but there could be. With .Net there is no need for wrappers with .Net languages.
Do you know if there was C compiler for Mono, could GTK+ be recompiled for Mono? That would make wrappers unnecessary.
Jonathan Pryor writes …
Why isn’t it practical? Why did Stroustrup use C as the basis for C++ instead of developing a completely new language? Because he wanted to write a language people would actually use, and be useful. Even though C has lots of known warts and problems, it is still widely used and deployed, so basing C++ on C would allow more developers to use it.
Mono is in the same position. Sure, you could come up with a completely new system, but no one would use it as it would be completely different from what people are used to and expect. Consider Common Lisp, or any other functional language. Functional languages have lots of known advantages over other paradigms, leading to truly elegant code (yay macros!), but they’re infrequently used. Why? Because most developers aren’t used to them, and have no interest in expending time/energy/effort in learning something new when the have More Important Things To Do.
What a depressing analysis. We are condemned to variations on the current situation. I wonder however if it isn’t temporo-centric (grasping for the correct appellation).
After all, COBOL owed practically nothing to FORTRAN, and yet it succeeded. (It was aimed at a new audience – business programmers were joining what was previously the exclusive domain of scientific programmers.)
And what did C owe to either of them? And yet it began, and after a while flourished. Again, it had a different intended audience.
The fact that we have so many C-inspired languages for the new audiences of the past 15 years says more, I think, about the lack of imagination of language developers, than it does about the lack of receptivity in the community.
Why do so many language efforts fail?
(1) They are skewed to some particular interest of the originator and are not real-world useable.
(2) There is not enough sustained, professional-quality development effort behind it.
(3) They are too costly or otherwise encumbered (read licences) to gain wide distribution.
(4) They have no useable GUI framework.
(5) They are not nice to code, and a dog’s breakfast to read.
(6) They are not quick.
(7) They were designed by a committee (which means trying to please fringe interests and thereby losing the core audience).
(8) They are cobbled together from disparate pieces that require jumping through hoops instead of solving problems.
It doesn’t seem too difficult to avoid all of the above pitfalls. And yet no one has done it, not even IBM. Instead, they ride the Java horse, which is not really in the race, just taking a long time dying. All those research units, and they don’t dare to make their own entry. Must still be feeling the lingering effects of failing with PL/I. But they didn’t meet all the requirements. Being IBM isn’t enough. But apparently for now, being Microsoft is. Now I’m really depressed!
Take a look at this…
http://www.gnome.org/~seth/blog/2004/May
Says it all, doesn’t it?
…write in assembly. No patent problems there!
That article assumes that GNOME is the dominant Linux DE. It completely misses the fact that there are many who use KDE and don’t touch GNOME apps with a 10 foot pole.
KDE users may not be using GNOME apps however they may be using GTK based apps. (Particularly if they are using The GIMP
or GNU Cash which GTK was originally designed for before there ever was such a thing as the GNOME project.) Therefore the real microsoft related danger is GTK being changed from a Streight C to a Mono based programming library.