This was a letter I recently wrote to Sun’s head of global communications, Russ Castronovo, after reading his interview with Chuck Talk on orangecrate.com, and then reading the ongoing pro-/anti-Mono arguments over at PlanetGnome. Now that Sun seems to be on the brink of making the decision to open-source Java (or not to), I thought it would be an appropriate time to take action.
Editorial Notice: All opinions are those of the author and not necessarily those of osnews.com
Subj: A case for open-sourcing Java
Date: 6/4/2004 11:58:25 PM Eastern Daylight Time
From: Michael Klein
To: Russ CastronovoHi,
I recently read your interview with Chuck Talk on OrangeCrate.com, and I must say I was impressed. He asked some very tough questions, and you answered with aplomb.
I’m writing to you, based on my own personal beliefs, to make a case for open-sourcing Java. That case is relatively simple: If you don’t open-source Java, Microsoft will have the upper hand in both Windows and Linux software. That’s because right now, Mono is allowing developers to write for .NET and Linux simultaneously. I’m not sure how closely you or Sun has been following the debate (I would hope very closely, considering the vested interest in Linux and OpenOffice that Sun has), but basically it comes down to whether to use .NET or Java as the next-generation infrastructure of Linux’s Gnome desktop environment (as well as core applications and eventually KDE as well). If the Ximian team has their way, Microsoft’s .NET will win out, and regardless of whether Microsoft ends up charging licensing fees, they will hold control over Linux’s next-generation development platform.
But all this is still not irreversable. Havoc Pennington said it first I believe, and it’s still viable: use Java instead. The problem there is that, for the moment, .NET (as illogical as this may sound) is seen as more open that Java, because Microsoft has submitted various API’s for standardization. If Java were open-sourced, I have very little doubt that the entire Linux and open-source community would back it as THE successor to C and C++ as the building blocks of the Linux desktop, and Mono and .NET would drop by the wayside, to be remembered only as a bad dream.
I also feel that the continued standardization of Java is not at issue. Given the appropriate standardization committies, simply occuring outside of the corporate ownership construct, I see no reason why the GPL couldn’t prove just as useful to Java as it has proven to Linux in general. Just because Linux distributions have some incompatibilities that relate to package management (ie RPM vs Debian) and desktop environments (ie KDE vs Gnome), does not mean such problems will affect Java (after all, the Java VM doesn’t just not care what DE you’re using, it doesn’t care what OS or CPU either!) I’d like to think that standardization might even be helped by open-sourcing, because the tools to test one’s application would be free for anyone to use.
The set-up is perfect now. Mono is not fully out the door, and the collection of applications written for it is still small. Sun has already rewritten OpenOffice in Java, from what I hear. Why not stop .NET in its tracks right now, before it spreads any further?
Even if Sun eventually drops its Linux strategy (and quite frankly, Sun has all but spelled this out to the press), Solaris would still be losing out on all of the free software (one obvious example being Evolution) that would have been made using Mono. Or, even worse, this software would be included, but Microsoft would have to be payed for the licensing!
Please take this case into consideration. Otherwise, I fear MS technology will infiltrate its way into even the purest MS-free zone, the Gnome DE, along with applications such as Evolution, which are useful for all Unix-based OS’s.
Sincerely yours,
Michael Klein
About the Author:
Michael Klein is a computer science student at Earlham College in Indiana, USA. Reading OSNews is one of his greatest addictions. Occasionally he appends his opinions to out-of-date articles under the moniker Moochman.
It seems Sun agrees with you:
http://www.zdnet.com.au/news/software/0,2000061733,39149502,00.htm
personally I’d settle for allowing others to distribute their VM. Would be easier than downloading it from their site.
Not according to this article:
http://www.nwfusion.com/news/2004/0604sunnode.html
I agree with you 100% that more mirrors are needed. Downloading the Java VM from Sun’s site is like watching paint dry….
Why ask for SUN to open-source Java while the Java sounce has been avaible for quite a while? In order to use Java on FreeBSD you have to download the JDK source, apply some patches and compile it yourself. What am I missing?
> What am I missing?
The fact that its license is restricting and it doesn’t even allow porting/patching without authorization (I know that some Be devs had to talk to Sun just to get the ok to start porting Java to BeOS). FreeBSD got authorization to do the port AFAIK.
Sun doesn’t want to make Java open source for fear of many different incompatible versions of java being released. Its write-once-etc claims will be useless. Sun wants to retain control to ensure that Java remains a unified “standard” in the sense that java programs can run on any platform that has a JVM available. The JVM specifications are available and anyone can write their own JVM if they choose (see Blackdown, etc). Remember when MS tried to release a modified version of Java for windows. As soon as Java is released under a GPL-like license, developers will decide to fork the language to add “features” that will make these different implementations incompatible.
The .NET mono situation is exactly what they want to avoid. Mono has two incompatible stacks available, a MS compliant and a linux only stack of APIS. Plus, there is the another .Net implementation supported by GNU I believe that is not compatiable with either of the Mono stacks. The standards for .NET do not include most of the MS .NET libraries, so those are not standardized in any sense, so now we have a growing divide between the different .NET implementations.
did you even stop to think about sun’s interests ?
You only considered your own/the community’s interest….
You have to balance what they gain by open-sourcing Java to what they lose if you want to make a real case.
Sun isn’t scared of forks, they’re scared of losing money and patents. Fork is just a cop-out.
That being said I don’t blame them.
Well, I’m too tired repeating all the arguments that are in favor of an OpenSource Java over and over…
So I’ve put them together in an text on my blog:
The Open Source Java FAQ: http://www.jroller.com/page/murphee/20040426
I think you are correct on all counts.
The fact is that Sun wants to keep control of Java for strategic reasons. Plus the fact that open-sourcing Java will not bring any additional revenue (and would create a risk of losing some).
In this light I see their contradictory statements about open-sourcing Java as bad management: it confuses users and hurts Sun’s image. It shows that Sun has lost its sense of direction.
In this light I see their contradictory statements about open-sourcing Java as bad management: it confuses users and hurts Sun’s image. It shows that Sun has lost its sense of direction.
Unfortunatly, this does not only hold for the Java-OpenSource question but also for Solaris x86 and Linux support, jumping from “Yes” to “No” to “Don’t know” and back to “Yes”.
I wouldn’t buy Sun shares.
the discussion at PlanetGnome is about to ingrate Mono or Java as part of Gnome, I don’t think somebody would like to have Java as part as Gnome, technically Java is simply not good enough. In case somebody didn’t notice, some of Microsofts best engineers like Anders Heilsberg were part of the VJ++ Team and the COM+ team before they designed the .NET platform, they did a *amazing* job in addressing the problems of Java, C++, COM+, VB6 etc. Technically Java is flawed compared to .NET, before you disagree please read here
http://msdn.microsoft.com/vcsharp/homepageheadlines/hejlsberg/defau…
People who need a managed environment but want nothing to do with microsoft will use java. What else should they use?
People (like me) who like .NET will use mono. I would not use java unless somebody paid me a lot of money for it. I already turned down a java-related job because I think the language just sucks for many problem domains.
I think that .NET has gained so much momentum that sooner or later linux developers will have to use it or become totally irrelevant. And no, I don’t mean C# exclusively. But take a look at the very interesting new languages like nemerle.
That said, it would be in SUNs best interest to open source java. An incompatible fork will not happen because it would be useless for the huge amount of existing java code. How many different forks are there for python, perl, php? If the fork doomsayers were right, there would be hundreds of different incopatible forks of all these languages.
The real issue is that java is an asset that SUN does not want to lose control over, but having java in the control of a company that is probably going the way of SCO in a few years gives some people the creeps.
“The real issue is that java is an asset that SUN does not want to lose control over, but having java in the control of a company that is probably going the way of SCO in a few years gives some people the creeps.”
I don’t have a crystal ball, so I can’t say SCO is going to disappear (although I wish they would), and even less Sun.
But I don’t see how open-sourcing Java would diminish Sun’s risk and/or the risk for its users, compared to the present licensing situation.
In fact, I think it’s strange to see Sun employees spreading FUD (or at least the U in FUD) about one of their top strategic technologies.
But after all it may be just plain and simple incompetence.
But the thing is, a freely modifiable and forkable version of Java will happen — with or without Sun’s blessing. There are already several open source JVMs and GNU Classpath is working on the class library. If Sun had opened Java, these projects could have started with Sun’s code and put their efforts on enhancing Java, instead of spending all their time and effort on reimplementing what Sun already has done.
In fact, the risk for incompatibilites is much greater because of Sun’s restrictive license. If Sun had opened Java there might have been incompatible forks; how is having a completely independent (and forkable) implementation any better?
Also, reimplementing everything from scratch instead of using Sun’s code as a starting point increases the risk of subtle incompatibilities.
“Also, reimplementing everything from scratch instead of using Sun’s code as a starting point increases the risk of subtle incompatibilities.”
Sun doesn’t want you, as a user, to reimplement anything from scratch. They want you to use their version of Java.
Suppose I am at the decision-making stage of $10 million software project to reimplement a corporate payroll in Java. The thing is going to run on Sun hardware because that’s what we have been using and we are happy with it.
Which one do you think I’ll choose, Sun’s Java or any other Java, whether open-sourced and freely forkable or not, enhanced or not?
The present licensing of Sun’s Java may not suit some people, but for most users it is acceptable.
Before Sun goes ahead with it, they should seriously ask themselves “Will Sun Microsystems benefit financially if Java ™ becomes GNU open source?” Will there be any benefits? I think open sourecing Java is a bad idea as Sun may very easily lose control of their technology as more and more companies and individuals will dig into the source code and release their own versions of Java. Linux is a proven concept that works but Sun should be very careful with Java because it may turn out that “other” companies that will modify Java will be profitiring while Sun will gain nothing.
I’m really fed up of reading the amazingly ignorant blatherings of people who know nothing about Java!
I wish Sun would just announce that, tough beans open sourceys, Java won’t be open sourced ever, and then the open source whiners could sod off and use mono exclusively and stop moaning.
It’s the attitude of entitlement that gets to me. This, “we have a right to Java!” attitude. The open source “community” doesn’t seem to actually write code anymore; it just threatens and whines at companies to release code for them.
It is all based on the highly questionable assumption that open sourced code is necessarily better than closed source, both in terms of technical quality and politically. This is a highly, highly questionable assumption of course. In fact, it seems to be directly contradicted by reality: the best unixes are closed source, the best office suites, the best databases and application servers and compilers and IDEs, yup, all closed source. Strange huh?
For me Java is less about “Sun’s control” than about the control of the JCP, an entirely open organisation that decides and implements the future of Java. For all practical purposes, for me Java is a lot more open than .NET because it is much more of an industry standard, has far more open APIs, and is the product of the deliberations and efforts of the entire Java community. Gosh.
I don’t want to see an open sourced Java that is there to be split and forked like crazy by Microsoft (again), by IBM (who would if they could get away with it, like a shot, starting by implementing that awfulness SWT) and by various members of the open source community.
I really don’t give two hoots about Gnome. Nor do most sensible Java developers (assuming they have even heard about bloody Gnome, in common with most people). If Gnome wants a Garbage Collected language with tons of hooks into their product, well tough, Java isn’t it, so stop trying to exert pressure to get something you have no right to, and either write your own, or use mono (and probably split your project and make a mockery of its founding principles, to avoid encumbered commercial libraries) or, gosh, write something yourself. What happens to Gnome is so utterly minor and of no importance to the future of Java or .NET, that nobody gives a shit but the most reality-denying zealots.
It’s not that I dislike .NET, even. It’s not for me, it will probably be very good for small-to-medium businesses when people finally start adopting it, but that has always been MS’s stronghold. It is certainly lacking for the largescale, Enterprise stuff, but so what. .NET and Java really have entirely different domains.
Still, it is amusing how many .NET people seem to hate Java. I can’t imagine why, .NET is such a clone of Java in many ways (I am not saying there is anything wrong with being a clone) that it is truly difficult how you can hate one technology and adore another, if not for entirely political reasons.
Meanwhile, Java is one of the most popular platforms today. IBM. Sun,, BEA, and Oracle all use it in their core strategies, and make billions from it. There are millions of Java programmers employed right now. Java job openings in the press have been increasing at a rate much greater than that of C# for the last year, and are sky high above them in terms of absolute level, despite that .NET has supposedly begun adoption. Java is going from strength to strength, with many og the Industry’s most powerful players fully behind it. Fact is, it isn’t going away any time soon.
My point in saying the above is that you open sourceys can pull out all the nonsense you like, about Sun “choosing control” when it is the JCP that decides, a very open body, about Java needing to be open sourced or it will die (??? – bizarre), and any other amount of rubbish. Whining and throwing tantrums doesn’t make any difference to Java, because Java is bigger than the world of Open Source.
Need to say more ?
Yes I need to say More
Free as in Free Speech.
“It’s the attitude of entitlement that gets to me. This, “we have a right to Java!” attitude. The open source “community” doesn’t seem to actually write code anymore; it just threatens and whines at companies to release code for them.”
Come on, be serious. Just because the open source community has an obsession with demanding Java be open sourced, doesn’t mean they
“It is all based on the highly questionable assumption that open sourced code is necessarily better than closed source, both in terms of technical quality and politically. This is a highly, highly questionable assumption of course. In fact, it seems to be directly contradicted by reality: the best unixes are closed source, the best office suites, the best databases and application servers and compilers and IDEs, yup, all closed source. Strange huh?”
Some do make this assumption, but there are other factors in the quality of the code, namely the age of the applications. Here’s a few:
Unix: Solaris: better in high-end servers, and also built on a much older codebase than Linux, with far more development dollars put into it over time. Of course its currently better.
Office Suites: Microsoft Office: once again, Office is far older than any of the other office suites on the market, with Microsoft’s development dollars behind it. Of course its going to be better.
Databases: Oracle: Once again, time and dollars.
Application Servers: As most of the app servers are of a relatively similar age, its probably just the dollars that make the difference.
As far as I can see, its not the closed-sourcedness of these apps that make the difference, its the time and money that has been invested in them to make them great products. The whole open/closed source argument is a load of rubbish – either method can produce code of equal quality of the other, given the same amount of time and dollars. The commerical apps usually edge out, because they have the financial backing. Plain and simple.
For me Java is less about “Sun’s control” than about the control of the JCP, an entirely open organisation that decides and implements the future of Java. For all practical purposes, for me Java is a lot more open than .NET because it is much more of an industry standard, has far more open APIs, and is the product of the deliberations and efforts of the entire Java community. Gosh.
“I don’t want to see an open sourced Java that is there to be split and forked like crazy by Microsoft (again), by IBM (who would if they could get away with it, like a shot, starting by implementing that awfulness SWT) and by various members of the open source community.”
Just because you’re a sun fanboy, dont
It’s not that I dislike .NET, even. It’s not for me, it will probably be very good for small-to-medium businesses when people finally start adopting it, but that has always been MS’s stronghold. It is certainly lacking for the largescale, Enterprise stuff, but so what. .NET and Java really have entirely different domains.
“Still, it is amusing how many .NET people seem to hate Java. I can’t imagine why, .NET is such a clone of Java in many ways (I am not saying there is anything wrong with being a clone) that it is truly difficult how you can hate one technology and adore another, if not for entirely political reasons.”
They are similar, but there are some pretty key differences between them. One is Sun’s “do it our way, or don’t do it at all” attitude. The Java language and Swing are two great examples of this. Only after some serious competition popped up has Sun started making the long-overdue language upgrades (foreach statement, generics, etc). Swing has seen virtually no enhancement since its introduction, and is still a pretty awful API to write code with (and that’s not even mentioning its attrocious visuals on every single platform I’ve ever run it on – looking like other Java apps isn’t good enough – your app has to look identical to a platform’s standard applications to be good enough). There are plenty of other things which are better implemented in .NET than Java – .NET remoting for instance is far more flexible than RMI, and in a lot of ways easier to code for. And that’s just the tip of the iceburg.
“Meanwhile, Java is one of the most popular platforms today. IBM. Sun,, BEA, and Oracle all use it in their core strategies, and make billions from it. There are millions of Java programmers employed right now. Java job openings in the press have been increasing at a rate much greater than that of C# for the last year, and are sky high above them in terms of absolute level, despite that .NET has supposedly begun adoption. Java is going from strength to strength, with many og the Industry’s most powerful players fully behind it. Fact is, it isn’t going away any time soon.”
Remember, Java didn’t get to where it is overnight. Java’s been around for nearly 10 years now, .NET’s well under half that. .NET’s only had two public releases, Java’s about to hit its fifth. Also, .NET’s entering a market that already has a dominant player in it, namely Java. Its amazing that it’s got as far as it has in such a short period of time, against such strong competition.
.NET has gotten as far as it has in such a short period of time because it comes with a single marketing/business message. We know what Microsoft is about, we know their angle.
Sun on the other hand has stock which is in the doldrums, is looking to hang on to Java for revenue and woo the market/investors at the same time, and obviously the left hand doesn’t know what the right hand is doing. They also see how far Microsoft has come, and they look at others such as IBM pushing into the Linux front. There is no way that they can not be apprehensive about what IBM or others will do with Java if it is opensourced. Someone may become a bigger evangelist than they are – and in that space, he with the most money wins.
The contradicting statements tell me that either they don’t have their act together (anywhere else these folks releasing statements that contradict each other would be fired just due to the damage this can do to reputation and investor interest), or they have not figured out a strategy of how to opensource Java and make money at the same time.
They are operating in amputated chicken head mode, and I’ve seen this a number of times. The only thing you can be sure of is that they will in the end more than likely make a stupid decision (although I’m sure Java supporters will spin it – much like the open letter calls Java the successor to C/C++ (pfft)) that will damage the community (if the wish is 100% opensourcing of Java, which it at present appears to be). We’ve already seen the contradicting press statements, this is only the beginning.
Hmm, just a few questions that haven’t really been answered.
I’m a java developer, what do I get out of an open sourced Java? I run FreeBSD and use eclipse on many different operating systems. My apps work on many platforms. What are my benefits of an open sourced Java?
Sun is a company, they make money. What do they get out of an open source Java? Just losing the Sun and Java go together in one sentence as Intel and Windows. What does Sun get out of it if someone in ten years says “oh yeah, once upon a time Sun invented Java”.
What does the Linux community get out of it? Java works as is right now. We can all write Java apps right now. But it would be political win for Linux is it was opensourced.
Ack, I’m ranting and scratching my head at all this stuff, I’m going back to coding….hare bra.
It doesn’t matter whether Sun makes its Java libraries Free software or not.
What matters is if Sun embraces the Free software community or not. They need to say, “You GNU guys & gals are doing a great job with GCJ/Kaffe/Classpath. We want you to succeed. We want to see Java used with GNOME.”
They need to blatantly advertise the details of how their Java patents can be used Freely with GNU GPL’d software. Embrace friendly competition with the Free software community.
If they did that — and Eben Moglen & RMS were satisfied — it would be the beginning of the end for .NET and we’d see Java in GNOME.
> Technically Java is flawed compared to .NET, before you
> disagree please read here.
Actually, you want to compare apples to apples, so you can compare Java to C# or “J2EE/J2ME/Open Source for Java/Proprietary frameworks for Java” to “.NET/Open Source for .NET/Proprietary frameworks for .NET”.
Since you’re talking about technical flaws in Java, I’m assuming that you’re not talking about “J2EE/….” versus “.NET/….”.
The Java philosophy (and the Python/PHP philosphy) is really just a refinement of the “Spirit of C” (See ISO/ANSI standard for description). Two key ideas things that pervade Java is “Keep the language small and simple.” and “Provide only one way to do an operation.”.
Another insight from C is that the library is far more important than the language, so Java (and Python/PHP) want to make learning the language simple so you can focus on using the library to make your life easy. “Write Once Run Anywhere” is core to building up a big library since it allows you to build up libraries that come from different platforms. Both C and Visual Basic are really poor languages compared to the alternatives. However, they had an enormous number of libraries so people were extremely productive. VB’s libraries were so big because Microsoft made VB core to Windows. C had a huge library because C was core to Unix and POSIX and the libraries became more prevalent because of Unix’s “Write Once Compile Anywhere (with a bit of tweaking)”.
C#, OTOH, follows C++’s philosphy (and Perl’s philosophy) which is “It’s more important to make the language as powerful as possible than to have a lot of libraries. More doodads and syntactic sugar in the language cause more problems and more ambiguities and make the language harder to learn, but people are smart enough to limit themselves to the safe subset of the language that makes them the most productive”.
I used to be very strongly in favour of the C++ swiss army-knife approach and was informally involved with the C++ standardization. I believe I have guru-level knowledge of C++. So what changed my opinion? Other people. It doesn’t matter if it’s trivial maintain and extend your own code indefinately. It doesn’t matter how productive you are on your own. The simple fact is in the working world, you will be maintaining other people’s code and you will be writing code that will be maintained by others. You will collaborate with others. If they don’t understand the language as well as you do, you have two choices — dumb down your programming style or spend (unpaid) time teaching them more about the language. I tried the mentoring route for a while, but the simple fact of the matter is, most people seem to be too busy to be mentored for longer than a few hours every few months. If you try to do anything advanced, it will cause your team mates problems because they won’t understand (or worse, misunderstand) what the language features do. They can seriously butcher your code and make it unmaintainable.
The team members who are keen on learning (on their own or through being mentored) and make the time tend to overapply what they’ve learned. They use a feature of the language just because it’s ‘cool’ or because they want to show off. This doodad-syndrome results in very unmaintainable and fragile code that even they can no longer maintain. Have you every tried to maintain bad C++? It can get really ugly (…especially on MS Windows. Have you seen C++ for .NET? There’s no way I’ll ever maintain someone’s C++ for .NET code.).
So from my experience, when you’re involved in teams, the best approach is to pick a good simple language with an adequate library that gives you room to grow and makes good design simple. It may sound bland and unsexy, but the teams I’ve been on have been most productive by using this simple rule. Java fits the bill most of the time. Python does also. PHP (with Fusebox) does also (if your team has Java or Python or good C++ experience or experience with some other OO language. There are no real gotchas in the language if you enable strict error checking, so it’s possible to focus on simplicity of design — which is much easier to enforce in a team with at least some minimal OO skills. If you don’t have such a team, team-wise PHP coding can be a nightmare).
A very restricted subset of C#/C++ should also fit the bill, but without a way of enforcing the subset what tends to happen (in my experience) is that that subset gets larger and larger (because of something we have to do one time—“Honest”) until you end up with a mess.
Please clarify why you “fear” MS Technology filtrating into Linux. If the technology were enencumbered (and that hasn’t been established yet), don’t you think it would be able to stand on its merits. I’ve read much about .NET, it’s goals, methods and implementation and it all sounds technically sound. Please clarify what it exactly it is you fear.
They are similar, but there are some pretty key differences between them. One is Sun’s “do it our way, or don’t do it at all” attitude. The Java language and Swing are two great examples of this. Only after some serious competition popped up has Sun started making the long-overdue language upgrades (foreach statement, generics, etc). Swing has seen virtually no enhancement since its introduction, and is still a pretty awful API to write code with (and that’s not even mentioning its attrocious visuals on every single platform I’ve ever run it on – looking like other Java apps isn’t good enough – your app has to look identical to a platform’s standard applications to be good enough). There are plenty of other things which are better implemented in .NET than Java – .NET remoting for instance is far more flexible than RMI, and in a lot of ways easier to code for. And that’s just the tip of the iceburg.
Sun follows the JCP just like everybody involved in the JCP does. IF features in Java are include the JCP makes decisions on what and when these go into Java. Swing was mainly driven by IBM, they wanted the cross-platform GUI toolkit over AWT. Now that Swing didn’t trun out as they hoped they going back to the original AWT roots with SWT.
The whole Open Source Java movement was inistigated by IBM and the Open source comunity just ran with it. IBM, incase you haven’t noticed has been obsessed with “eclipsing” Sun. Thier product directly related to Java is called Eclipse, thier Power 6 project is called eclipz. The underlying message is clear, IBM with it’s sugar coated Open Letter is sending an implicit message that Sun’s control of Java is preventing them from taking over.
The problem with most of the “open source” community is that they have “software envy”. They do not really innovate new solutions to problems., they just copy. Was Mono really neccessary? Please! The time these whiners spent trying to duplicate .Net on Linux, they could have spent getting the UI fixed (it currently sucks donkey xxxx). I swear, these guys are just like real ghetto!
Please don’t confuse Open-source and Free Software. Java is already Open-source. You can see the source code. But it is not Free Software.
We should be asking for Java to be made Free Software (www.gnu.org)
is that the free/open source mouvement is much more important thing that Java.
So Sun should seize the occasion which is offered to team up with the free software community. It is better for them (and for evrybody) to be with us that against us because, in the end, open source WILL prevail.
Java is just a language and open source will do with or without it.
“That said, it would be in SUNs best interest to open source java. An incompatible fork will not happen because it would be useless for the huge amount of existing java code. How many different forks are there for python, perl, php? If the fork doomsayers were right, there would be hundreds of different incopatible forks of all these languages.”
That’s because python it’s not called Perl-made-better, but Python. There are lot’s of new languages that are forks of others, but use new names.
A tale of parallel dimensions!
Dimension one:
“Hrm. The code in this Swing class is kinda buggy. If I just do this…”
*an hour or two of code tweaking passes*
“There! Now its about 25% faster. Not bad, but at least my cursor doesn’t lag anymore. ”
“Hm, now what? Shoot… I can’t redistribute the modifications, but I can submit them to the JCP as a patch.”
*six months pass, the patch is accepted and rolled into the next Java distribution*
“…well, I only had to wait six months.”
Dimension two, divering from dimension one after the hacking effort by one lone, rebel coder with a cause:
“Well, this is pretty good. Let me host the library on my webserver and see if any projects want to include it.”
GNU Classpath, working off of derived libraries from Sun (because they are free to do so now), scratches their chin, nodes, and assimilates the modified library into The Collective. Now they have a faster Swing implementation. GUI applications for Java suck a little less, suddenly. They ensure the library can be used as a drop-in replacement (and it can!), then they add it to their next minor point release a week or two later, though nothing stops people from just downloading the library and plunking it into their Java distro of choice by hand.
Dimension three, occuring after submission of the patch or library to one of the open source Java efforts:
A GNU Classpath maintainer: “Hrm, this patch is good but it breaks some things. I’ll go in and fix them then once I’m sure its API-compatiable, drop it into the main trunk.”
Why make bother improvements if you can’t distribute them?
What I fear is that .NET is encumbered. Although Microsoft may let us get away with it now, sometime in the future there will probably be a court battle, and the winner is up for grabs. Worst-case scenario, the big Linux distros will have to either pay Microsoft royalties, or rewrite a bunch of applications from scratch (because Mono will have become so prevalent).
Don’t get me wrong, the technology’s great. It’s the fuzziness of Microsoft’s legal standing that gets me.
I don’t see many new arguments but i do recognize a new element: GNOME. SUN is supporting GNOME with developers (from SUN UK) so this does more to them than something which is far away remotely related to SUN somehow.
It also reminds be about ESR’s letter. ESR wrote: “Let Java go” as his title. This is different than SUN open-sourcing or free softwaring Java. Their Sun Java.
The point is, when Sun would support a Java implementation directly with a few developers, allow ie. Blackdown to be open-sourced and still called Java, or freeing the Java _trademark_ the possibility these would be included in a Linux distribution and GNOME using that one are increased hence SUN’s name increases as well.
The problem isn’t with SUN’s license of SUN Java, the problem lies in the trademark.
What about Blackdown. Would the developers behind Blackdown allow their version to be ie. GPLed when SUN would agree with that?
I have rather a language feature more then one less. Where do you think is .NET over the top? The following things I wouldn’t want to miss: enums, anonymous methods (iirc called closures in other languages), delegates, value types, attributes and reflection (fundamental and ubiquitously in the .NET architecture, libraries and way of coding), generics that are not only a compiler hack, versioning. There is probably more were Java is weak in contrast to .NET like the IDE and the library is way better I think. I must admit I don’t know more about Java than the things I was reading on osnews, probably Java has strengthens I’m totally ignorant about so please excuse my .NET enthusiasm
Nonsense. All of Java is free as free orange juice (sorry folks, I don’t drink alcohol).
I hope people have the patience to wait for either dotGNU or D to be finished. Seems that either one would be a superior choice, being free of the pitfalls of Java or Mono.
Or Parrot: http://www.parrotcode.org
Or one of the many Open && Free alternatives http://joeq.sourceforge.net/other_os_java.htm
…fly when you can walk?
Why did the author address this “open letter” to Sun only? Plenty of other vendors have Java stuff like IBM, BEA, Borland, etc. Why doesn’t he send the letter to them and ask them to open source Java [sic].
@zerblat:
“If Sun had opened Java, these projects could have started with Sun’s code and put their efforts on enhancing Java, instead of spending all their time and effort on reimplementing what Sun already has done.”
The beauty of object orientated programming is that other people can write new objects which override/hide existing objects. If people want to enhance Java, they can subclass existing code. No reimplementation needed.
“Also, reimplementing everything from scratch instead of using Sun’s code as a starting point increases the risk of subtle incompatibilities.”
…which should be caught by the Java test suite or else it would be considered incompatible.
@Shapeshifter:
“Dimension one:
“Hrm. The code in this Swing class is kinda buggy. If I just do this…”
*an hour or two of code tweaking passes*
“There! Now its about 25% faster. Not bad, but at least my cursor doesn’t lag anymore. ”
“Hm, now what? Shoot… I can’t redistribute the modifications, but I can submit them to the JCP as a patch.”
*six months pass, the patch is accepted and rolled into the next Java distribution*
“…well, I only had to wait six months.” “
Technically you’re not even allowed to tweak existing code. Not unless if you wrote an entirely new class that replaces the existing class. Then you can have the new class subclass the old class and then through polymorphism, use it to replace the old class in your java application. That you can distribute freely. I personally have been doing this with many Swing objects (JList, JTextArea, etc.) by writting my own implementation that subclasses them and then slip them into my existing code.
I personally have been doing this with many Swing objects (JList, JTextArea, etc.) by writting my own implementation that subclasses them and then slip them into my existing code.
The problem is that other applications don’t benefit from this, which sucks, unless everyone uses your subclassed objects. ;( Why go to all that effort if there’s only a few bugs in the class? Why not just fix the bug and submit a patch for it, end of story? ‘Cuz yah can’t.
“Why did the author address this “open letter” to Sun only? Plenty of other vendors have Java stuff like IBM, BEA, Borland, etc. Why doesn’t he send the letter to them and ask them to open source Java [sic].”
That’s an interesting question. It can only have to do with the trademark or the quality of SUN’s Java versions versus the others. Otherwise it’s some kind of bull. Wasn’t it IBM who asked SUN to open-source Java after ESR send his open letter to the I-World?
I know I run the risk of getting this reported as “abuse”; I really don’t mean it as such. But would it have killed the author to have used a spellchecker before sending this letter? Or have someone go through it and point out serious errors of grammar, of which there are many?
I know there are people reading this and thinking “oh god, a spelling/grammar flame.” This isn’t one. I’m simply making the point that when you’re trying to persuade someone else to do something, you always want your presentation to be impeccable. If your writing is full of errors, it’s easier to dismiss what you say as being the opinions of some crank. I guarantee you that if someone without prior opinions receives two letters, one for and one against a position on an issue, and the former is written well while the latter is written poorly, the former will carry more weight.
Open Sourcing Java is not the answer. The only thing it will solve is that the free software purists will be happy and quit slamming Sun in public essays and Open Letters. Java is Open enough, the only restriction in the Java license is that you have got to undergo Suns test suite to enusre compatibility. If Java wins on technical merits then great, if .NET proves to be the superior language then .NET will win. There is no problem with Suns licensing, just the Stamanites just dont like it. Mind you, right now the Java language is crap according to the same people who want it open sourced. If Sun does Open Source Java then suddenly it will be the greatest thing since peanut butter and jelly.
Really, how much money does the open source community have?. Why don’t all of you clammouring for Sun to open source java just show SUN the money. Sun’s a business like IBM or GM or Amgen and they need to be able to make money off their products. Making Java free isn’t going to provide any revenue to Sun. Case in point, why is there a Donate via Paypal button on Apache’s website or Mozilla’s website?. It’s because not enough money is being made by these organizations using the prescribed methods of making money via support and selling t-shirts and coffee-mugs.
Ahem, if you’d kindly point out these alleged errors….
I admit that I wrote this somewhat hastily without a spell-checker. However, I don’t see any errors, other than my misspellings of “committees” and “irreversible” (which I noticed too late). I also notice some extremely superficial grammatical errors: I neglected to fully capitalize GNOME, did not put periods in “i.e.” or “vs.”, should have added a period before a parentheses in the fourth paragraph, and have at least one unnecessary comma. If you can come up with an actual major error that I haven’t mentioned, I will fully accept your criticism. (Unfortunately, that’s a rhetorical comment, because I’ve already done a thorough check.)
-Mike
Ahem, if you’d kindly point out these alleged errors….
If you can come up with an actual major error that I haven’t mentioned, I will fully accept your criticism. (Unfortunately, that’s a rhetorical comment, because I’ve already done a thorough check.)
Not that thorough — although I am pleased you caught what you did.
I’m pretty sure that “. . .either you or Sun has been following . . .” is wrong; but I’m not 100% positive, so skip that one.
“. . .would back it . . .as the building blocks of the Linux desktop” — I trust the error here is clear. Yes, the part I snipped included two things (C and C++), but the “as the building blocks” has to refer back to Java as well. The solution is to not refer to “building blocks” or “the building block” or anything like that.
And for that matter, that entire sentence is one huge run-on.
“after all, the Java VM doesn’t just not care what DE you’re using, it doesn’t care what OS or CPU either!” is absolutely horrendous diction.
“Microsoft would have to be payed for the licensing!” . . .you meant “paid.”
“Otherwise, I fear MS technology will infiltrate its way into even the purest MS-free zone” is redundant; `infiltrate’ implies `into.’ You meant “I fear MS technology will infiltrate even the purest…”
I’m sorry if it seems like I’m giving you a hard time. Frankly, I’m glad that you took the time to express your opinion to the friendly folks at Sun. I simply want your letter to be at its most effective, since I’d also like to see Java open-sourced. But we will all be taken seriously only to the extent that we communicate well.
Get over it. I don’t care about Sun’s code, I’m working on making a free software runtime and class libraries that are better in every sense: freedom, performance, quality.
If you want free software Java, join in the fun. Begging Sun has not helped so far, it’s just a waste of time. Sun knows pretty well what free software is, and what open source means. It’s their own code, they can do as they wish. Meanwhile, we’ll continue pushing ahead where no Sun’s code has been before and reducing the need to download that non-free piece of software, till it’s just another legacy application like Sun’s C compiler
To give you a similar example: had Linus Torvalds waited for Unix to become open source, he’d still wait. So if you want better free software java implementations today rather than tomorrow, join the fine people working on GNU Classpath.
cheers,
dalibor topic
Perhaps I’m missing something, but their stances seems painfully obvious to me. “Linux should not be used on a server.” I must say I agree.
Linux was designed as a desktop/workstation OS from the begining, and the majority of developement is still for that purpose. I’m sure you’ve all read the history surrounding it, given it’s recent resurfacing in light of the “Is Linus the father of Linux?” article/book, so I don’t need to go into that.
Other free alternatives have been around for many years with server performance and stability in mind. OpenBSD and FreeBSD were both designed for server use, and are both free, yet people still insist on Linux.
Sun has seen this too. While Sun will sell you a server with Linux on it if you really want them to, Sun believes that Solaris is a better operating system for a server than Linux is. That is also why they sell a Java *Desktop* system using Linux. Sure, Linux can act as a server if you want it to, but so can windows 98 with the proper software. Just because you can use something as a server does not mean it’s a good idea. To my knowledge everything Sun has said thus far has kept with that opinion.
So then, on to the “article”. Relating to the comment “Solaris would still be losing out on all of the free software …. that would have been made using Mono.” from the letter, would someone please explain to me why he thinks Sun would miss out on anything?
The likelyhood of GNOME using mono seems very slim, given that it (GNOME) is not a DE specifically for Linux (regardless of it’s roots), and switching to mono would prevent software from running on other Unix systems.
“GNOME is a Unix and Linux desktop suite and development platform.”, which currently runs on Linux, Solaris, HP-UX, *BSD, Darwin (MacOS), Cygwin, and I’ve heard AIX and IRIX, whereas mono is only available for Linux, Solaris, and MacOS (JIT, not interpreter). That is far from encompassing “Unix”, and even so, still gives me an answer to the “Sun missing out” argument? Am I missing something?
It also fails to address the fact that mono will only work with those three systems, and and that leaves out the BSDs and HP-UX, and kills any chance of getting it to work on systems not officially supported. Given that HP is a supporter of GNOME, I would think that anything that will prevent it from running on their OS (HP-UX) is not likely to occur.
(As a side question, does anyone know why there is so much support for the Linux kernel, and so little work being done on HURD? Linux was supposed to be a temporary fix afterall; A kernel to make GNU usable while they worked on HURD; A quick dirty hack that seems to have gone terribly, terribly wrong.)
As to the question of Open Sourcing Java, if you read here http://www.sun.com/981208/scsl/principles.html , you will see why they aren’t jumping to do that. (Also, I took the time to check the Sun news archive, and didn’t find anything from them, as a company, saying they would, or would not, OpenSource java, only a few things from employees who like the idea. Still, no mixed messages from them directly, although many other sites, unrelated to Sun, have made the claim for them.)
Compatibility is key. I know everyone likes to say that if you have a controlling body you won’t have a problem, but that argument is flawed for two reasons.
1) You have a controlling body with all but the core code downloadable now: Sun and the JCP.
2) Controlling bodies are optional.
Take a look at the Open Group. There have been set standards in what makes something “Unix” for years, and only 3 major Unix makers comply with the 98 standards.
Someone mentioned Perl earlier as an example of non-splintering, but there was a major problem with that a few years back when ActiveState started adding win32 APIs and changing the sytax around so it wouldn’t run properly on the standard Perl distro. Or, there is the fact that Java already had a branching causing incompatibility when Microsoft made their own VM, which was a large part of the reason Sun sued them a few years back.
Or am I the only one who remembers these things?
Recent history has shown that incompatibilities happen, and happen rather often. Open sourcing Java will likely only make it worse.
Read the release notes from Sun on binary compatibility: each release breaks it in one small way or another. If you are lucky, you can continue running your code, if you are not, you need to rewrite it.
Sun released 1.4.2 with a known compatibility test failure according to their release notes.
Just because many people don’t notice the problems, doesn’t mean they are not there
Does anybody know of a recent benchmark comparing Kaffe, gcj,SableVM,Jikes RVM or any other free implementation to SUN’s JVM concerning performance?
There is nothing current published out there. Mind you, the license of Sun’s JVM prohibts you from publishing such information anyway. Anecdotal evidence suggests that free runtimes can be a few thousand times faster than the JDK on specific tasks, but they can also be a few times slower. So it depends a lot on the task at hand atm.
Feel free to join in the fun and help us make Kaffe, Classpath and gcj faster. My plan for the future is a mixed mode engine for Kaffe which uses gcj-ed class library, state of the art interpreters, quick jitters, and again gcj for the hottest code. gcj hackers are working on a binary ABI for gcj, and I’m slowly dragging Kaffe towards using GNU Classpath, so that the transition will be easier.
We’d need more volutneers for that to happen sooner
Excellent, that is the spirit I expected from the Open Source community. I wish you all the best in making your project a good Open Source alternative to Sun’s Java VM.
I mean it. I am tired of ESR and Stallman always wanting people to follow their ideology. I would like the OSS community to step up to the plate and put their money where thier mouth is so to speak. It is always the claim that open source versions will always be better than the colsed source ones of anything. Now is the time to prove that claim. The Java Specs are open and available. The opensource community should be able to crank out an excellent VM fully compatible with the specs in no time. Those are the virtues of OSS aren’t they, better quality, performance and time to market compared to close source because of many eyes and many more resources. And most of all free from all shackles of licensing.
Consider this a call to the open source community, show me the code. Show me that the OSS methodology is better than closed source.
How long would it take for the OSS community to crank out a fully compatible JVM up to 1.4.2 of Sun’s VM?
GNU classpath has been at it for 2+ years. Kaffe for more. How much longer?
If someone involved can give me an esstimate I will gladly await the arrival of the VM. Companies can gladly await the arrival of said OSS vm to deploy thier solutions on linux.
Can the OSS developers commit to a deadline for thier vastly superior VM?
If I was a corporation that wants to buy the OSS philosophy I would need to know these things. And the Open source nature of the project should automatically mean faster development, better quality and performance.
Read the release notes from Sun on binary compatibility: each release breaks it in one small way or another. If you are lucky, you can continue running your code, if you are not, you need to rewrite it.
I went through the Relase Notes. There is nothing mentioned about intentional breaking of binary compatibility that I could see.
Are your refering to bugs? Are you saying that your versions will always be bug free?
All the best in your efforts.
Well, at least it would be good to make some benchmark among free JVM implementations from time to time. It would help every team find out how is their work progressing again each other and us, users to have a look at their progress
Hi Raptor,
There are no automatisms involved here. Free software is not automatically superior to non-free alternatives on other aspects, but freedom. It takes work, usually lots of it. And it takes a good deal of motivation to go ahead with that work.
I believe that for any platform to be relevant enough to attract people to create a free software alternative, it needs to provide an incentive to do so. With Java, the incentive is finally here: it has become not just useable for building cute applets, but useful for building large scale applications from a vibrant ecosystem of free software. So now there is a growing interest, beside early adopters, to have a fully free platform for Java development and deployment. That interest didn’t exist befor since Java was not that interesting for writing free software: it was just another proprietary platform like visual basic, delphi, and so on.
It was mostly due to the Apache Software Foundation’s work on Jakarta that Java actually became useful for writing free software. Now many people are starting to get annoyed enough by the fact that you need to install non-free software to use free software that they are doing something about it. Some of them are asking Sun to do them a favor. Others have realized that freedom comes through their own deeds, and started to implement and improve free implementations of Java class libraries and runtimes instead of waiting for Sun to change their mind.
I’ve seen a lot of interest in GNU Classpath lately. Things are getting hot, like in the early Linux days. But it takes time, still, to come up with something as good as or better than the JDK. Just like it took a few years for gcc and g++ to become the ‘industry standard’.
Judging by the time it took Linux, gcc and g++ to become really nice tools, I’d say 10 years is the usual time span it takes to establish a free software implementation. So with that calculation, I’d expect free software java implementations to become viable replacements for non-free alternatives for most tasks between 2006 and 2008, if we can attract more competent hackers. Come in and be the next Alan Cox
Note that I say “implementations”, i.e. that I use the plural form. I don’t believe in ‘one size fits all’. GNU Classpath is in part so successful because it creates an ecosystem of java runtimes, that ocassioanally take Java where no Sun-derived code has been before. If you want to see some really innovative stuff, you could take a look at JikesRVM from IBM (high-performance JVM written in Java using GNU Classpath, of course), and IKVM (fast Java runtime for .net). There is a ton of exciting GNU Classpath based stuff going out there, so I don’t doubt you’ll be in the comfortable situation to pick and chose the most suitable runtime for your tasks in a few years. You may still prefer Sun’s runtime, of course. But you’ll be able to chose it for its own merits, instead of just because its the only thing that runs your code.
Compatibilty is a big issue that’s coming up. Unfortunately, noone can say how compatible even Sun’s runtimes are, without trusting Sun. The problem with trusting Sun is that they might have tested their runtimes on a handful of selected platforms, but as those platforms change underneath through security patches and bug-fixes, it’s not certain that Sun’s runtime still meets the specs. As noone can verify Sun’s claims since their compatiblity test suite is not freely available, noone can say for sure.
Judging by http://java.sun.com/j2se/1.4.2/compatibility.html#binary Sun has released 1.4.2, Sun has released JDK versions in the past that didn’t pass their own compatibility kit:
“In J2SE 1.4.2, there is a known JCK failure. When running with the -enablesystemassertions flag, in rare cases, converting a floating-point number to a string can throw an assertion error.”
Running Sun’s runtimes against the freely available, vendor independant Java API compliance test suite Mauve shows that Sun’s implementations have compliance problems with the API specifications, (just like anyone else).
Sun has broken compatibility between releases in the past, for example by adding methods to JDBC interfaces, or changing the values of final fields. Unfortunately, Sun has apparently decided to take all the older information on binary compatibility changes between releases offline, so I can’t point you to URLs anymore. I assume achive.org has them, or you could google for my discussions of Sun’s notion of compatibility in other forums.
I don’t say that the free runtimes don’t have bugs. In my opinion all non-trivial software tends to suck, more or less. But at least with free software, we have the possibility to fix it, and to share our fixes.
For companies (and more so for governements), the question is of course about control of their core IT assets: do they control their data processing infrastructure themselves, or do they allow ‘tainted cards’ in their software solution stack? That’s why I believe that we’ll see more uptake of free java runtimes in the future: relying on a non-free JDK in your otherwise free enterprise software stack doesn’t make a lot of sense in the long run.
GNU Classpath fixes that by making it easy to build java runtimes by providing the largest bit of work, the class libraries, to anyone who wants them. So you get a lot of potent runtimes, instead of a single solution. You’ll get real choice, instead of various flavours of the same thing.
Hi insidr,
please do, and publish your results, preferably regularly
I think you’re really wasting your time on Sun. They’ve proven time and again that, while they sometimes produce cool technology, they really don’t understand the dynamics of the software industry. .NET is indeed going to roll over them like a freight train, and McNealy will be lying on the tracks afterward, wondering how it all happened like Lotus executives musing over the demise of 1-2-3.
Microsoft has permitted the Mono and DotGnu efforts to proceed because it knows that they will eventually take hold on ‘nix platforms — and unify the API set across platforms, making it easier for MS to sell into server spaces. MS is throwing serious dollars at building out the .NET CLR, with support for generics, better interop, faster perf, ngen’ing, etc. Whether you like MS or not, VS.NET is one of the best development environments to date, bar none (and don’t even bother mentioning Eclipse or any other Java IDEs. I’ve used nearly all of them, and they suck). MS is also pushing .NET into nearly all of its products, replacing VBA and COM as the automation drivers. This is going to have a huge impact on developers. Meanwhile, Sun is slowing down the pace of innovation, resting on its laurels, and giving MS too much room to maneuver — and MS is getting the complicity of the open source community.
It’s over but the crying, Sun. You had a chance but you blew it.
I am glad you responded with excellent points. I was just trying to fend of OSS zealots who have never been involved in large scale projects and claim that there are automatisms involved just by the virtue of the open source nature of a project.
All good software takes time to mature, some succeed, some become festering piles that need to be rewritten.
I would like to join the efforts but my area of interest at this time is Operating system internals, however I will dust off my programming language book and begin the learning process. I will also get the source and documentation for Classpath and check it out.
Again all the best. I am glad that developers are still devlopers and haven’t converted to becoming politicians.
I was just trying to fend of OSS zealots who have never been involved in large scale projects
Pardon me if that statement didn’t turn out as I intended. I wasn’t claiming to test you. but Osnews as of late has been a breeding ground for unproductive discussions. It is nice breathe of fresh air to see some quality.
“In J2SE 1.4.2, there is a known JCK failure. When running with the -enablesystemassertions flag, in rare cases, converting a floating-point number to a string can throw an assertion error.”
I am assuming that the “rare cases” here means the bug 4905011 is known and occurs rarely. Which I assume means that the jvm will pass the JCK sometimes and in certain circumstances might not.
I don’t think you can hold Sun to a degree of perfection that is not expected from any other software vendors. Like you said bugs do exist and if they are important enough will get fixed and the rate at which they will get fixed depends on thier prority. This is true for all complex hardware and software processes that have limited resources. Even Open source projects have resource limitations.
If Sun deliberately made a very important compatibility feature incompatible with other implementations becuase it gace them an edge it would be wrong. But bugs that cause incompatiblities in rare circumstances can not be considered a deliberate attempt. I think Sun’s main concern is deliberate attempts by projects to make Java incompatible, becuase some one decided to do so becuase of thier beliefs and convictions, not bugs.
Hi Raptor,
yeah, even Sun has bugs, just like everyone else.
What I did find interesting in this case, was that sun apparently let a known, but hard to trigger compatibility test failure slip into their release. Which I regard as simply human, as everyone’s ressources are limited. But it is a point in the compatibility debate, in my opinion, since it shows that ocassionally even Sun has trouble getting it right and has to make uneasy choices.
The purpose of that quote from Sun’s documentation was to give the assertion of perfect compatibility a small reality check: Sun is not perfect at it, just like anyone else.
Thank you very much for the best wishes, and please do feel welcome to join in the effort, if you are not tainted [1]. You can find me, and other Classpath hackers on #kaffe and #classpath on irc.freenode.org if you need some hands on assistance to get started, or if you just plain want to chat.
Kaffe in particular is in need of good, low-level C hackers, who know their Unix programming, just as it needs more Java hackers to improve the existing class libraries.
[1] http://www.gnu.org/software/classpath/docs/hacking.html#SEC2
why does java need to be open source anyway, it looks like the open source community has decided to start embracing .NET although .NET is much more closed than Java.
Sun would have to dual-license it since java is the core of its software business.
its just a programming language and theres a community process and everything looks open enough to me.
i think IBM just dosen’t want to pay a license for Java.