Free Java advocacy (was Re: Improving Java for Linux)

Jim Pick jim at jimpick.com
Fri Nov 7 11:44:10 PST 1997


> : > Microsoft is right.  Sun is trying to turn the Java platform into a
> : > proprietary environment which only Sun controls.  
> 
> I disagree, because Sun has applied to submit Java for ISO
> standardization.

And they were rejected, weren't they?  The main problems were that Sun
wanted to retain some measure of control, including control over the
Java trademark.

What I find really scary is how close ISO actually came to actually accepting
Sun's terms.  This is primarily due to the fact that ISO is controlled
by corporate entities - most of whom have cut deals with Sun.

Personally, I advocate taking all "standards" with a grain of salt.  It
pays to be educated.

> Certainly it may be foolhardy for Sun to restrict reference platform
> source code the way it does, but that does not make Sun the enemy of
> free-dom.  

I don't believe Sun is acting foolhardy at all.  They have done an
extremely amazing job of getting a huge developer community to "buy in"
to the Java concept.  From their point of view, they have fashioned
themselves an extremely lucrative multi-billion dollar niche for themselves
if they can retain some measure of control over the "platform".  Perhaps
it's time for you to read over their annual report.  They have no plans
to "give away" Java.

I think they may push the core Java spec and language out to a standards
body beyond their control.  But only after they have built up a huge enough
developer community that are using the proprietary Sun APIs.  These APIs
won't be handed over to a normal standards body.  And the standards body will
have little leeway to modify the core spec substantionally, due to the huge
mass of existing code which needs to remain compatible.

Essentially, Sun will use the standards process to cement their monopoly.
Microsoft tried to do basically the same thing, by submitting COM to
the Open Group -- but I don't think anybody "bought it". 

> : > So, does anybody else feel like it might be time to "diverge" a bit from
> : > Sun's definition of what the Java platform should be?  
> 
> Foolhardy.  Defeats the whole purpose of Java.  Wait until ISO
> standardizes.  If ISO standardizes, Sun will follow, and so should
> free-dom.

If a standard emerges, that would be good.  It hasn't happened yet.  I do
hope they standardize the core language.  I'm not advocating deviating from
that.  I do think we should deviate from the extended APIs Sun is 
advocating beyond that, however.

I really doubt that extended APIs such as the "swing" widgets will be a
part of any such standard.  They are very implementation dependent -- and
it is very difficult to draw up a specification and test suite that captures
all the details of an implementation.  No normal standards body would
write such a thing up as a standard.  That is why Sun is trying to get
itself certified as a standards body.  Too bizarre.

So if free software people code to these extended APIs, and no real standard
comes forth for them -- we are forced into the situation where we have to
clone Sun's implementations of all their zillions of add-on libraries
to have a 100% free solution.  Even worse, we would have to accept bad
design decisions and buggy behaviour that Sun had built into their
implementations as part of the "standard" libraries.  So we'd have to
re-implement all that garbage.  Plus, we would have no opportunity to
improve upon what Sun started, or to pursue better integration with the
GNU platform.

There are several free software projects that are pursueing outright
cloning of proprietary implementations.  The Wine project is trying to
clone Win32.  LessTif is trying to clone Motif.  GNUStep is trying to
clone OpenStep.  All are worthy projects.  Unfortunately, I don't think
any of them will form the basis for the next generation of free software.
That's because they are hamstrung by compatibility problems.  It is
really difficult to get volunteers to get enthused enough to code for
projects which consist of 100% grunt work.  You'll notice that every
one of these projects, although successful, have only been able to 
clone APIs that are several years behind the state of the art. 

> : Is Java patented?
> 
> No.

Careful.  Are you sure?

I'm pretty sure the core language isn't patented.  It's pretty simple.

But look at the extended APIs.  Sun cross-licenses Abobe stuff for their
Java2D API.  Did they cross-license patents?  Sun isn't really obligated
to say whether or not the binaries they distribute include patented
algorithms.  I think HotSpot is patented.  Look at Sun's press releases
for the past 2 years - you'll notice they cut deals with just about everyone.
Cross-licensing of patents is how Silicon Valley operates.

What encryption algorithms is Sun using?  I bet they are patented (in
the US at least).  Didn't Microsoft have objections against the JAR
file format because it was too proprietary?

Personally, I feel most software patents won't stand up in court.  But
that's small consolation when you are a volunteer for a free software project
and you get sued by a company that can afford millions of dollars in
legal expenses.  (and Sun sure does like to sue)
 
So, I'd like to reiterate what I was advocating:

 1) We re-implement the core java language and libraries.  Note:  This
    does not mean the entire java.* heirarchy.  Sun has been loading all
    sorts of APIs into that space which don't meet my definition of
    "core API".  Microsoft obviously feels the same way, and is getting
    sued as a result.

 2) We should attempt to implement Sun's extended APIs if they make sense,
    and somebody is interested enough to do the work.  Some of their APIs
    look quite good, and are probably worthwhile cloning with 100%
    compatibility.  But I can't advocate 'cloning JFC' or 'cloning JavaBeans'
    when I've never used them and can't say whether they are good,
    workable designs or not.  If they aren't good designs, or if they
    won't interoperate with the GNU platform - I say: "Why bother cloning
    them?"

 3) We should work to build free class libraries that integrate with other
    software in the GNU platform.  These would be original, and may
    interface with native methods.  This represents a "divergence" from
    Sun's plan for Java.

 4) We should advocate that free software projects should only use APIs
    which are free, or for which there is a substantial effort underway
    to clone them.  Currently, JFC or JavaBeans don't meet that spec.

 5) We should strive to support running of Sun's proprietary class
    libraries on top of our free libraries.  That way we can maintain
    cross-platform compatibility with proprietary software using Sun's
    proprietary APIs.  (GPL'd software that uses proprietary libraries
    counts as proprietary)

 6) We should work to make sure our free implementation of Java and the
    rest of the GNU platform are ported to as many OS's as possible.  That
    way, people who want to write cross platform code have a choice between
    the proprietary Sun Java platform -- or the free GNU Java platform.

I hope I'm clear on what I'm advocating.  You've got to be very careful
with Sun.  They are putting forth a system which they say is "free, open,
and standard" -- but it does not qualify as "Free Software" free, until
we have a implementation that does the same thing.

Cheers,

 - Jim



-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 345 bytes
Desc: not available
Url : http://kaffe.org/pipermail/kaffe/attachments/19971107/a736e8dc/attachment-0003.pgp 


More information about the kaffe mailing list