Hopefully this actually gets delivered.  For those who don't know,
the GNU mailserver crashed hard.  Commence primary ignition ...

Here are some of my general thoughts on the topic of a Classpath-Gcj
merger.  I'll try to read through some of my backlogged mail and
respond to any specific points not covered here.

1.  What does this all mean?  Well, in a way Classpath and Gcj are
trying to do two different things.  Classpath has basically been trying
to create a class library for Japhar, with the idea that it would
be adapted to other JVM's as needed.  Gcj has been developing a Java
fronted to gcc, which allows for native compilation of Java programs,
with an eye towards their embedded systems market.  The real area of
overlaps seems to be that gjc needs a free class library.  So when
we say the "projects" are merging, what I interpret that as is that
we are combining our class library efforts in some fashion.  Most
of gjc should not be affected at all.  Similarly, my goal of creating
a class library that works with multiple VM enviroments - particularly
Japhar - has not changed.

2.  Licensing.  I'm not familiar with the libstdc++ license, but what
was sent to the list appears to be similar to the Guile license.  Is
that a correct interpretation?

3.  Brief description of overlap.  I looked at the latest gjc code
from CVS.  The class library is not nearly as far along as I had thought,
which is good news.  Here is my first glance reaction at what we
might want to do as far as merging the code.  Covering mostly 1.1.

The following packages exist in Classpath in some form, but not in
gjc, thus the Classpath version should be used:

java.applet (still need an appletviewer)
java.beans
java.math (I thought Per had a version of this?)
java.sql

The following packages exist in gjc in some form, but not in Classpath

java.util.zip
java.util.jar

Note that Loren Peace is supposedly nearly done with a version of these
for Classpath, but we have yet to see code.  Gjc's java.util.jar looks
to be missing most classes, so if Loren comes through there, we might
want to use implementation.

The rest of the packages obviously are unimplemented or overlap.  These
are:

java.awt.* - Gjc has started some implementation, but it is mostly stub
or skeletal classes and many are missing.  Classpath has almost all of
the AWT stuff written (though not yet working) and a working set of
GTK+ peers.  I think the Classpath code should be used here.

java.io - Classpath is written to be fully 1.2 compliant, is fully
documented, and has about 20 more classes written than gjc.  I suggest
using the Classpath version.  We should look at a few specific
classes to see whether the gjc implementation might be better.  For
example, my versions of BufferedInputStream and BufferedReader are
pretty hacky.

java.lang - Both projects have a fairly complete implementation.  I'm
not sure what to do here.  Will require further investigation.

java.lang.reflect - Both have something here, but this is rather VM
specific, so probably isn't all that relevant.

java.net - Both projects have a relatively complete implementation.
Classpath's java.net was the very first thing I wrote almost two
years ago and I think it may not be the greatest.  Assuming the gjc
guys think their implementation is solid, it might be best to 
use that, though comparing specific classes for useful tricks might
be a good idea.

java.rmi.* - Don't have any, but I believe Transvirtual Technologies
has said they are going to release an LGPL'd version of this.  Something
to think about.

java.security.* - gjc has a couple classes written, while Classpath has
a nearly full (but not yet working, IIRC) java.security.* implementation
courtesty of Mark Benvenuto.  The Classpath version should be used.

java.text.* - Both projects have a lot of this implemented.  I wrote
java.text for Classpath and it is not yet debugged.  If the gjc guys
feel confident in theirs, we might want to use it.  This one requires
some investigation.  I do think there are some classes Classpath wrote
that gjc did not.  It looks like we might be further along in locale
specific things too.

java.util - Classpath appears to have a much more complete implementation
and thus should be used, with the overlapping classes examined for
superior implementations.

4.  Documentation.  Someone mentioned that documentation is not important
for the class libraries because this information is readily available from
other places.  I strongly disagree.  Free software needs free documentation.
While I am going forward with the objective of making a version that is
100% compatible with the Sun reference implementation, others may not
share this goal.  If they exercise their right to make modifications,
they will also want to be able to modify the documentation, which would
be impossible without a free version.  Additionally, the Sun class
library documentation I've read is very deficient in many areas.  Surely
we can (eventually) do a better job.

I would like to not only be able to generate high quality browseable,
javadoc like documentation, but also figure out a way to auto-generate
a Texinfo manual that could be used to create a hardcopy book similar
to the Sun class library reference manuals.

Classpath would be done twice over if we had not done any documentation.
I'm glad we've taken the time to do the docs to at least the level
we have.

5.  Coding Style.  I hate to even get into this because it is a clear
holy war topic.  I have my own style, similar to the GNU C coding
style, because that's what I'm used to and because I hate Sun's
style.  (There is simply no excuse for not making all method names
begin in column zero, where they are easily located in vi, IMNSHO).
Let's concentrate on getting the important stuff done first, and
worry about this later when we have the luxury of time to argue over
this.

6.  Mechanics of merger.  New copyright headers, etc.  Boring housekeeping
stuff we can hopefully automate at least somewhat.  Some thought needs
to be put into how we handle CVS, mailing lists, bug tracking, etc.
This might be one area where Cygnus' superior development infrastructure
might help out.

-- 
Aaron M. Renn ([EMAIL PROTECTED]) http://www.urbanophile.com/arenn/

Reply via email to