New Sun Microsystems CEO Jonathan Schwartz’s first 100 days at the helm are about to get interesting. First up: managing an internal debate over whether the company should open-source Java. According to sources inside Sun, an ongoing debate over whether to open-source Java is coming to a head with the JavaOne conference looming May 16.
IMHO I dont think Sun should allow just anyone to be able to mod their code. I think Sun should keep the system that they have right now where theres a process and so on and they have the final approval. But they need to make it easier for the alternative OS users to be able to bundle Java in their system. But then again I am not too knowledgeable about this free as in beer and free type of thing. This is a huge enterprise platform and not just a language anymore after all. So it has the chance of having either a great effect or a devastating effect on the enterprise community.
i agree, and furthermore i don’t think people should just be able to modify the minix codebase. who knows what they might do. minix must contiue to be a stable platform that its users can depend on.
Open source doesn’t mean anyone can make changes to *YOUR* code. So, if Sun opened Java, they could still only allow Sun engineers to modify their version. The only difference would be that you and I could take their code, make changes and redistribute.
Of course, the vast majority of people would prefer not to fork the main code base, rather they would like to provide patches.
Cast your mind to the Linux kernel. Linus manages *his* branch which is his version. The code is open, but it’s his call which patches are accepted/rejected.
The Linux kernel is a good model. By selecting different compile options you can generate anywhere from a 200K to 2GB sized kernel. In the Sun model you are effectively forced to always use the 2GB version no matter what your application is.
The micro versions of Java are tiny. But they aren’t compile once, run anywhere. They are missing most of the run-time like Swing/AWT. So your Java Swing app isn’t going to run on them.
Of course the micro versions aren’t free. If you want a free version you have to use the giant, all encompassing JRE environment.
Yes I guess the techinical term I was looking for wass “forking”. Thanks for that. I agree. Please do not let them fork the main code base. I think that would cause more of a headache with unsupported versions of Java floating around. That platform is complex enough as it is!
FYI, the Java source code is already available[1] under the Sun Community Source License[2], a “private hacking only” license (i.e., you can’t redistribute it). I use it to build a native JRE/JDK on unsupported platforms like NetBSD & FreeBSD.
[1] http://www.sun.com/software/communitysource/j2se/java2/download.xml
[2] http://www.sun.com/software/communitysource/
It’s a PITA to build a native JRE/JDK on those platforms, though. (Thankfully FreeBSD now has a binary package for 1.5.)
If Sun would just allow for binary distributions it would be a huge step for alternative operating systems/platforms that Sun doesn’t support.
available != open.
Sure it does…it’s open to review, open to be hacked on privately…it’s open.
It’s not Free…
You’re confusing the two. Open Source Software does not necessary mean Free Software.
Microsoft has an open source license, Sun has one as well. They just aren’t Free in the RMS sense
Well, he is right after all.
“Open Source” covers all licenses which gives you the right to access the source, modify it, and redistribute it (sometimes only as patches though).
However, “Open Source” is not necessarily “Free Software” as in the FSF-way, while “Free Software” is “Open Source”.
In Denmark I have the right to hack on it privately, no matter what the license says. It can be hacking on the binaries or the source. Of course I’m only allowed to hack on it, if I got it legally.
Im all happy for opening up the source code, but what i dont want to see is three incompatible versions of java because of various forks
You mean like what we have right now.
Uh no…there is only 1 “certified” Java.
And you think there’d be multiple “certified” incompatible ones?
There are definitely three commonly used Java’s. One from Sun, the official, one from GNU, and one from Redmond.
GNU’s is close, Redmond’s is abandoned due to legal reasons, and Sun’s is the official.
Mystilleef was dead on.
are you forgetting IBM’s? not exactly a bit player there…
IBM has stated in the past that they would immediately open source their code if Sun would let them. Sun could even allow IBM to do this and still keep the Sun version secret. All of this is tied back into the minor amount of revenue Sun is getting from Java. An unrestricted IBM version would kill Sun’s revenue stream.
At some point Sun will decide that the major PR boost from open sourcing outweighs the minor revenue stream.
Please. I know of no enterprise projects that are using anything other than the Sun version. Close doesn’t count.
Uhhh, ever heard of this little company called “IBM.”
I heard they have a JRE/JDK that’s used heavily in enterprise environments.
Oh and there’s another startup called “Foresight” or “Oracle,” well something to that effect.
I guess they have a JRE/JDK too.
The fear for forks is exaggerated. Here’s why you don’t have to fear Sun Java forks:
– The most likely reason why a project forks is because of bad management. People usually fork because they are not happy with how you deal with contributions. I’ve seen it happening many many times: a piece of software forks because the original maintainer doesn’t accept patches or doesn’t do anything with patches. Contributors become frustrated so they create their own version with improvements.
– A large piece of software like the JRE will not easily fork. Consider the huge amount of work for one single person to maintain the fork. It’s almost impossible, you will almost have to work together with other people. People are usually more willing to send patches than to fork the project. They will usually choose to work together with the existing developers, if possible.
– While it’s not completely impossible that people fork for stupid reasons (such as being able to put their name tag on it), those forks *never* succeed. They always die in a few minor releases and have at most 0.001% market share.
– The successful Sun JRE forks will attempt to maintain compatibility. Look at clean-room implementations like GCJ/Classpath: they’re constantly trying to improve compatibility with the official Java specifications, and with the Sun implementation.
– Forks of the Sun JRE cannot use the name “Java” because of trademark issues. Therefore there will be no confusion between Sun’s JRE and the forks. You can’t accidentally use a fork and think you’re using the Sun version. And you are not required to use the forks. If you want things to work like they are, why not stick with the Sun version? Problem solved. If you’re selling Java software then just say that the user must use the Sun JRE, otherwise you’re not responsible when bad things happen.
Look at GNOME, KDE, OpenOffice, Mozilla, etc. Have they forked? Well in case of GNOME, yes: GoneME. But GoneME was forked for a stupid reason, and it never took off. It has been dead for about a year now, and I’ve never seen anybody use it. And in case of Mozilla: the fork known as Firefox actually had a positive effect in the long term.
So in summary:
– You don’t need to fear forks.
– Forks aren’t always bad. If a fork becomes successful then that just means they’re doing something right.
well said sir
(concession of being silly)
I think an open source Java would be forked immediately. People will get out their chainsaws and remove piles of unneeded garbage in their respective environments. Does a server version of Java need to drag along Swing and AWT? If Mozilla rewrites Javascript to run on the JVM do they need to install anything except the JVM? Does a QT embedded platform with Java QT bindings need to install AWT and Swing? What about Python and Ruby using the JVM, do they need to drag along the Sun run-time?
None of these are incompatible forks, you can always install the missing pieces to build a complete environment if you want to. But these ‘forks’ will greatly broaden the use of Java technologies.
Best solution would be to break Java up in to a finer set of installable modules than currently exists. JVM only, core classes, AWT, Swing, 3D, etc each in their own module.
It’s not “bad management”, usually; it’s “differences of opinions.”
But you’re missing the successful forks. In linux land they’re called “distros” and there are plenty of variants floating around to disprove your contention.
The difference between gentoo and debian for example isn’t attributable to ‘bad management’, and both are going to be around, with varying incompatibilities, for some time.
Would Java fork if it were open sourced? I dunno, but the better question is “Would it fork more than it is now.”
— write once, debug everywhere!
But Gentoo isn’t a fork of Debian.
I don’t understand, distributions really aren’t a good example of a fork that has been successful.
A good example is the gcc/egcs fork. egcs forked off from GCC and then GCC merged the forked changes back into their main trunk. That worked well.
At best you can say that Ubuntu is a fork of Debian. But it’s not really a fork, more like they borrow some of the packages from different debian branches and “fix them” the Unbuntu way.
No, but Gentoo and Debian are both forks of GNU/Linux. I think that’s what he meant. If that wasn’t what he meant, I’ll allow myself to be confused
No, they are not forks of GNU/Linux. That’s crazy.
Linux IS JUST A KERNEL and GNU is the userspace.
There is a version of debian somewhere using a BSD kernel.
Where is a clue by four when you need one…
Edited 2006-05-02 16:59
No, they are not forks of GNU/Linux. That’s crazy.
I didn’t say it made sense. I just gave my view on how some might consider distributions as forks.
Linux IS JUST A KERNEL and GNU is the userspace.
I know that. Why do you think I wrote GNU/Linux?
Besides that, you _could_ consider GNU/Linux distributions as forks of each other, or as forks of the vanilla kernel and the unpatched GNU applications. It’s a different use of forks than I’m used to, but redefining words happens constantly.
And yes, there is a Debian using BSD, there is Gentoo using BSD. Debian using BSD could be seen as a fork of Debian using Linux, as well as a fork of *BSD. There’s a lot of things one can do, and not all of them makes sense. And some things make sense, though one cannot do them.
No, they are not forks of GNU/Linux. That’s crazy.
Why, because you disagree? Let’s see. They bothstarted with the Linux kernel tree, and the FSF tree, and they went separate ways. Neither has the pure FSF tree or the pure Linux tree. In fact, most distros don’t use the pure Linux tree, so if you want to be pedantic and consider “Linux” to be the kernel, then nearly every distro is an example of a fork of the Linux kernel tree.
Linux IS JUST A KERNEL and GNU is the userspace.
OK, So I was wrong, there are three people who care about that difference, not two. But to the vast majority of people, the word “linux” is associated with a distro, not with the kernel. . .
But even the Linux kernel has forked. See, for instance, handhelds.org and their very own fork.
The vast amount of people are also complete idiots.
What everyone but RMS and Linus think when they say “Linux” is the distribution. There are plenty of forks of distributions, and they’re subtly incompatible. Ubuntu is a Debian fork, CentOS is a RedHat fork, Fedora is a RedHat fork, et cetera.
The reason I mentioned Gentoo and Debian isn’t that one is a direct fork of the other, but rather that they represent how different choices on what to include don’t always come from poor management.
A better example of forking would be the N versions of BSD, but they mostly forked over personality issues, rather than either management or philosophy.
Well to be fair.
Most incompatible Java’s currently around exist because they can’t use the code from Sun and have to implement the Java spec from scratch.
That and java programmers coding to look for a specific implementation
Does Sun’s (or anybody’s) JRE licensing permit an application installer to silently install a JRE if one is not already installed?
My understanding is that the way things are now, an end user must run two installers in order to install one desktop application. The first installer is for the JRE, and the second installer is for the application.
Thanks.
Doug
There are plenty of commercial apps that include a JVM in their installer that is installed in its app path/directories and is used (unless otherwise linked) by that app alone.
Some examples are Oracle, DB2, Websphere. In the case of the IBM apps, the JVM is the IBM version of the JRE and not the Sun one.
I’m sure that there are plenty of other examples that could be sited that have their own builtin JVM’s of various different flavours.
I agree with ‘ghen’ above, the source is already there and open-sourcing may create forks. However, if the code gets forked, the new ‘prongs’ simply can’t be called Java (like J++, and C#, and even PHP to some degree). Developers should focus on bridging the gaps between the system interface and the language itself – if opening the source helps, all the better. I do think however, that modifying the specs may be too tempting for some developers to resist – so we may soon see WinJava, LinJava, MacJava, and this would be very bad. But you can’t call a Honda Civic a Toyota Corolla, it’s just not true (although they are basically the same car).
I’d hate to have Schwartz’s job, though. Either way, he’ll be the bad guy for somebody.
so we may soon see WinJava, LinJava, MacJava, and this would be very bad.
Why is this bad? Why can’t a Java program on Linux use Gnome bindings to draw it’s UI if it wants to, or a Mac Java program use cocoa/carbon, etc.
The more interesting case is why can’t a Java program in a browser like Mozilla use the Mozilla run-time (XUL) to draw its UI instead of being forced to another window and using AWT/Swing. Forcing AWT/Swing ruined the mainstream use of Java in a client browser.
If you wrote an XUL mode for SWT you’d have that. Swing is not Java, it’s a part of the library, a small part.
Please don’t confuse what you see with the important parts of a program.
Good examples of native looking (arguably not feeling) programs are: Eclipse and OOo (the latter isn’t native at all on Mac).
One part of the open source java argument centers around people wanting to remove Swing/AWT. Eclipse didn’t remove it but they effectively replaced it with SWT. If you remove Swing/AWT you won’t pass the Java compatibility test. This forces you to distribute and support it everywhere even if you don’t want to use it.
Of course Sun doesn’t have to follow the rules and removed Swing/AWT form their embedded versions. Open sourcing would allow other people to create these micro versions, not just Sun.
Oh, cool, I didn’t know about that; thanks.
I agree that AWT/Swing is bad (I really don’t like swing), but it would be better to use universal calls rather than proprietary ones because that breaks compatablity and defeats the ‘write once, run everywhere’ philosophy of Java. If there’s a way to cleanly (and portably) call outside bindings, that’s fine – but don’t make proprietary changes that render everyone else ‘out of luck’, it’s not the idea behind the language. This kind of thing should be addressed by the frameworks you’re trying to bind-to, not from. Gnome, KDE, and whatever else, should be providing the UI hooks to cling to, and not force Java into a shoe it doesn’t always fit. The VM is responsible for this, and that may be the best argument for opening the source – to allow improvements to the VM without violating the language.
Edited 2006-05-01 19:41
People want various levels of Java, there are three main ones:
1) The JVM
2) JVM + core language libraries
3) The all encompassing Java environment
Standalone apps want the environment with it write once run anywhere promise (which isn’t always true).
But there are two other large uses for Java technologies that aren’t being served.
1) A universal JVM. Let Java, Python, Ruby, Perl, etc all share the same VM instead of having one for each language. In this case you only want to install the JVM, you don’t want the rest of Java around.
2) Embedded use of Java in an existing environment like Mozilla. This is the replace Javascript with Java path. In this case you want the JVM and core libraries but Mozilla provides the cross-platform environment. This is still write once, run anywhere, but it is using the Mozilla run-time instead of the Sun one.
Sun ruins these two applications by
1) Preventing redistribution, you have to download it yourself.
2) Forcing distribution of the entire environment into situations that do not need or want it.
Eclipse is a different type of exception. In the Eclipse case they decided that AWT/Swing was so bad that they needed an alternative and built SWT. In an open environment SWT and AWT/Swing would have fought it out and I suspect SWT would have won, replacing AWT/Swing as the core GUI API.
There are two rationales for making Java open-source: good karma and profusion.
All things being equal, making the code base open source would make a lot of people that have religious opinions about computer languages happy. In doing so, you’ve garnered their attention and possibly their support.
In the later case, open-sourcing it permits external development of improvements that can later be folded back into Java. There’s a lot of talk of forking, removing AWT and Swing, etc. which are a little bit reactionary. For example, not all certified editions of java ship with AWT and Swing (e.g., cell phones). However, there’s also quite a bit of interest in writing accelerated back-ends to Java that provide much better UI performance and nativeness while remaining 100% Java. SWT is nice, but it’s not always preferable.
The problem with Java right now isn’t so much that it’s not functional or good, but rather that it lacks polish — from better use of system resources to simplification of launching applications and the like. That could be very much improved.
http://www.betanews.com/article/Java_to_be_Used_in_Bluray_DVD_Playe…
How will all of the various embedded systems (such as DVD players) port Java to their proprietary platforms unless they run embedded Java? Open source would help, certainly.
It’s not clear that open source would make any difference in the embedded (J2ME) world. Consider…
Today: Device vendor pays Sun (or some other company) a licensing fee, then gets VM source code and integrates it into their product.
Open Source: Device vendor downloads VM source code, integrates it into their product, then pays Sun a compliance/trademark fee.
The source code is freely available provided by Sun
Next question please.
Oh wait, please please for the love of god can this year of open ended question “articles” please die.
They suck
It’s not open source. Available source isn’t identical to open source.
It’s open source the moment we can take the source, modify it AND redistribute it.
Of course, it’s perfectly acceptable that we cannot use the trademark “Java”.
since when is redistribution necessary for something to be open source.
you must be working by a different definition.
Read http://www.opensource.org/
Thank you. At least someone understands the difference here.
We meen free/open. Even GPL stuff is not totally open as it limits the design point and access to svn.
The current open source definition means access and an ownership of a sources product not the source itself.
With SUN it is only in a liberal sort of way where you are pervy to their circle. Look but don’t touch. Sun and Apple are more Liberal this way. Also they do distribute hardware unlike Microsoft so maybe that’s why MS seems more vigilant in hording their software.
I’m thinking about the enigma devices and passwords but most languages are free and passwords are for personal identity not a product. Hmmmm. Yes I am for privacy but if Java wants to remain a ‘secret’ then it can’t be innovated and will remain a static host while LAMPPPP eats it alive.
Languages really should be open in the larger scheme, as are human languages. Privacy and trade secrets are fine but don’t expect market dominance with it as a public product. i think it’s fine to have trade secrets beteen other companies but not at the Bazaar. Because I think it tends to be very small to one company. There could be internal secrets but as a very limited pre-deign level. I am for some privacy! New word I have: A pre-product.
For instance at design point it can be private internally in a pre-contracted way. Like our own thoughts. So I don’t agree with Google ‘scanning everything’ like the movie A Scanner Darkly. So there is a privacy point, but it’s limited.
Make the compiler open too. I think .Net is mostly open except the compiler.
.NET isn’t as open as Java (including the compiler).
You can download the official source from Sun (granted, it’s still not *free* in the Stallmanesque sense, it’s a research license). As far as I know, you cannot download the source to the .NET SDK or the CLR from Microsoft.
And before some random idiot brings up Mono, Mono is just as free as GNU GCJ and GNU Classpath.
Also, keep in mind Microsoft only keeps things “open” so that it can trap you in the future. It’s being lured into their web.
Sun has done a lot more good for the FLOSS community than bad (or Microsoft obviously).
But GCJ and GNU Classpath is a lot more open than Java. So is Kaffe. And mono (there.. I mentioned it.. uuuuuh, am I going to get a piano dropped on my head now?).
.NET from Microsoft isn’t free nor open. Java is somewhat accessible (at least for the moment). mono, Kaffe, GCJ, GNU Classpath etc. is Open Source and Free Software as well (I still don’t understand why FSF didn’t go for “freedomware” – it wouldn’t be ambigious).
maybe that is your definition…
but that is not THE definiton of open source.
Redistribution has nothing to do with source availability.
Open source just means you can hack on the code.
Otherwise I could say “well the GPL is not open source becuase it doesnt allow me to ….”
It’s the first time in 7 years I meet your definition.
I doubt there are many who think as you do.
And no, it’s not my definition. It is _the_ definition.
It’s not something I made up. The first to use the term “open source” was (AFAIK) Eric Raymond. Have you ever read “The Cathedral and the Bazaar”? If not, there you have it –> http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar…
Available Source != Open Source
Open Source == Available && Modifiable && Redistributable Source
GPL is an open source license, because it allows for availability, modification and redistribution. So does BSD, X11/MIT, MPL, CPL etc.
You’re sure you’re not thinking about Microsofts “Shared Source”?
I have noticed a couple of things while writing in swing. First of all, the interface (as in API) is _extremely_ cluttered, that is, it’s very closely related to Sun’s actual implementation. It looks as if the original design couldn’t accommodate the subsequent drive for features. From the number of deprecated methods one could draw a conclusion that they must have changed their vision in the middle of writing the library.
When reimplementing swing, imagine the pain one must go through to try to mimic somebody else’s legacy code (not unlike wine having to mimic WinAPI along with all the glitches, ancient code from windows 3.1 and lots of undocumented behaviour). Even though at first it seems that the creators of swing were inspired a bit by GTK, personally I find swing losing completely when compared to it.
Speaking of GTK, it’s not perfect either, but at least they can change the interface in every other version and reasonably expect the programs which are using it to be updated, but Sun isn’t allowed to do that.
From my experience, trying to force components in swing to behave like you want them to (if you want anything other than just the default) requires an insane amount of hassle: trying to find which method you need to override in a widget, figuring out where you need to use SwingUtilities.invokeLater() (the only way I was able to do some things in order was to nest those calls) and lots of looking up on google. It’s nice to have a write-once, run-on-many-systems-without-recompilation program, but the disadvantages overweigh this.
And, of course, swing _is_ slow, at least some parts of it are. Try adding several hundred styled lines to a JTextPane.
To support what I’m saying with some stronger arguments, let me give you couple of links: http://java.sun.com/j2se/1.4.2/fixedbugs/fixedbugs.html or http://java.sun.com/j2se/1.5.0/fixedbugs/fixedbugs.html
Just take a look at the huge amount of bugs present in swing and awt. It’s good that they’re fixing them, but IMHO including swing and awt in core java library was a big mistake on Sun’s behalf and now they can’t undo it. And requiring reimplmenetation of swing to become a certified version of Java is, also IMHO, pure nonsense, no, thank you.
Right, sorry for the rant but I had to release all those emotions somewhere 😉
Throw it away, Java is crap.
In some aspects, yes.
It’s much too difficult for simpltons.
With great power comes great responsibility.
Funny how there arent any forks of Perl, Python or Ruby even though they are OSS.
You know, I never thought of that.
Agreed but then again are people using those scripting languages to create huge huge enterprise applications, EJBs, Web services, IDEs, dataabases heck Java software to make more java software? I have not seen huge and I mean huge applications of the aforementioned languages but I have in Java and .NET. Try writing some of those with those languages. I bet there is a huge need for a framework which Java as a platform provides and so does .NET. Java is not a language anymore it is a paradigm I think.
Agreed but then again are people using those scripting languages to create huge huge enterprise applications, EJBs, Web services, IDEs, dataabases heck Java software to make more java software? I have not seen huge and I mean huge applications of the aforementioned languages but I have in Java and .NET.
http://www.zope.org/
http://www.rubyonrails.org/
http://www.die-offenbachs.de/detlev/eric3.html
Those are just some quick counter-arguments off the top of my head. They are all pretty popluar projects.
From the article:
Peter Yared […] said the big question is how Java benefits Sun’s shareholders today, especially since “Sun doesn’t make any money on it,” he said.
If this is true then Sun should abandon Java at all, and then it could become a community supported project that simply died if no one continued to contribute to it. No reason for Sun to throw any money at it.
Def