Artur Biesiadowski wrote:
> And second question - can somebody summarize the license for me -for me
> it is lawyers garbage.
This is my interpretation of the license as nearly as I understand it,
without legal background or background in the laws of california nor any
laws of the united states. I'm glossing over a great deal of the details
in the license in this e-mail. I could be writing satanic messages in
this e-mail. You could lose your soul and worse by reading it, and I
have no responsibility for that. Get it? *** This is just my opinion of
the meaning of the license agreement for Java 2 and may have no basis in
fact. ***
Whew. Ok, here goes.
As I read it, the Java 2 license allows you to download the code, modify
it as much as you want, and tinker with it for personal use or research
as much as you want. You have no obligation to do anything with what you
generate until distribution time. If you never distribute your
work/research/personal hacks, that's fine - you can use the code for
whatever personal use you like. Your work belongs to you. In this sense
it is similar to GPL/LGPL, in that its restrictions only come into play
when you distribute your work.
Now, you've done something cool, and you want to give it to someone. In
this case, the license binds you to two main restrictions. The first is
that code in the JDK that you've modified must be returned to Sun for
inclusion in the source code base of future releases. These
modifications basically become part of the next version of the JDK. To
my reading of it there's not much different here than how Classpath
requires you to sign over your rights to mods to Classpath to make them
free; except in this case you are giving your code back to Sun to be
included in Sun's future releases of Java. You retain rights to your
code, but grant sun a non-exclusive right to use and distribute your
code, so you can still take your mods and sell them to someone else or
use them for some other purpose.
The second is that code outside the JDK that you've added - such as an
implementation of a standard extension for controlling LEGO(tm)
Mindstorms robots, for example - must have a documented set of
interfaces that some other competent developer could conceivably use to
build a clean-room implementation of the same functionality. However, if
in implementing their implementation of your documented extension they
violate your patents, you're free to sue them for doing so. Since you
need to document your API so people can use it anyway, this doesn't seem
like a big deal. The agreement only requires you to document the public
interfaces of your extension, which corresponds exactly to what you need
to document anyway so that people will use your library. There's nothing
in the license to stop you from releasing your API as an LGPL
extension, as far as I can see.
And basically, that's it. You can terminate the agreement at any time by
sending a letter to Sun, and you can give the source to students if you
are a teacher at a university or college, along with some information
about what they can do with it.
Overall, aside from actually making the source GPL, I can't see what
more they could have done to make the license more friendly. And they
really can't make it GPL now, after lots of companies have forked over
lots of cash to get in on the Java thing. Open-source and/or GNU/GPL is
supposed to be about freedom to modify and fix bugs in code you get, and
to return those changes to others -- GNU/GPL is not supposed to be about
cost (http://www.gnu.org/philosophy/free-sw.html). This license clearly
gives you total freedom to work on the code you've downloaded for your
personal use, and gives you a moderated way (via Sun) to return your
code to the public.
In other words, as far as I can see, the community source license is
every bit as good and free and altruistic as GPL. The main difference is
that if you want to mix proprietary code with GPL code you are
prohibited from doing so, whereas sun allows it provided you're prepared
to pay for commercial licensing/distribution priviledges.
Another major difference is that you can't just give your code to the
world but have to give it back to sun, who then distributes it to the
world. But how different is that, really, from the Linux kernel? Who can
stand up and say that if Linus doesn't accept a change they will go to
the time and effort to fork the project and try to create a Linux++
kernel with its own following? My point is that in the open-source world
there are also gatekeepers of source code changes, and your code either
makes it past the gatekeeper for the project or it doesn't. While you
are free to fork the project and start another this is rarely workable.
So what if Sun has to accept your changes then? It's just like the
open-source way except that if you *really* want to fork the project you
probably can't. And since forking is a bad thing, this restriction may
not matter much after all.
Now, let the flames begin :-P
alex