Posted by
michael
on from the pipe-dream-or-visionary dept.
miguel writes: "Here is my reply to the various questions on Mono, the future of GNOME and the Register statements." Linux Today has a copy of the email as well.
The crux of his argument
by
Anonymous Coward
·
· Score: 5, Insightful
GNOME had always tried to have a good support for multiple programming languages, because we realize that no matter how much we loved C as a programming language, there was a large crowd of people out there that would like to use the GNOME libraries fromtheir favorite programming language, which might not necessarily be C.
This is the reason having Mono at the heart of Gnome would be a good idea. Base it on the CLI and suddenly any language that is ".Net-enabled" is usable under Gnome.
It's about choice. Isn't that what Open Source is all about?
Re:The crux of his argument
by
entrox
·
· Score: 5, Insightful
Don't get too excited about this "any.NET enabled language" being able to drive GNOME. If you think about it, the number of possible languages is pretty dim (mostly C#). Why that? Because.NET must handle common interfaces across those languages. If I use a more exotic language with features not found in others (like multiple dispatch, funky lambda-lists or closures in Common Lisp) I don't think I'll be able to export Interfaces using these features. As those happen to be 'natural' to these languages, I'd have to limit myself in how I can write my applications/libraries.
.NET is far from being the perfect solution.
-- --
The plural of 'anecdote' is not 'data'.
Re:The crux of his argument
by
plague3106
·
· Score: 5, Insightful
Which was exactly why MS 'broke' VB6. Some parts of the language needed overhaul to be CLS compliant. I imagine other languages will need the same kind of overhaul. And that might not be such a bad thing. VB is a much cleaner and nicer language thanks to the overhaul (although there are still things i don't like, and i would still stick with C).
Good response...
by
Nijika
·
· Score: 5, Insightful
Sorry, but RMS tends to fly off the handle any time he even gets a whiff of something non GNU. So do we all here it seems. I'm tired of hearing it from the community because it's starting to hold us back.
Miguel has made many positive arguments for his prior statments. And thanks to the Register for obfuscating the variables.
--
Luck favors the prepared, darling.
Great reply, but...
by
mjh
·
· Score: 5, Insightful
Reading Miguel's response makes me better understand why it is that he's so enthusiastic about the.NET framework (as he calls it).
One thing though. Miguel says:
So when you copy your binary from Windows that was compiled with the Visual Studio.NET and run it on your Unix platform, it will just integrate nicely with your GNOME desktop.
This just strikes me as overly hopeful optimism to think that Microsoft is going to give up their hard fought and long defeneded applications barrier to entry.
-- Key to financial independence: Spend less than you earn. Save and invest the difference. Do it for a long time.
Re:Programmer's Life
by
miguel
·
· Score: 5, Insightful
I guess you miss-understood.
Writing about a programmer's life is pretty boring. The programmer might be enjoying himself, but to an external viewer he is only tapping at a keyboard.
miguel.
CLR and so-called language independance
by
ChrisRijk
·
· Score: 5, Insightful
The reality looks much darker instead. The CLR is not truly language-neutral, and it will ostensibly favor languages that look a lot like C#. Those not in this group will be severely bastardized, producing dialects which are really "C# with another syntax"; look at ISE's Eiffel# (or even Microsoft's own VB.NET and J#) for great examples. Programmers' choice will be limited to superficial features: whether to delimit their blocks with curly braces, Begin/End or parentheses. It's also worth notice that the CTS/CTS do not allow use of the full set of CLR features; for example, unsigned integers are supported by the CLR but not considered language-neutral, simply because many languages share Java's abomination for the signed/unsigned duality (this includes Microsoft's own VB) and there's no good solution for this issue.
-cut-
Playing with the.NET SDK, the cross-language support looks impressive, but the illusion holds true only until realizing that all languages in the mix are virtually identical. Microsoft has actually invented the concept of skinnable language: changing a language's most superficial aspects, and claiming the result to be a new language. There is only One True Language that is C#, and "skins" offered by Microsoft and third parties. Just like in GUIs, these skins will alter the system's look and feel, add a few features, but never compete with a fully new toolkit.
Miguel's Comments
by
John+Kelvie
·
· Score: 5, Insightful
1) I thought Miguel's arguments for why he's getting behind the.NET Framework(the CLI and CLR to be specific) were excellent. I have read much about the Mono project since the announcement of its inception, but this is by far the best explication I have seen. If he hasn't made me a believer, he has at least made me very curious.
2) As an active Java developer, I think that this may very well be the BEST thing someone could do to help Java. The directions Microsoft are going in with.NET to me seem like the obvious directions(licensing as a standard to ECMA, support for multiple languages, etc.) that Java should be going towards, but, for whatever reason, is not. I think.NET(and Mono) if they pick up steam will give sun the kick in the ass they need to get moving on some of this stuff that they are not.
I personally think the main reason Sun has not further opened Java up is because they have not perceived the need to. They are doing some calculus in their head to make it as open as they need to gain developers from Redmond, but still try to hold onto as much as possible of it for themselves.
3) My largest concern with this, and I didn't notice Miguel addressing it there or in the followups, is the patent issue. My worst fear is everything would go incredibly well with mono: diverse compilers, robust libraries, etc. and we would all start to build code around it, and then about 5 years down the line Microsoft whips out a patent and demands royalties for all the labor that we have done under the illusion that it would be free.
I would love to see Miguel address this concern. I cannot speak for others, but I would be a long way to considering getting involved with Mono(whether it mean using their tools to develop, or even contributing to the developmen of libraries, languages, etc.) if I felt better about these things.
Alan Cox 1 Miguel 0
by
praedor
·
· Score: 5, Insightful
Sorry, even though Miguel does a good job of going into an indepth "answer", Alan Cox takes all the air out of the sail.
Java is NOT broken or lacking because it is inferior. If it is lacking anything, it is because no one has gone the one step further and fixed it. Do THAT instead of rebuilding from M$-poopie.
Finally, the simple statement by Alan that as soon as M$ decides they're a pain in the ass, poof, there goes the VM into patented special-feature land (see kerberos for a similar f*ckjob) and no.NET viralware will run via mono. Add this to the FACT that the predominant C# compiler in use will be the M$ version. De facto factamundo. The M$ version will be "special" while the free variants will be broken. Just like the PROPER implementation of java (non-M$) was "broken" with respect to the illegal perversions that M$ inflicted on it (and thus we have C#).
M$ is not changing its tune on whit. This is NOT a gift to the developer community. It is NOTHING but a means of continuing lockin (and conversely, lockout) and moola into Gates pocket. Nothing more, nothing less. It may be a nice way to build stuff at some future time for linux but it is NOT a means of being able to run some.NET windoze binary on linux (never happen except accidentally because the code was simple enough not to include "broken" M$-only freakishness). You will find that most of the important stuff will not run. Developers will STILL not make linux-friendly stuff because the bulk of the market is in M$-doze-land and they can run the broken/perverted.NET M$_VM-only stuff.
Stone cold fact. Sing the praises of mono for having the POTENTIAL of providing a nice development environment for linux coders (though unnecessary if they'd instead focus on the correct path of Java) but don't delude yourselves that this will mean windoze binaries working on linux.
-- In Bushworld, they struggle to keep church and state separate in Iraq as they increasingly merge the two in America.
Re:Alan Cox 1 Miguel 0
by
ink
·
· Score: 5, Insightful
Java is NOT broken or lacking because it is inferior. If it is lacking anything, it is because no one has gone the one step further and fixed it. Do THAT instead of rebuilding from M$-poopie.
Actually, Java is broken when it comes to multiple language bindings. Java (the language) was written with Java (the virutal machine) and they are designed to work hand-in-hand. It's easy for you to sit there and complain that someone should be re-coding Java so that it has Perl, Eiffel, Haskel, Visual Basic, and any other language's bindings; it's quite another for that to be done.
All this is very different from the Java approach, "use my language or die". Only three years ago, Scott McNealy wrote "Think Java. Write new applications in Java. Rewrite legacy apps with Java. Don't upgrade or downgrade. Sidegrade instead to a Java desktop device... I don't understand why anybody would be programming in anything other than Java" (in Open Finance, a Sun publication, Spring 1997). I'm not sure anyone would still dare speak like that today..NET recognizes that the world is multi-lingual, especially the world of component-based development, and that the duty of a component model is to help interoperability, not force a language corset onto everyone.
Most of the criticisms of Mono stem from those who misunderstand dotNet and Mono (you included). Mono is not trying to integrate services with Microsoft's dotNet services, they are trying to write a good component model. If Microsoft decides to change the internals of their dotNet implementations such that it "breaks" compatibility with Mono, then we've still lost nothing. Do you understand now? This isn't the "Samba problem" re-hashed.
-- The wheel is turning, but the hamster is dead.
One piddly point...that becomes a rant
by
dasmegabyte
·
· Score: 5, Insightful
Miguel, in an otherwise well thought out and well constructed rebuttal to TSH (Typical Stallman Hype), makes one comment I take great exception to...something to the effect of "CIL is Microsoft picking up where Java left off."
Excuse me, when the hell did Sun Microsystems "leave off"? Version 1.4 is coming out the door at any time, with such nice features as buffers and extensive regular expression support, and all of a sudden they've "left off"? Java will run on nearly every system ever created and in all sorts of unusual situations and suddenly Sun dropped the ball?
Look, Java is effing huge. People do write applications in it, and I'm not talking about ticker applets. Today's machines can run Sun's graphics engine as well as they can run GTK, and it's available underneath any OS. Any "work" that Microsoft is doing on the CIL has already been done by Sun, with the exception that MS' byte code executes faster and has better UI support.
But is there any wonder? An implementation of the CIL requires a lot of work on the part of the window management driver authors, meaning there's plenty of room for tuning. An implementation of Swing requires very little -- implement a fiew basic AWT classes and Swing, which is "100% Pure Java," will work atop the older class. Meaning that there has to be a lot more abstract code in Java. Meaning you can be damn sure your application looks the same everywhere and there won't be any glitches due to "factionalied" implementations.
Of course, most of the development world is still coping with the idea that different platforms require different code (hence the laundry lists inside Makefiles). The Java paradigm won't let you do that. It says, "write that shit once and deal with the slow down, it shouldn't be a dealbreaker for cross platform code." It shouldn't be. But it is. Many development houses can't get over this. Hell, I mentioned to our IT guy that I was doing our mailserver in java and he thought I meant an applet, scoffing "Write once, run nowhere."
CIL is an attempt to get under the skin of this, but it's a flawed attempt. Jesus, all the development time and heartache going into the optimization of x-platform windowing "frameworks" and "toolkits" where there already is one seems headstrong. Actually, it seems idiotic, and it's why I seethe whenever I hear somebody drop.NET like it's a great new IDEA.
"But C sharp has improved garabage collection, language integration and runs anywhere." Yeah, that's Java for you. "But.NET allows you to compile ASP code." JSP. "Tighter integration with IIS allows you to better utilize ISAPI." Servlets. "Serialization and persistance." EJB.
Jesus, why isn't Sun mopping the floor with these idiots???
Re:One piddly point...that becomes a rant
by
cgleba
·
· Score: 5, Insightful
For the same reason that DEC's Alpha is not mopping the procesor floor today.
Hell, DEC had 300Mhz *64-bit* Alphas out when P90s were "the bomb" and by the time Intel broke the 100Mhz barrier DEC was spitting out 500Mhz *64 bit* Alphas. Alphas were so friggn fast that they could emulate an x86 and still beat the true x86s.
Roughly 10 years later Intel decided to jump into the 64-bit world with the Itanium and the now defunct no-longer-developed Alpha line still beats the hell out of them. Yet DEC is gone and the Alpha has been officially scrapped.
Roughly 10 years after Sun, MS decides to get into the VM-language game. Currently they have nothing other then vaporware, some specs, alpha code and lots of hype yet Sun's been in the game for a long time. But yet people are buying books and training to be.NET developers like it's the best thing since sliced bread. Java versus.NET is like DEC versus Intel. DEC was in the game a lot earlier, was more mature at it and had perhaps even perfected the 64-bit game. ..in the end, though, Intel's Itanium wins because DEC was kicked out of the game by market share, propoganda, marketing, hype and poor business decisions.
Anyone who has been in the computer industry for any length of time KNOWS that the technologically superior or more mature product rarely wins. The person who screams the loudest about their product wins.
Let's hope the same doesn't happen with Java.
Productivity over politics
by
GCP
·
· Score: 5, Insightful
Miguel's experience with.Net seems to mirror my own. It's a very productive environment that's a blast to work in.
Have you ever gotten used to working in a Unix/Linux shell then had to jump over to Windows and do something on the command line in *DOS*? Know what that feels like, that helpless feeling of losing all your magical powers?
That's what it feels like to work in.Net on Windows, then having to do some work in any current GUI app dev system on Linux.
If RMS thinks he or his minions can design a better architecture than.Net, let him prove it, but don't suggest that we have to learn to live with less for political reasons.
-- "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Re:Actually, this is the way it is
by
Sloppy
·
· Score: 5, Insightful
Any compiled class written in Java can run in any environment with a JVM.
Unless that class inherits or calls proprietary library stuff that you
don't have.
This is why I can't run most Java stuff on my Amiga. I have the Kaffe
JVM, but no AWT. So I can run a program that says "hello world" and even
Sun's Java compiler (written in Java) that comes with the JDK. But AWT
or Swing apps are right out, because no one has implemented that stuff
for my OS.
You're going to have the same problem running Microsoft Office on Linux.
Your VM will work perfectly, but the app will want to use stuff that you
don't have.
-- As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
GNOME had always tried to have a good support for multiple programming languages, because we realize that no matter how much we loved C as a programming language, there was a large crowd of people out there that would like to use the GNOME libraries fromtheir favorite programming language, which might not necessarily be C.
This is the reason having Mono at the heart of Gnome would be a good idea. Base it on the CLI and suddenly any language that is ".Net-enabled" is usable under Gnome.
It's about choice. Isn't that what Open Source is all about?
Miguel has made many positive arguments for his prior statments. And thanks to the Register for obfuscating the variables.
Luck favors the prepared, darling.
One thing though. Miguel says:
This just strikes me as overly hopeful optimism to think that Microsoft is going to give up their hard fought and long defeneded applications barrier to entry.
Key to financial independence: Spend less than you earn. Save and invest the difference. Do it for a long time.
I guess you miss-understood.
Writing about a programmer's life is pretty boring. The programmer might be enjoying himself, but to an external viewer he is only tapping at a keyboard.
miguel.
Good article on this appeared today:
.NET SDK, the cross-language support looks impressive, but the illusion holds true only until realizing that all languages in the mix are virtually identical. Microsoft has actually invented the concept of skinnable language: changing a language's most superficial aspects, and claiming the result to be a new language. There is only One True Language that is C#, and "skins" offered by Microsoft and third parties. Just like in GUIs, these skins will alter the system's look and feel, add a few features, but never compete with a fully new toolkit.
One Runtime to Bind Them All
Some quotes:
The reality looks much darker instead. The CLR is not truly language-neutral, and it will ostensibly favor languages that look a lot like C#. Those not in this group will be severely bastardized, producing dialects which are really "C# with another syntax"; look at ISE's Eiffel# (or even Microsoft's own VB.NET and J#) for great examples. Programmers' choice will be limited to superficial features: whether to delimit their blocks with curly braces, Begin/End or parentheses. It's also worth notice that the CTS/CTS do not allow use of the full set of CLR features; for example, unsigned integers are supported by the CLR but not considered language-neutral, simply because many languages share Java's abomination for the signed/unsigned duality (this includes Microsoft's own VB) and there's no good solution for this issue.
-cut-
Playing with the
1) I thought Miguel's arguments for why he's getting behind the .NET Framework(the CLI and CLR to be specific) were excellent. I have read much about the Mono project since the announcement of its inception, but this is by far the best explication I have seen. If he hasn't made me a believer, he has at least made me very curious.
.NET to me seem like the obvious directions(licensing as a standard to ECMA, support for multiple languages, etc.) that Java should be going towards, but, for whatever reason, is not. I think .NET(and Mono) if they pick up steam will give sun the kick in the ass they need to get moving on some of this stuff that they are not.
2) As an active Java developer, I think that this may very well be the BEST thing someone could do to help Java. The directions Microsoft are going in with
I personally think the main reason Sun has not further opened Java up is because they have not perceived the need to. They are doing some calculus in their head to make it as open as they need to gain developers from Redmond, but still try to hold onto as much as possible of it for themselves.
3) My largest concern with this, and I didn't notice Miguel addressing it there or in the followups, is the patent issue. My worst fear is everything would go incredibly well with mono: diverse compilers, robust libraries, etc. and we would all start to build code around it, and then about 5 years down the line Microsoft whips out a patent and demands royalties for all the labor that we have done under the illusion that it would be free.
I would love to see Miguel address this concern. I cannot speak for others, but I would be a long way to considering getting involved with Mono(whether it mean using their tools to develop, or even contributing to the developmen of libraries, languages, etc.) if I felt better about these things.
Sorry, even though Miguel does a good job of going into an indepth "answer", Alan Cox takes all the air out of the sail.
Java is NOT broken or lacking because it is inferior. If it is lacking anything, it is because no one has gone the one step further and fixed it. Do THAT instead of rebuilding from M$-poopie.
Finally, the simple statement by Alan that as soon as M$ decides they're a pain in the ass, poof, there goes the VM into patented special-feature land (see kerberos for a similar f*ckjob) and no .NET viralware will run via mono. Add this to the FACT that the predominant C# compiler in use will be the M$ version. De facto factamundo. The M$ version will be "special" while the free variants will be broken. Just like the PROPER implementation of java (non-M$) was "broken" with respect to the illegal perversions that M$ inflicted on it (and thus we have C#).
M$ is not changing its tune on whit. This is NOT a gift to the developer community. It is NOTHING but a means of continuing lockin (and conversely, lockout) and moola into Gates pocket. Nothing more, nothing less. It may be a nice way to build stuff at some future time for linux but it is NOT a means of being able to run some .NET windoze binary on linux (never happen except accidentally because the code was simple enough not to include "broken" M$-only freakishness). You will find that most of the important stuff will not run. Developers will STILL not make linux-friendly stuff because the bulk of the market is in M$-doze-land and they can run the broken/perverted .NET M$_VM-only stuff.
Stone cold fact. Sing the praises of mono for having the POTENTIAL of providing a nice development environment for linux coders (though unnecessary if they'd instead focus on the correct path of Java) but don't delude yourselves that this will mean windoze binaries working on linux.
In Bushworld, they struggle to keep church and state separate in Iraq as they increasingly merge the two in America.
Miguel, in an otherwise well thought out and well constructed rebuttal to TSH (Typical Stallman Hype), makes one comment I take great exception to...something to the effect of "CIL is Microsoft picking up where Java left off."
.NET like it's a great new IDEA.
.NET allows you to compile ASP code." JSP. "Tighter integration with IIS allows you to better utilize ISAPI." Servlets. "Serialization and persistance." EJB.
Excuse me, when the hell did Sun Microsystems "leave off"? Version 1.4 is coming out the door at any time, with such nice features as buffers and extensive regular expression support, and all of a sudden they've "left off"? Java will run on nearly every system ever created and in all sorts of unusual situations and suddenly Sun dropped the ball?
Look, Java is effing huge. People do write applications in it, and I'm not talking about ticker applets. Today's machines can run Sun's graphics engine as well as they can run GTK, and it's available underneath any OS. Any "work" that Microsoft is doing on the CIL has already been done by Sun, with the exception that MS' byte code executes faster and has better UI support.
But is there any wonder? An implementation of the CIL requires a lot of work on the part of the window management driver authors, meaning there's plenty of room for tuning. An implementation of Swing requires very little -- implement a fiew basic AWT classes and Swing, which is "100% Pure Java," will work atop the older class. Meaning that there has to be a lot more abstract code in Java. Meaning you can be damn sure your application looks the same everywhere and there won't be any glitches due to "factionalied" implementations.
Of course, most of the development world is still coping with the idea that different platforms require different code (hence the laundry lists inside Makefiles). The Java paradigm won't let you do that. It says, "write that shit once and deal with the slow down, it shouldn't be a dealbreaker for cross platform code." It shouldn't be. But it is. Many development houses can't get over this. Hell, I mentioned to our IT guy that I was doing our mailserver in java and he thought I meant an applet, scoffing "Write once, run nowhere."
CIL is an attempt to get under the skin of this, but it's a flawed attempt. Jesus, all the development time and heartache going into the optimization of x-platform windowing "frameworks" and "toolkits" where there already is one seems headstrong. Actually, it seems idiotic, and it's why I seethe whenever I hear somebody drop
"But C sharp has improved garabage collection, language integration and runs anywhere." Yeah, that's Java for you. "But
Jesus, why isn't Sun mopping the floor with these idiots???
Hey freaks: now you're ju
Miguel's experience with .Net seems to mirror my own. It's a very productive environment that's a blast to work in.
.Net on Windows, then having to do some work in any current GUI app dev system on Linux.
.Net, let him prove it, but don't suggest that we have to learn to live with less for political reasons.
Have you ever gotten used to working in a Unix/Linux shell then had to jump over to Windows and do something on the command line in *DOS*? Know what that feels like, that helpless feeling of losing all your magical powers?
That's what it feels like to work in
If RMS thinks he or his minions can design a better architecture than
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Unless that class inherits or calls proprietary library stuff that you don't have.
This is why I can't run most Java stuff on my Amiga. I have the Kaffe JVM, but no AWT. So I can run a program that says "hello world" and even Sun's Java compiler (written in Java) that comes with the JDK. But AWT or Swing apps are right out, because no one has implemented that stuff for my OS.
You're going to have the same problem running Microsoft Office on Linux. Your VM will work perfectly, but the app will want to use stuff that you don't have.
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.