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
miguel
·
· Score: 5, Informative
You do raise an interesting point. Some features are not available to all languages (for example, a LISP closure definition).
But there is a large subset that is. This subset is encapsulated in the Common Language Specification (CLS) which differentiates between:
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:Great reply, but...
by
Glock27
·
· Score: 5, Interesting
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.
Yes, this is a key area where I think de Icaza has a problem. He's clearly planning on implementing Winforms (I checked on the Mono site) and those are not part of the ECMA C#/CLI/CLR spec. Microsoft will not permit those classes to be cloned - its already dropped strong hints about it.
An interesting thing to do would be to write a Java compiler (backend) for the CLR, and try to implement Swing or Eclipse in a Gnome environment...hmmmm. Of course, on the other hand I can just use one of the excellent Java runtimes for Linux, and get better performance. I can still use other languages through JNI (and DirectIO in JDK 1.4).
All that said though, competition is good. Perhaps.Net and Mono will do more to spur Sun to refine Java significantly further.
299,792,458 m/s...not just a good idea, its the law!
-- Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
Alan Cox Says It Best
by
Gryphon
·
· Score: 5, Interesting
Miguel:
> or ourselves. I want to be as compatible as
> possible with the APIs that were published by
> Microsoft.
Alan:
Be assured that the day they decide you are a nuisance the VM will acquire a patented neat feature that kills you off. Just ask the Samba people.
(from Alan's reply to Miguel's message)
Re:Alan Cox Says It Best
by
sab39
·
· Score: 5, Informative
Miguel himself responded to this point:
"There is the issue that we might not be able to keep up (right
now, we dont, as.NET Framework 1.0 is already out there, and we
are, well still underway). Also, theoretically there is the risk
of a given API being unimplementable on Unix.
Even if that is the case, we still win, because we would get
this nice programming environment, that althought might not end up
being 100%.NET Framework compatible, it would still be an
improvement and would still help us move forward. So we can reuse
all the research and development done by Microsoft on these ideas,
and use as much as we can."
This applies just as much to being intentionally broken by Microsoft as it does to them simply outpacing Mono's development.
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.
I hate to be a dick, but.
by
sinserve
·
· Score: 5, Interesting
There is a point in your life when you realize that you have
written enough destructors, and have spent enough time tracking
down a memory leak, and you have spend enough time tracking down
memory corruption, and you have spent enough time using low-level
insecure functions, and you have implemented way too many linked
lists [1]
Last time I felt that way, I dicovered Lisp. Java also fits the bill (and so does C++ with STL, BOOST and ACE.
Re:I hate to be a dick, but.
by
jonabbey
·
· Score: 5, Informative
Of course, with Mono you get all that neat stuff while still being able to code in _whatever_ language(s) you want and have it work transparently and consistently.
Whatever language you like so long as its semantics and runtime behavior have been massaged to work with the CLR.
Really, the CLI/CLR is just like the Jave byte codes and JVM, except that CLR's is a bit less strict about security and in that the CLR's support for 'unmanaged' code allows for cleaner support of native machine code than does Java's JNI interface. It's a convenience thing, much as Visual C++'s helpful COM automation wizards are a convenience thing.
The biggest difference between Java and the.NET framework is that Java's bytecodes and VM are a bit more paranoid about things like security, and that Java is designed with portability as a first order concern..NET code will probably never be as portable as Java, precisely because it is designed to make it super easy to interface with operating system level code. Java is designed to make it a pain to use any code that isn't itself portable.
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.
Re:The moral of the story is...
by
tadas
·
· Score: 5, Funny
...that The Register is nothing more than the IT version of a British tabloid.
I think it's clear that using common bytecode offers some advantages to developers, as outlined by Miguel. It also seems like CLR can offer performance advantages over Java since it basically just maps native API calls to functions in the.NET framework, much like wxWindows or anyGui do for GUIs. If the classes are properly documented, it should be possible to match their functionality on other operating systems.
So what is Microsoft aiming for? Probably two things:
- Kill Java. They need to kill it before it becomes too wide-spread. They have a really good shot at doing so given Java's performance problems [insert thousands of flames from Java developers here] and C#'s advanced features like better encapsulation (you don't need to call set() and get() methods, you can map them to the = operator, for example).
- "Write once, run on Microsoft". In order to run.NET apps on another platform you would have to virtually re-implement (or substitute) the entire Win32 API, which will probably be modified at an ever-increasing pace. No company can keep up -- only open source may be able to do that, but Microsoft's opinion might be that open source is no real threat for the platforms where they want to deploy.NET. (After all, even the average Slashdotter seems to think that Linux will never be ready for the desktop -- quite idiotic, IMHO, but the more people believe that, the better.)
Insofar Ximian's Mono project may be a good thing as it offers a migration path where previously none existed (from Windows to Linux), even if.NET apps don't run properly on Mono (think about all the GUI stuff that can go wrong, for example). Besides, Java has never really been a mature technology IMHO and it's about time to replace it with something better, even if superficially less cross-platform.
Now the advantages of having a modular architecture become clear. Mono cannot break Linux, it cannot break X, it can probably not even break GNOME. There are more alternatives than you can throw a kernel image at if something goes wrong. Let's just wait and see what the Mono guys come up with. The only people who should worry about this are Sun and their followers. And maybe RMS.
Miguel is naive
by
pubjames
·
· Score: 5, Interesting
Miguel's arguments sound all well and good, but I think he is fundamentally naive about Microsoft.
Microsoft have fought tooth and nail over many years to build their monopoly. They will do whatever it takes to protect that, within the boundries of what they can get away with these days.
Some parts of the.NET framework are still vague. Now, why might that be? The naive might think it's because Microsoft still haven't worked some of the details out. As has been stated many times before, Microsoft is betting the farm on.NET. Microsoft are a very competitive company, with one of the most lucrative monopolies in the world. Think about that. Imagine how Microsoft will respond if they start to loose market share, or control over developers, because of Mono.
As long as Mono stays a little project (which it is as far as Microsoft is concerned) then they will play nice. They will be able to point to it and say "Hey, look, even the Open Source people are supporting.NET! That's because it's great technology and these days we're such nice people." But as soon as they feel it's a threat, well...
Don't be naive Miguel. You are implementing a copy of a system still under development the world's largest and most aggressive software monopoly. Think about that.
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.
Re:Advantages of C# over Java
by
bnenning
·
· Score: 5, Informative
Sun proved, when they sued Microsoft, that they don't want Java-the-language being used to generate code to run anywhere but inside Java-the-VM or have direct access to anything but the Java classes.
Not true at all. Look at Apple's Cocoa framework, which allows you to write native Mac OS X applications in Java. Sun has no problem with that, because Mac OS X also includes the 100% compatible pure Java envrionment. Sun sued Microsoft not because MS added features, but because they deliberately introduced incompatibilities in the core Java classes.
-- How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
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."
Not-so-rapid application development
by
nadador
·
· Score: 5, Interesting
Miguel's argument can be boiled down to this: (1) writing big applications sucks because complexity grows geometrically with each line of code, and (2) integrating code written in different languages sucks because complexity grows geometrically with each line of code in either language. Basically, Miguel is fighting the same fight that every software engineer has faced since the beginning of time. Complexity grows much faster than anyone can handle, and as soon as you let heterogeneity into the equation, you're basically screwed.
The only problem that a CLR supposedly solves is the maintanence of the bindings. Instead of binding Gtk to perl and python and ada and C and C++, etc., you bind it in a library in the CLR. Except that to access that new CLR binding, you need to have perl and python and ada and C and C++ compilers that target the CLR, which is certainly a more glamorous job than maintaining bindings for every language under the sun, but is *WAY MORE* complex.
Basically, the CLR is middleware for the desktop. It does nothing to decrease the complexity of the system, it just shifts some of the complexity to another software engineer. Applications get easier to write, but new compilers need to be written and maintained.
When Microsoft's writing the compilers and you're shelling out the cash, you're only responsible for your piece of it - the application. Obviously this is good for you. But the free software community is responsible for all of it, from compilers to run times, to new bindings, to applications. *We* have to do it all. I wonder if Ximian will really benefit from dispatching software engineers to work on Mono when they could be working on the applications. Companies that buy stuff from Microsoft don't have to send software engineers to work on Mono, but free software projects will "lose" engineers because they'll have to work on Mono, not their respective projects.
The challege that software engineers face in the future is constructing systems that actually reduce the complexity of applications, rather than just shift the complexity elsewhere.
--
Outside of a dog, a book is a man's best friend. Inside a dog, its too dark to read.
Re:Sure, and Sun's your best friend? Hardly.
by
Glock27
·
· Score: 5, Informative
Re-read your comment about the evils of Microsoft and apply the same argument to Sun and Java. What is stopping Sun from charging huge fees for J2EE libraries? Nothing. Just because they are not presently doing it does not mean they will not in the future as their hardware revenue dwindles in light of the x86 chip's performance/price ratio.
Sun does charge fees for J2EE. What made you think otherwise? What makes you think Microsoft couldn't charge huge fees for Windows XP server? (Oh yeah they do...)
Remember - it was Sun that renegged on ISO and EMCA standardization - not Microsoft.
Right, except it wasn't "not Microsoft" it was "because of Microsoft".
Sun has always stated it won't opposed clones (including open source clones) of Java, as long as they aren't called "Java". Microsoft's Java escapades were completely different - it licensed Java from Sun then proceeded to release "embrace and extend" enhancements.
Sun's "Java Community Process" is a complete sham and everybody knows it. Sun's vote is the only one that matters.
This ignorant statement simply shows that you have no clue about the JCP. Do a little research.
Why are you posting anonymously anyhow...?;-)
299,792,458 m/s...not just a good idea, its the law!
-- Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
I forgot something at the end
by
miguel
·
· Score: 5, Funny
I forgot to add this to my posting:
DEVELOPERS DEVELOPERS DEVELOPERS!
(Slashdot forced me to put more text than the three words, lame)
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.
Miguel:
> or ourselves. I want to be as compatible as
> possible with the APIs that were published by
> Microsoft.
Alan:
Be assured that the day they decide you are a nuisance the VM will acquire a patented neat feature that kills you off. Just ask the Samba people.
(from Alan's reply to Miguel's message)
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.
There is a point in your life when you realize that you have written enough destructors, and have spent enough time tracking down a memory leak, and you have spend enough time tracking down memory corruption, and you have spent enough time using low-level insecure functions, and you have implemented way too many linked lists [1]
Last time I felt that way, I dicovered Lisp. Java also fits the bill (and so does C++ with STL, BOOST and ACE.
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
Kinda like Slashdot...
This page accidentally left blank
So what is Microsoft aiming for? Probably two things:
- Kill Java. They need to kill it before it becomes too wide-spread. They have a really good shot at doing so given Java's performance problems [insert thousands of flames from Java developers here] and C#'s advanced features like better encapsulation (you don't need to call set() and get() methods, you can map them to the = operator, for example).
- "Write once, run on Microsoft". In order to run .NET apps on another platform you would have to virtually re-implement (or substitute) the entire Win32 API, which will probably be modified at an ever-increasing pace. No company can keep up -- only open source may be able to do that, but Microsoft's opinion might be that open source is no real threat for the platforms where they want to deploy .NET. (After all, even the average Slashdotter seems to think that Linux will never be ready for the desktop -- quite idiotic, IMHO, but the more people believe that, the better.)
Insofar Ximian's Mono project may be a good thing as it offers a migration path where previously none existed (from Windows to Linux), even if .NET apps don't run properly on Mono (think about all the GUI stuff that can go wrong, for example). Besides, Java has never really been a mature technology IMHO and it's about time to replace it with something better, even if superficially less cross-platform.
Now the advantages of having a modular architecture become clear. Mono cannot break Linux, it cannot break X, it can probably not even break GNOME. There are more alternatives than you can throw a kernel image at if something goes wrong. Let's just wait and see what the Mono guys come up with. The only people who should worry about this are Sun and their followers. And maybe RMS.
Miguel's arguments sound all well and good, but I think he is fundamentally naive about Microsoft.
.NET framework are still vague. Now, why might that be? The naive might think it's because Microsoft still haven't worked some of the details out. As has been stated many times before, Microsoft is betting the farm on .NET. Microsoft are a very competitive company, with one of the most lucrative monopolies in the world. Think about that. Imagine how Microsoft will respond if they start to loose market share, or control over developers, because of Mono.
.NET! That's because it's great technology and these days we're such nice people." But as soon as they feel it's a threat, well...
Microsoft have fought tooth and nail over many years to build their monopoly. They will do whatever it takes to protect that, within the boundries of what they can get away with these days.
Some parts of the
As long as Mono stays a little project (which it is as far as Microsoft is concerned) then they will play nice. They will be able to point to it and say "Hey, look, even the Open Source people are supporting
Don't be naive Miguel. You are implementing a copy of a system still under development the world's largest and most aggressive software monopoly. Think about that.
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
Not true at all. Look at Apple's Cocoa framework, which allows you to write native Mac OS X applications in Java. Sun has no problem with that, because Mac OS X also includes the 100% compatible pure Java envrionment. Sun sued Microsoft not because MS added features, but because they deliberately introduced incompatibilities in the core Java classes.
How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
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."
Miguel's argument can be boiled down to this: (1) writing big applications sucks because complexity grows geometrically with each line of code, and (2) integrating code written in different languages sucks because complexity grows geometrically with each line of code in either language. Basically, Miguel is fighting the same fight that every software engineer has faced since the beginning of time. Complexity grows much faster than anyone can handle, and as soon as you let heterogeneity into the equation, you're basically screwed.
The only problem that a CLR supposedly solves is the maintanence of the bindings. Instead of binding Gtk to perl and python and ada and C and C++, etc., you bind it in a library in the CLR. Except that to access that new CLR binding, you need to have perl and python and ada and C and C++ compilers that target the CLR, which is certainly a more glamorous job than maintaining bindings for every language under the sun, but is *WAY MORE* complex.
Basically, the CLR is middleware for the desktop. It does nothing to decrease the complexity of the system, it just shifts some of the complexity to another software engineer. Applications get easier to write, but new compilers need to be written and maintained.
When Microsoft's writing the compilers and you're shelling out the cash, you're only responsible for your piece of it - the application. Obviously this is good for you. But the free software community is responsible for all of it, from compilers to run times, to new bindings, to applications. *We* have to do it all. I wonder if Ximian will really benefit from dispatching software engineers to work on Mono when they could be working on the applications. Companies that buy stuff from Microsoft don't have to send software engineers to work on Mono, but free software projects will "lose" engineers because they'll have to work on Mono, not their respective projects.
The challege that software engineers face in the future is constructing systems that actually reduce the complexity of applications, rather than just shift the complexity elsewhere.
Outside of a dog, a book is a man's best friend. Inside a dog, its too dark to read.
Sun does charge fees for J2EE. What made you think otherwise? What makes you think Microsoft couldn't charge huge fees for Windows XP server? (Oh yeah they do...)
Remember - it was Sun that renegged on ISO and EMCA standardization - not Microsoft.
Right, except it wasn't "not Microsoft" it was "because of Microsoft".
Sun has always stated it won't opposed clones (including open source clones) of Java, as long as they aren't called "Java". Microsoft's Java escapades were completely different - it licensed Java from Sun then proceeded to release "embrace and extend" enhancements.
Sun's "Java Community Process" is a complete sham and everybody knows it. Sun's vote is the only one that matters.
This ignorant statement simply shows that you have no clue about the JCP. Do a little research.
Why are you posting anonymously anyhow...? ;-)
299,792,458 m/s...not just a good idea, its the law!
Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
I forgot to add this to my posting:
DEVELOPERS DEVELOPERS DEVELOPERS!
(Slashdot forced me to put more text than the three words, lame)
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.