But it is. Numerous people have pointed to this as a potential problem with Mono. But there are no cloads like this looming over GCJ, for example.
Again, why do you keep talking about Mono? Mono isn't relevant. I'm not using Mono. I'm not saying you should use Mono instead of Java. I don't give a damn about Mono at this point. The question is whether Java's license is suitable for widespread adoption of Java by open source projects.
You can build a VM and duplicate the Java libraries without threats of patents hitting you if you try to use it.
You can say the same thing about Microsoft Windows. In fact, there have been several independent implementations of Windows, and none of them have caught on. Patents or not, Sun controls Java like Microsoft controls Windows, and the consequences would be equally dire if Java caught on like Windows.
As a theoretical argument it raises an interesting point, but how much has that happened in reality?
Sun Java releases fail with regularity on Linux systems. They are also a pain to update because they don't fall under the regular packaging system and because they can't just be ported to different architectures.
On our production UNIX servers this kind of problem has never been an issue because the servers change at a measured pace, and are not running code living on the edge. We upgrade Java and the rest of the system together.
If you run UNIX servers, your vendor keeps the OS and the Java releases in sync. Open source systems can't do that because there is no open source Java; Java on those systems requires special treatment.
I still don't see the argument. You have stable releases right now, that include Java, and everything works great as you say. But then you have unstable releases where not everything works perfectly, Java being only one piece of that puzzle. Just because someone else does the work of trying to match library versions does not make it less hard...
I have no idea what "stable" vs. "unstable" has to do with it; upgrades are a fact of life because of necessary bug and security fixes, changing protocols, and required new functionality. You cannot keep running old systems indefinitely, no matter how "stable" they may be.
Right now, Sun has complete control over the only compliant Java implementation on Linux, either directly, or through their license agreements. That is an untenable situation as far as I'm concerned. Sun competes directly with Linux. If they retain control over Java, they can decide to screw Java users on Linux whenever it suits their business interests.
Sun gets panicky at the idea that their competitor, Microsoft, controls even the tiniest piece of Java. Well, Linux developers should be equally concerned that their competitor, Sun, controls even the tiniest piece of a Linux system.
However, isn't the Linux Java release based on the blackdown effort (sorry, it's been a few years since I've used Java on Linux)? I think the real problem (like the classpath effort) is that not enough people care enough to join in and write some code to base Java2D over something like RENDER (which does sound like a good idea).
But why should people volunteer to improve a proprietary implementation? I mean, we don't expect developers to develop better alternatives for Windows components and give them to Microsoft for free.
And, historically, when people have tried, Sun has simply refused to accept the code anyway. Sun apparently wants a Java2D codebase that is very similar between Windows and X11, so they are thinking about basing Java2D on DirectX and DRI.
If Sun folded tomorrow, the source for these ports would be around and VM work would continue
Just because Sun folds doesn't mean you can do with that code whatever you like. Rather, the copyright would get transferred to Sun's creditors or whoever else snaps up the remnants of Sun, and they would try to make as much money out of it as they can. They might jack up the licensing fees they charge IBM and others, and they might come up with ways of revoking any rights that allow open source implementations. I think the end result would probably be an SCO-like melt-down, with lawyers claiming that everything and anything Java-related belongs to them.
You'd think people would at least check the Nobel prizes for prior art. This sort of stuff was the subject of work by Norrish and Porter around 1950, for which they received the Nobel prize in 1967 (together with Eigen). More info here.
It really makes no difference at this point whether they declare that they won't sue their own Linux customers: they had already accepted their obligations under the GPL when they distributed their version of Linux in the first place. The only thing that it underlines (again) is how poor their understanding of their obligations under the GPL is.
even though a lot of things around Java are in fact quite open.
Yes, a lot of things around Java are "quite open", and that is nice. I also like the idea of a language like Java--fairly simple, easy to use for working programmers, etc.
My problem with Java is a very specific one: the more open source efforts start relying on it, the more the open source world is at the mercy of Sun, given the current Java implementations landscape. This isn't some theoretical concern, it's very practical: Sun keeps messing up things like Swing and Java2D, and conforming Java applications that I have written stop working on Linux or work more poorly over time. IBM's Java for Linux distribution doesn't help, and neither does gcj.
OK you are an X11 UI fan. But what are you really a fan of? I like networkable UI's, and I dislike UI guidelines in general - but as X11 has evolved over the years you now have a mishmash of UI "standards" in that world, and I hardly see that Java adding on yet another UI worldview is cause for alarm. Are you really a fan of GTK or the KDE libraries? What about X11 do you consider "correct"? There sure are a lot of options to choose from.
I think it has been a mistake for Gtk+ and KDE to ignore some traditional X11 conventions. But there are many other conventions they conform with, and at least they are trying to improve things under X11 as they go along. NetBeans (and other Swing applications) often seem like they written for Windows and rely simply on default cross-platform features for X11 support.
A more fundamental question to me is: if Sun is serious about producing a high-quality Swing/Java2D implementation for Linux and UNIX, why aren't they building something on top of the X11 protocol and using the latest X11 features, like RENDER? It just looks to me like X11 is of little importance to Sun. But since X11 is the primary window system on Linux, that means that Java just isn't a good platform for writing Linux GUI applications as far as I'm concerned?
Sun may justify their behavior by saying that Linux is of little importance for client-side applications, but if that is their attitude, then they also have to be satisfied if Linux users say "no thanks".
It's called planning ahead, and follows the same line of thinking as "don't build a house in the middle of a marsh".
But we aren't talking about.NET. It's not a choice between Java and.NET. I might agree that.NET has patent problems, but that wouldn't make Java's intellectual property situation any better.
Why is this true? Users are not forced to upgrade the VM.
Sure, they are: Linux system components like GNU C/C++ and libraries that Sun's JRE depend on change incompatibly over time. That means that either I need to hold back the rest of my system in order to accomodate an outdated JRE, or I upgrade and lose Java, or I need to keep both sets of libraries around (and probably run into other compatibility problems).
Any system you build that relies on a set of libraries is going to have the same problem.
Not at all. For libraries and systems that are open source, the Linux distribution maintainers recompile everything to work together, and when I upgrade my system, it all just works. Furthermore, when some important system is broken or orphaned, they can fix it and redistribute the fixed version. They can't do that for Java.
The zealot is you: you are "fanatically committed" to Java.
I'm not committed to anything in particular. All I'm saying is that the licenses under which Java is currently available are inconsistent with open source principles. It's up to Sun to change those if they want Java to become more widely adopted by the open source community.
Side rant - I'm sorry that some Java apps don't follow the incredibly strict UI guidelines that all other X11 apps follow. We all know how incredibly consistant every other app is... Everyone should just grab a copy of those Motif guidelines and adhire rigidly!
Yes, you echo Sun's attitude: conceited and ignorant about X11. Rather than making an effort to deliver a reasonable X11 application, they just say "X11 sucks so badly that we might as well just deliver a Windows application and those X11 users won't notice". Well, many of those X11 users aren't satisfied.
Are potential open.Net implementations hampered by patents?
Why do people keep bringing up.NET in this context? This isn't an either/or choice. For each platform, we look at the intellectual property pitfalls on its own and then make decisions accordingly.
The reason that effort has been slow is because it's pretty easy just to add features under your own structure, or extend what is there. So there has not been a big push for that so far. There has been more of a desire for different VM's, which is why you see more third party work in that area.
I don't follow that argument. You are saying people aren't worried about open source Java libraries because it's easy to extend existing libraries, but they are building new VMs because, what?
It still comes down to the fact that any open source project built on the Java 2 platform depends on Sun's Java releases. If Sun screws up their releases, deliberately or accidentally, it affects those open source projects and where they can be run. If Linux systems started depending on Java for things like administrative tools, GUIs, or servers, than entire Linux distributions would become dependent on the quality and timeliness of Sun's Java releases. That just isn't acceptable as far as I'm concerned.
Not only has Sun demonstrated many times that their release quality of their JRE for Linux is highly variable over time, in the long term, they might be tempted to give Solaris an advantage over Linux by holding back Java for Linux deliberately. Unless there is a fully compliant open source implementation of Java, there is little the open source community could do about that.
But if you like a product and have the chance to improve it and in the process help the millions of others who use it to benefit wouldn't you do that regardless of the license?
Would you do free work to help improve Windows? Why not? If you do, you help millions of others, after all.
The fact is that if you make free contributions to a proprietary product, whether from Microsoft or Sun, you may help yourself and help others in the short term, but in the long term, you just strengthen the market position of the vendor. I don't want to depend on Sun-proprietary software any more than I want to depend on Microsoft-proprietary software. In fact, I used to depend on Sun-proprietary software, back in the days before Linux, and it wasn't a lot of fun.
When I contribute to open source software projects (as I do), it isn't to benefit others, it is because I have my own long-term interests in mind: continued software availability, platform neutrality, and vendor independence. I would recommend you curb your altruism as well and consider your own long-term interests. Do you want a world where you depend entirely on Sun products and Sun-licensed software? I don't.
I never said look at the code. What I am trying to get at is that once a native layer to support the needs of AWT and 2D is in place GCJ should be able to compile the already available AWT and Swing source. There would be no need to port these.
That would be the case if GCJ were a completely compatible implementation, but it is not. Furthermore, the way Swing interfaces with AWT/Java2D is not completely documented, so it is impossible to create a AWT/Java2D implementation without looking at the Swing code.
Finally, even if someone figured all of that out, it would be pointless because people still couldn't redistribute Sun's Swing implementation separate from the JDK.
Plus all the AWT and Swing java source code is available in the distribution so go and GCJ yourself into a frenzy.
That is very bad advice. The source code that Sun makes available comes with strong restrictions and obligations, should you be foolish enough to look at it. And you certainly can't port it to gcj and share the result with others.
Any open source developer who looks at Sun's source code is irrevocably contaminated. Don't do it.
When looking at who holds what patents, you must also look at the past actions of the holders.
No, you should not. You should look only at what rights and obligations are legally associated with the license that you get, and what patents and other intellectual property are known.
Here, we are talking about Java, and the JCP and JSPA don't satisfy me as licenses for an open standard. Furthermore, as a practical matter, there simply is no complete, open source implementation of the Java 2 platform. Overall, that means that Java doesn't pass muster as an open source platform. Whether.NET or Mono are any worse from an intellectual property point of view is irrelevant; this is not an either/or choice between Java and.NET. Just because the.NET intellectual property situation could be even worse than the Java intellectual property situation doesn't mean we should all rush to Java.
Reminds me of a drug dealer: first one is always free.
Well, with Java, Sun is offering the drug ("free-as-in-beer Java for Linux"), together with plenty of broken promises ("we will make it an ECMA/ISO/ANSI standard"). In contrast, Microsoft didn't hand a not-quite-free implementation of.NET to Linux developers and say "here, it's free"; if the Mono developers are digging their own grave by cloning.NET, it's their own fault.
So, it seems to me the "first one is always free" analogy applies more to Sun than to Microsoft.
When a standard is submitted through the JCP (Java Community Process) a condition of including that IP in the standard is that you allow others to use any IP embedded in the standard for free, in perpetuity. So whatever patents Sun has around Java can be used by others in the Java world.
But only if you comply with the JCP conditions, and those conditions are incompatible with open source principles.
There are already real, working Java implementations from third parties like GCJ and IBM's VM, which have been around for a while...
That's just nonsense. GCJ is a native code compiler that is not fully compatible with Sun's Java compiler and supports only a tiny fraction of the Java APIs. IBM's VM is just a JVM, not a Java implementation, and it is implemented under license from Sun.
There is no independent Java implementation, open source or commercial, in the sense that Sun defines the term "Java". Java is entirely a Sun-proprietary platform at this point.
And your problem with the JCP is? The JCP covers that as part of the agreement, that all IP used for standards is available royalty free for all users in perpetuity.
I think you should read the JCP documents more carefully; that is not what they say.
And you're saying.Net fares better in that regard? Are you you just trying to draw attention away from the main point.
This whole discussion is about Java and Sun's reluctance to open source it and standardize it. That has nothing to do with.NET. It's pretty ironic that you keep accusing people of "drawing attention away from the main point" since that's exactly what you are doing by bringing up.NET again and again.
It doesn't matter how bad.NET's intellectual property situation is since we aren't discussing.NET. We are discussing Java, open source Java, standards, Sun's behavior relative to Java standards and open source Java, and the risks of adopting Java in an open source environment.
There are plenty of OS projects that live on top of Java. There are even some large GUI ones (like NetBeans). Those manage to fare just fine between releases.
They don't run "fine"; they violate just about every Linux UI convention there is, they are slow, they are bloated, and they don't even install properly on many releases. If Linux GUIs in general deteriorated to the level of NetBeans, Linux would be dead as a client platform.
You are confusing "holding back" with "preventing". Sun's failure to open source Java is, of course, "holding back" Swing for gcj; if Sun's JDK were open source, we'd already have AWT and Swing for gcj. However, it is not preventing it, as people are slowly cloning AWT and Swing.
As a java programmer, I have never found java to be limited as a closed source language.
Oh, but you have. For example, when the latest JDK didn't install on your Linux machine because of shared library incompatibilities. Or when Sun screwed up their Java2D implementation on X11, as they have several times.
The problem with closed source implementations like the JDK is that it gives Sun full control over what happens with Java on Linux. As long as Java is a side-show on Linux (as it is right now) that matters fairly little to Linux as a whole.
But if Java were to become an integral part of, say, the Linux desktop or Linux-based web services, then any screwup on the part of Sun would turn into a big problem for Linux releases. And such screw-ups would probably become deliberate and strategic tools for Sun, a means for making Solaris more attractive relative to Linux.
If you look at Sun's source code, you may be unable to work on any Java or Mono-related open source project in the future, as Sun may consider them derivative works. The Sun Community License is a death trap for open source developers. Don't touch any code covered by it.
Any open source version of Java must be either a clean-room implementation, or it must wait for Sun to release the JDK sources under the LGPL, GPL, or BSD licenses. And even then, you may still have to worry about Sun's patents in some cases.
Ever hear of the JCP? That's the Java standards body.
Yes, but as far as "standards bodies" go, it's not a very good one.
Standards bodies ensure that there is transparency in terms of intellectual property and that people play according to known rules.
They added some nice features in.Net, but Java will again leapfrog them with 1.5. In the meantime there is marginal benefit and a lot of downside with using.Net for anything that matters..NET isn't the issue, and neither are features (in terms of features, both Java and.NET are awful).
At issue is whether Java is sufficiently unencumbered for critical open source projects to rely on it. I think the answer is pretty clearly that it is not. If the Linux desktop UI were built on top of Java, Linux would be in trouble every time Sun misses a release or screws up Java2D on X11.
Java is neither standardized nor open enough yet for Linux to rely on.
Newsflash: Microsoft has not yet patented.NET, they have merely applied for a patent. Even if they get the patent, it will apparently be a patent on the totality of.NET, not every piece of it. In particular, something like Mono seems perfectly safe: it implements ECMA C# and a lot of non-.NET libraries.
Newsflash: Sun has plenty of patents on key aspects of Java APIs and the JVM (check the uspto site).
As long as Red Hat keeps additions out of the java.*, javax.*, sun.*, and com.sun.* namespaces, preferably limiting them to com.redhat.* and org.gnome.*, Sun would not consider Red Hat's additions to "corrupt" the platform.
If it's open source, it shouldn't be up to Sun to decide. I should be able to take javax.swing.* and put it into Mono, so that I can run Swing applications on Mono. Of course, that "corrupts" Java, but if it's open source, I should be able to do it.
You mean these patents? Can you pick one out that doesn't have an extensive body of prior art?
Sun didn't pay $50k each for these patents out of stupidity. They know that they can use them to create a lot of problems for Java implementations that they don't like.
If anyone "corrupts" Java so it can't pass the conformance tests (ie, adds keywords, stupid C# stuff, or anything like that) it's not Java.
Absolutely. And that's the point: if RedHat and Sun release their version of Java as "open source" software, people should have the ability to take that code base and change it incompatibly into something that is not Java. If the RH/Sun release prevents such changes, it's not open source software.
Sun has promised a lot in the past for Java and then gone back on their word. For example, Sun promised an open Java standard but then pulled out of two standardization efforts.
If this gets dragged into the JCP process or stays under Sun's "community source" umbrella, it will not be open source in the way that we know it. If people aren't free to "corrupt" the open source Java in any way they like, it will not be open source; for example, one project of key importance for Java on Linux would be native bindings to Gnome.
A closely related question to be answered is what the patent situation around any such "open source" version of Java will be; Sun currently holds several patents that effectively block fully compatible open source implementations. Will Sun dedicate those patents to the public domain? Or will the "open source Java" adopt a license that makes the code open source but lets Sun retain control over who gets to use it through patents?
To Sun, Linux is as much as a threat as Microsoft, and their strategy is the same: make the OS irrelevant by replacing it with a Sun-controlled platform that runs on top of the OS. The Linux community should be as paranoid about that occurring as Microsoft management is. Sun is, ultimately, not a friend of Linux.
Maybe Sun is serious about creating an "open source" version of Java in the sense we all use the term. But I will reserve my judgement until there is something concrete on the table. So far, every promise of opening up Java by Sun has turned out to be a smokescreen and a distraction.
I was working on something that was from scratch. How different would it have been?
* A new shell (no bash, no ash, no sh at all!)
* A new shell scripting language
* A new (universal) packaging scheme (would retrofit other OSes)
* A true application management system
* A new core process management system (No 'init' here...)
That's just a short list from memory, for the sake of making people ill with longing. (YES, YES, Burn with desire! Muhahaha!)
Does this solve any problem anybody has? Does this solve a problem Dave has himself? I don't think so. It's a lot of whining over the fact the people don't give Dave money to live out his second system effect phantasies.
The GPL is very pragmatic: you take whatever GPL'ed components you need in order to solve your own problem and you are encouraged to contribute whatever you developed on top of them back to the community. That's all. If you don't have a problem to solve, you shouldn't be using GPL'ed code in the first place.
If you want to develop a new system from scratch and then make money with it, by all means, get some investors and try to sell the result. Personally, I think the market value of a system like Dave outlines above is pretty much zero, but that's between him and potential investors.
I think that everyone can agree that this guy seriously needs a day job. He should work on the Linux Router project in his spare time, but make sure that he has the money coming in to pay those bills.
He shouldn't be working on the LRP at all unless it solves a problem he himself needs to solve.
His example is a good one to remember when deciding whether or not to open source your software projects.
He took existing GPL'ed components and put them together to solve another problem. He didn't have a choice in whether to "open source" the result or not.
If he did all this work just to become famous or get a job, he wasted his time. The only reason to do what the LRP project did was if he needed the LRP to get his own work done.
Microsoft C++ also contains plenty of extensions, and that hasn't made ANSI C++ irrelevant.
But it is. Numerous people have pointed to this as a potential problem with Mono. But there are no cloads like this looming over GCJ, for example.
Again, why do you keep talking about Mono? Mono isn't relevant. I'm not using Mono. I'm not saying you should use Mono instead of Java. I don't give a damn about Mono at this point. The question is whether Java's license is suitable for widespread adoption of Java by open source projects.
You can build a VM and duplicate the Java libraries without threats of patents hitting you if you try to use it.
You can say the same thing about Microsoft Windows. In fact, there have been several independent implementations of Windows, and none of them have caught on. Patents or not, Sun controls Java like Microsoft controls Windows, and the consequences would be equally dire if Java caught on like Windows.
As a theoretical argument it raises an interesting point, but how much has that happened in reality?
Sun Java releases fail with regularity on Linux systems. They are also a pain to update because they don't fall under the regular packaging system and because they can't just be ported to different architectures.
On our production UNIX servers this kind of problem has never been an issue because the servers change at a measured pace, and are not running code living on the edge. We upgrade Java and the rest of the system together.
If you run UNIX servers, your vendor keeps the OS and the Java releases in sync. Open source systems can't do that because there is no open source Java; Java on those systems requires special treatment.
I still don't see the argument. You have stable releases right now, that include Java, and everything works great as you say. But then you have unstable releases where not everything works perfectly, Java being only one piece of that puzzle. Just because someone else does the work of trying to match library versions does not make it less hard...
I have no idea what "stable" vs. "unstable" has to do with it; upgrades are a fact of life because of necessary bug and security fixes, changing protocols, and required new functionality. You cannot keep running old systems indefinitely, no matter how "stable" they may be.
Right now, Sun has complete control over the only compliant Java implementation on Linux, either directly, or through their license agreements. That is an untenable situation as far as I'm concerned. Sun competes directly with Linux. If they retain control over Java, they can decide to screw Java users on Linux whenever it suits their business interests.
Sun gets panicky at the idea that their competitor, Microsoft, controls even the tiniest piece of Java. Well, Linux developers should be equally concerned that their competitor, Sun, controls even the tiniest piece of a Linux system.
However, isn't the Linux Java release based on the blackdown effort (sorry, it's been a few years since I've used Java on Linux)? I think the real problem (like the classpath effort) is that not enough people care enough to join in and write some code to base Java2D over something like RENDER (which does sound like a good idea).
But why should people volunteer to improve a proprietary implementation? I mean, we don't expect developers to develop better alternatives for Windows components and give them to Microsoft for free.
And, historically, when people have tried, Sun has simply refused to accept the code anyway. Sun apparently wants a Java2D codebase that is very similar between Windows and X11, so they are thinking about basing Java2D on DirectX and DRI.
If Sun folded tomorrow, the source for these ports would be around and VM work would continue
Just because Sun folds doesn't mean you can do with that code whatever you like. Rather, the copyright would get transferred to Sun's creditors or whoever else snaps up the remnants of Sun, and they would try to make as much money out of it as they can. They might jack up the licensing fees they charge IBM and others, and they might come up with ways of revoking any rights that allow open source implementations. I think the end result would probably be an SCO-like melt-down, with lawyers claiming that everything and anything Java-related belongs to them.
You'd think people would at least check the Nobel prizes for prior art. This sort of stuff was the subject of work by Norrish and Porter around 1950, for which they received the Nobel prize in 1967 (together with Eigen). More info here.
It really makes no difference at this point whether they declare that they won't sue their own Linux customers: they had already accepted their obligations under the GPL when they distributed their version of Linux in the first place. The only thing that it underlines (again) is how poor their understanding of their obligations under the GPL is.
even though a lot of things around Java are in fact quite open.
Yes, a lot of things around Java are "quite open", and that is nice. I also like the idea of a language like Java--fairly simple, easy to use for working programmers, etc.
My problem with Java is a very specific one: the more open source efforts start relying on it, the more the open source world is at the mercy of Sun, given the current Java implementations landscape. This isn't some theoretical concern, it's very practical: Sun keeps messing up things like Swing and Java2D, and conforming Java applications that I have written stop working on Linux or work more poorly over time. IBM's Java for Linux distribution doesn't help, and neither does gcj.
OK you are an X11 UI fan. But what are you really a fan of? I like networkable UI's, and I dislike UI guidelines in general - but as X11 has evolved over the years you now have a mishmash of UI "standards" in that world, and I hardly see that Java adding on yet another UI worldview is cause for alarm. Are you really a fan of GTK or the KDE libraries? What about X11 do you consider "correct"? There sure are a lot of options to choose from.
I think it has been a mistake for Gtk+ and KDE to ignore some traditional X11 conventions. But there are many other conventions they conform with, and at least they are trying to improve things under X11 as they go along. NetBeans (and other Swing applications) often seem like they written for Windows and rely simply on default cross-platform features for X11 support.
A more fundamental question to me is: if Sun is serious about producing a high-quality Swing/Java2D implementation for Linux and UNIX, why aren't they building something on top of the X11 protocol and using the latest X11 features, like RENDER? It just looks to me like X11 is of little importance to Sun. But since X11 is the primary window system on Linux, that means that Java just isn't a good platform for writing Linux GUI applications as far as I'm concerned?
Sun may justify their behavior by saying that Linux is of little importance for client-side applications, but if that is their attitude, then they also have to be satisfied if Linux users say "no thanks".
It's called planning ahead, and follows the same line of thinking as "don't build a house in the middle of a marsh".
.NET. It's not a choice between Java and .NET. I might agree that .NET has patent problems, but that wouldn't make Java's intellectual property situation any better.
But we aren't talking about
Why is this true? Users are not forced to upgrade the VM.
Sure, they are: Linux system components like GNU C/C++ and libraries that Sun's JRE depend on change incompatibly over time. That means that either I need to hold back the rest of my system in order to accomodate an outdated JRE, or I upgrade and lose Java, or I need to keep both sets of libraries around (and probably run into other compatibility problems).
Any system you build that relies on a set of libraries is going to have the same problem.
Not at all. For libraries and systems that are open source, the Linux distribution maintainers recompile everything to work together, and when I upgrade my system, it all just works. Furthermore, when some important system is broken or orphaned, they can fix it and redistribute the fixed version. They can't do that for Java.
Sorry, I dont argue with zealots.
The zealot is you: you are "fanatically committed" to Java.
I'm not committed to anything in particular. All I'm saying is that the licenses under which Java is currently available are inconsistent with open source principles. It's up to Sun to change those if they want Java to become more widely adopted by the open source community.
Side rant - I'm sorry that some Java apps don't follow the incredibly strict UI guidelines that all other X11 apps follow. We all know how incredibly consistant every other app is... Everyone should just grab a copy of those Motif guidelines and adhire rigidly!
Yes, you echo Sun's attitude: conceited and ignorant about X11. Rather than making an effort to deliver a reasonable X11 application, they just say "X11 sucks so badly that we might as well just deliver a Windows application and those X11 users won't notice". Well, many of those X11 users aren't satisfied.
Are potential open .Net implementations hampered by patents?
.NET in this context? This isn't an either/or choice. For each platform, we look at the intellectual property pitfalls on its own and then make decisions accordingly.
Why do people keep bringing up
The reason that effort has been slow is because it's pretty easy just to add features under your own structure, or extend what is there. So there has not been a big push for that so far. There has been more of a desire for different VM's, which is why you see more third party work in that area.
I don't follow that argument. You are saying people aren't worried about open source Java libraries because it's easy to extend existing libraries, but they are building new VMs because, what?
It still comes down to the fact that any open source project built on the Java 2 platform depends on Sun's Java releases. If Sun screws up their releases, deliberately or accidentally, it affects those open source projects and where they can be run. If Linux systems started depending on Java for things like administrative tools, GUIs, or servers, than entire Linux distributions would become dependent on the quality and timeliness of Sun's Java releases. That just isn't acceptable as far as I'm concerned.
Not only has Sun demonstrated many times that their release quality of their JRE for Linux is highly variable over time, in the long term, they might be tempted to give Solaris an advantage over Linux by holding back Java for Linux deliberately. Unless there is a fully compliant open source implementation of Java, there is little the open source community could do about that.
But if you like a product and have the chance to improve it and in the process help the millions of others who use it to benefit wouldn't you do that regardless of the license?
Would you do free work to help improve Windows? Why not? If you do, you help millions of others, after all.
The fact is that if you make free contributions to a proprietary product, whether from Microsoft or Sun, you may help yourself and help others in the short term, but in the long term, you just strengthen the market position of the vendor. I don't want to depend on Sun-proprietary software any more than I want to depend on Microsoft-proprietary software. In fact, I used to depend on Sun-proprietary software, back in the days before Linux, and it wasn't a lot of fun.
When I contribute to open source software projects (as I do), it isn't to benefit others, it is because I have my own long-term interests in mind: continued software availability, platform neutrality, and vendor independence. I would recommend you curb your altruism as well and consider your own long-term interests. Do you want a world where you depend entirely on Sun products and Sun-licensed software? I don't.
I never said look at the code. What I am trying to get at is that once a native layer to support the needs of AWT and 2D is in place GCJ should be able to compile the already available AWT and Swing source. There would be no need to port these.
That would be the case if GCJ were a completely compatible implementation, but it is not. Furthermore, the way Swing interfaces with AWT/Java2D is not completely documented, so it is impossible to create a AWT/Java2D implementation without looking at the Swing code.
Finally, even if someone figured all of that out, it would be pointless because people still couldn't redistribute Sun's Swing implementation separate from the JDK.
Plus all the AWT and Swing java source code is available in the distribution so go and GCJ yourself into a frenzy.
That is very bad advice. The source code that Sun makes available comes with strong restrictions and obligations, should you be foolish enough to look at it. And you certainly can't port it to gcj and share the result with others.
Any open source developer who looks at Sun's source code is irrevocably contaminated. Don't do it.
When looking at who holds what patents, you must also look at the past actions of the holders.
.NET or Mono are any worse from an intellectual property point of view is irrelevant; this is not an either/or choice between Java and .NET. Just because the .NET intellectual property situation could be even worse than the Java intellectual property situation doesn't mean we should all rush to Java.
.NET to Linux developers and say "here, it's free"; if the Mono developers are digging their own grave by cloning .NET, it's their own fault.
No, you should not. You should look only at what rights and obligations are legally associated with the license that you get, and what patents and other intellectual property are known.
Here, we are talking about Java, and the JCP and JSPA don't satisfy me as licenses for an open standard. Furthermore, as a practical matter, there simply is no complete, open source implementation of the Java 2 platform. Overall, that means that Java doesn't pass muster as an open source platform. Whether
Reminds me of a drug dealer: first one is always free.
Well, with Java, Sun is offering the drug ("free-as-in-beer Java for Linux"), together with plenty of broken promises ("we will make it an ECMA/ISO/ANSI standard"). In contrast, Microsoft didn't hand a not-quite-free implementation of
So, it seems to me the "first one is always free" analogy applies more to Sun than to Microsoft.
When a standard is submitted through the JCP (Java Community Process) a condition of including that IP in the standard is that you allow others to use any IP embedded in the standard for free, in perpetuity. So whatever patents Sun has around Java can be used by others in the Java world.
But only if you comply with the JCP conditions, and those conditions are incompatible with open source principles.
There are already real, working Java implementations from third parties like GCJ and IBM's VM, which have been around for a while...
That's just nonsense. GCJ is a native code compiler that is not fully compatible with Sun's Java compiler and supports only a tiny fraction of the Java APIs. IBM's VM is just a JVM, not a Java implementation, and it is implemented under license from Sun.
There is no independent Java implementation, open source or commercial, in the sense that Sun defines the term "Java". Java is entirely a Sun-proprietary platform at this point.
And your problem with the JCP is? The JCP covers that as part of the agreement, that all IP used for standards is available royalty free for all users in perpetuity.
.Net fares better in that regard? Are you you just trying to draw attention away from the main point.
.NET. It's pretty ironic that you keep accusing people of "drawing attention away from the main point" since that's exactly what you are doing by bringing up .NET again and again.
.NET's intellectual property situation is since we aren't discussing .NET. We are discussing Java, open source Java, standards, Sun's behavior relative to Java standards and open source Java, and the risks of adopting Java in an open source environment.
I think you should read the JCP documents more carefully; that is not what they say.
And you're saying
This whole discussion is about Java and Sun's reluctance to open source it and standardize it. That has nothing to do with
It doesn't matter how bad
There are plenty of OS projects that live on top of Java. There are even some large GUI ones (like NetBeans). Those manage to fare just fine between releases.
They don't run "fine"; they violate just about every Linux UI convention there is, they are slow, they are bloated, and they don't even install properly on many releases. If Linux GUIs in general deteriorated to the level of NetBeans, Linux would be dead as a client platform.
You are confusing "holding back" with "preventing". Sun's failure to open source Java is, of course, "holding back" Swing for gcj; if Sun's JDK were open source, we'd already have AWT and Swing for gcj. However, it is not preventing it, as people are slowly cloning AWT and Swing.
As a java programmer, I have never found java to be limited as a closed source language.
Oh, but you have. For example, when the latest JDK didn't install on your Linux machine because of shared library incompatibilities. Or when Sun screwed up their Java2D implementation on X11, as they have several times.
The problem with closed source implementations like the JDK is that it gives Sun full control over what happens with Java on Linux. As long as Java is a side-show on Linux (as it is right now) that matters fairly little to Linux as a whole.
But if Java were to become an integral part of, say, the Linux desktop or Linux-based web services, then any screwup on the part of Sun would turn into a big problem for Linux releases. And such screw-ups would probably become deliberate and strategic tools for Sun, a means for making Solaris more attractive relative to Linux.
If you look at Sun's source code, you may be unable to work on any Java or Mono-related open source project in the future, as Sun may consider them derivative works. The Sun Community License is a death trap for open source developers. Don't touch any code covered by it.
Any open source version of Java must be either a clean-room implementation, or it must wait for Sun to release the JDK sources under the LGPL, GPL, or BSD licenses. And even then, you may still have to worry about Sun's patents in some cases.
Ever hear of the JCP? That's the Java standards body.
.Net, but Java will again leapfrog them with 1.5. In the meantime there is marginal benefit and a lot of downside with using .Net for anything that matters. .NET isn't the issue, and neither are features (in terms of features, both Java and .NET are awful).
Yes, but as far as "standards bodies" go, it's not a very good one.
Standards bodies ensure that there is transparency in terms of intellectual property and that people play according to known rules.
They added some nice features in
At issue is whether Java is sufficiently unencumbered for critical open source projects to rely on it. I think the answer is pretty clearly that it is not. If the Linux desktop UI were built on top of Java, Linux would be in trouble every time Sun misses a release or screws up Java2D on X11.
Java is neither standardized nor open enough yet for Linux to rely on.
Newsflash: Microsoft has not yet patented .NET, they have merely applied for a patent. Even if they get the patent, it will apparently be a patent on the totality of .NET, not every piece of it. In particular, something like Mono seems perfectly safe: it implements ECMA C# and a lot of non-.NET libraries.
Newsflash: Sun has plenty of patents on key aspects of Java APIs and the JVM (check the uspto site).
As long as Red Hat keeps additions out of the java.*, javax.*, sun.*, and com.sun.* namespaces, preferably limiting them to com.redhat.* and org.gnome.*, Sun would not consider Red Hat's additions to "corrupt" the platform.
If it's open source, it shouldn't be up to Sun to decide. I should be able to take javax.swing.* and put it into Mono, so that I can run Swing applications on Mono. Of course, that "corrupts" Java, but if it's open source, I should be able to do it.
You mean these patents? Can you pick one out that doesn't have an extensive body of prior art?
Sun didn't pay $50k each for these patents out of stupidity. They know that they can use them to create a lot of problems for Java implementations that they don't like.
If anyone "corrupts" Java so it can't pass the conformance tests (ie, adds keywords, stupid C# stuff, or anything like that) it's not Java.
Absolutely. And that's the point: if RedHat and Sun release their version of Java as "open source" software, people should have the ability to take that code base and change it incompatibly into something that is not Java. If the RH/Sun release prevents such changes, it's not open source software.
Sun has promised a lot in the past for Java and then gone back on their word. For example, Sun promised an open Java standard but then pulled out of two standardization efforts.
If this gets dragged into the JCP process or stays under Sun's "community source" umbrella, it will not be open source in the way that we know it. If people aren't free to "corrupt" the open source Java in any way they like, it will not be open source; for example, one project of key importance for Java on Linux would be native bindings to Gnome.
A closely related question to be answered is what the patent situation around any such "open source" version of Java will be; Sun currently holds several patents that effectively block fully compatible open source implementations. Will Sun dedicate those patents to the public domain? Or will the "open source Java" adopt a license that makes the code open source but lets Sun retain control over who gets to use it through patents?
To Sun, Linux is as much as a threat as Microsoft, and their strategy is the same: make the OS irrelevant by replacing it with a Sun-controlled platform that runs on top of the OS. The Linux community should be as paranoid about that occurring as Microsoft management is. Sun is, ultimately, not a friend of Linux.
Maybe Sun is serious about creating an "open source" version of Java in the sense we all use the term. But I will reserve my judgement until there is something concrete on the table. So far, every promise of opening up Java by Sun has turned out to be a smokescreen and a distraction.
The GPL is very pragmatic: you take whatever GPL'ed components you need in order to solve your own problem and you are encouraged to contribute whatever you developed on top of them back to the community. That's all. If you don't have a problem to solve, you shouldn't be using GPL'ed code in the first place.
If you want to develop a new system from scratch and then make money with it, by all means, get some investors and try to sell the result. Personally, I think the market value of a system like Dave outlines above is pretty much zero, but that's between him and potential investors.
I think that everyone can agree that this guy seriously needs a day job. He should work on the Linux Router project in his spare time, but make sure that he has the money coming in to pay those bills.
He shouldn't be working on the LRP at all unless it solves a problem he himself needs to solve.
His example is a good one to remember when deciding whether or not to open source your software projects.
He took existing GPL'ed components and put them together to solve another problem. He didn't have a choice in whether to "open source" the result or not.
If he did all this work just to become famous or get a job, he wasted his time. The only reason to do what the LRP project did was if he needed the LRP to get his own work done.