Runtimes and Open Source?
Caoch93 asks: "I recently read the Mono project's rationale and have found it compelling in the way it shows the Mono project as being the result of engineering concerns rather than concerns of siding with Microsoft. One thing that it has strongly bolstered in me is my belief that runtimes which interpret intermediary languages are going to play an increasingly important role in programming in the years to come, and it makes me wonder- should the open source community consider developing its own runtime (ala JVM or CLI) which would thus be totally open to the public? Currently, it seems like the options for a runtime are the JVM, which is still dominated by Sun with respect to its design future, and CLI, which is an ECMA standard but is critical to the Microsoft .NET platform. It would seem to me that having an open source runtime (and languages that compile to it) could be critical to moving with the times, and the freedom from proprietary influences would seem to be important to keeping such a system truly in the interest of its programmers. I don't know...is CLI already achieving this? I an ECMA standard enough, or is an ECMA standard really just codification of proprietary interests. If so, should the open source community consider its own itermediary language runtime...and what would be proper goals for such a project?"
Yeah, that's what I was thinking.
Parrot seems to achieve this goal to a degree. I don't know if the Parrot folk see it as an OS universal runtime and that may hinder it (in this capacity).
As you say, they're planning for multi-language support. I think they're trying to make it Python ready, that right there is two of the major OS languages.
I don't think Parrot will be adopted too quickly though. Look at Apache, 2.0 adoption has been slow due to lack of 3rd party modules. Now think about CPAN - same thing.
One of the big problems cited in the past was that Sun would not certify OS JVMs, without a big fee. In most cases, this is impractical for OS projects that need to spend limited resources on development and infrastructure. I know some have suggested a certification "scholarship" idea, but I don't know if that has gone anywhere. I'm more willing to trust Sun and their long history of promoting open systems, if not open source, but others remain very skeptical.
Rather than invent more VMs, why not just make a compiler that targets whatever platform you need? We'll always need compilers that target a real platform; we'll always need a compiler for each language that we want; a VM is just another platform... in the end the most popular language/platform combinations will have good compilers. Actually trusting a VM for anything non-trivial is bad. You can never be sure how a java program will run on another Java platform. I suspect that the same is/will-be true of C#/CLI/.Net. In the end, supporting a java program on two platforms is as much trouble as supporting a C program on two platforms.
I think it would be much better if Java just compiled to native code
There's a reason that intermediate representations such as JVM, MSIL, and Parrot exist. They act as a base from which the operating environment can recompile the code, optimized for a particular microarchitecture.
and we had FAT binaries
That may have worked for Mac OS 7, where a binary typically had two architectures' code (68020 and PowerPC) code, but for portability beyond the Mac, you need more architectures in the binary, to the point where it's bloated beyond belief. Do you really want to have to compile the same code for Alpha, ARM, Athlon 64, IA32, IA64, MIPS32, MIPS64, PowerPC, SPARC, and UltraSPARC architectures every time you release a milestone build to the public?
and no one would bitch about java being slow.
Java technology on the whole isn't slow. Implementations of the Swing GUI are slow. The Microsoft implementation of Windows.Forms GUI isn't nearly as slow as Swing, which is why the .NET framework seems to "feel faster" than Java technology.
Will I retire or break 10K?