Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Apr 1999 01:16:47 -0600
From:      Nate Williams <nate@mt.sri.com>
To:        freebsd-java@FreeBSD.org
Subject:   TODO list of project for FreeBSD/Java
Message-ID:  <199904300716.BAA18710@mt.sri.com>

next in thread | raw e-mail | index | archive | help
[
Unfortunately, there's nothing here specific to Java2, but all of the
changes would be applicable to that codebase in a separate form as well.
]

We need people who are willing to get the source code to JDK1 and
provide the following features for FreeBSD.

0) Get SUN to release sources to JDK1.1.8, instead of Motif and ODBC
   drivers.

[
This one is tongue-in-cheek, but Sun really screwed up when they built
the JDK1.1.8 source tarball.  It doesn't contain any sources to the
JDK, and they aren't replying to my followup faxes. :(
]

Now, onto the 'real' tasks.  The pre-requisites to these tasks are:

0) You must have the JDK sources from Sun, preferably JDK1.1.7, although
   *IF* they release JDK1.1.8 I suspect that the patches on the WWW page
   should work fine for it as well.  (Although, some of the JDK1.1.8
   fixes may not be in the resulting binaries created from it.)

1) You must know how to develop programs on unix using the C-compiler,
   debugger, as well as the ability to read and understand Makefiles.
   (The JDK build environment uses gmake).

2) A bit of free disk space.  200-300MB should be overkill, but it's
   better to have too much rather than too little.

3) Some free time to spend working it.  Good intentions are great, but
   if you are way too busy now, chances are pretty good that you won't
   find enough free time to get anything specific done unless you set
   some aside for this task.

4) You must have a rudimentary knowledge of Java programming.  Enough to
   be able to build very simple 'hello world' applications to test
   things out.

5) You need to be pretty good at messing around with software and
   tracking down where things are defined in a big project.  Things like
      find . -name '*.[ch]' -print | xargs fgrep symbolName
   shouldn't scare you.  Otherwise, you're going to get frustrated real
   quick trying to figure out where things are defined when problems
   crop up.

6) You must not require a whole lot of hand-holding.  I'm willing to
   help, but I don't have the time to teach you how to debug C or Java
   programs.

Things that are helpful:
+++++++++++++++++++++++
1) An understanding how dynamic linking/loading works.  You don't
   necessarily need to understand the internals, but you need to
   understand what's going on a bit, since the JDK makes extensive use
   of them.

2) Some Java applications/applets you can test against.  This is less
   important, but sometimes it's nice to have some 'significant' code so
   you can do your own local testing.

3) Self-motivation to figure out 'how' things work by using the code and
   alot of bogus assumptions. ;)


What is not required:
+++++++++++++++++++++
1) The immediate ability to re-write the FreeBSD kernel.

2) The understanding of everything in the FreeBSD kernel.

3) The ability to program C code in your sleep.

4) The ability to program Java code in your sleep.

5) A complete understanding of the best use of the 'volatile' keyword,
   or how to best design a piece of software.  We're just 'porting' an
   existing application to FreeBSD, not re-designing it from scratch.
   With the existing JDK1 patches, it's not rocket science anymore.

The tasks are:
++++++++++++++
* We need patches to convert the JDK to use 'poll' instead of select on
  3.X/4.X systems.  Currently, the JDK is setup to use select only, and
  I believe that by using poll we could remove some of the
  'file-descriptor' limits that exist in the current sources.

* We need patches to make the 'select' code in the JDK not rely on a
  hard-coded limit on the number of file descriptors.  There were code
  snippets posted to one of the FreeBSD mailing lists a while back that
  implemented some code that might be converted to do this.  However,
  my very simple attempt at doing this failed, and I haven't had the
  time to go back and fix it.

* We need someone to modify the JDK sources to make the assembly Java
  intepreter work.  For some reason, it doesn't work.  The last patch
  set on the WWW page contains a pretty good start on it, but I couldn't
  get it to work right.  Someone needs to spend some time in a debugger
  and figure out what's going on inside the assembly code.

* Figure out a patch to allow FreeBSD 3.0 systems to work 'out of the
  box' without requring them to install a new runtime loader (which
  apparently doesn't always work right).  [ I think the Java team is
  going to do this one, but if someone wants to beat us to it we'd be
  more than willing to accept it. ]

[ The above tasks will also greatly aid us doing the Java2 port ]

* Sending us tested patches to add-in bugfixes from other JDK ports,
  most notably Linux.  Steve makes the Linux diffs available, and there
  are *LOTS* of bugfixes in there that are equally applicable to
  FreeBSD, but we haven't taken the time to break them out and test
  them.  Feel free to take the ones you understand out, apply and test
  them, and submit them along with a description of what they do.

* Apparently the Japanese Locale support is broken.  Unfortunately, I
  don't know how to fix it, nor do I have any way of even testing to see
  that it's broken.  Someone else who experiences the problem will need
  to find and fix it.  (It used to work in JDK1.1.6, but Sun changed
  it's locale support in 1.1.7 when it added Euro support.)

[ These next task should be doable by about anyone, so jump on here. ]

* 'Port' setups for the two FreeBSD-supported JIT compilers that work
  with the Sun JDK.  Archie Cobb has done the Kaffe port, but it would
  be nice to also have ports for TYA and ShuJIT in the tree that
  installed themselves in 'appropriate' places to integrate with the JDK
  port.  This would certainly make it easier for folks to have a
  'faster' Java runtime environment without having to configure it for
  themselves.

* Test, test, and more test.  If you see a bug, report it.  We may say
  it's a Sun bug and defer it to later, but you'll never know unless you
  report it.

* Modifying the FreeBSD/Java WWW to look more 'sexy', or contain more
  information that is useful to users.  I'm a good programmer, which
  means I never write documentation.  I also can barely do HTTP, and I
  am horrendous at layouts.
    If you got suggestions, download the html source and hack on it.
  Send the results to this mailing list and see what others think about
  it.  I've got no pride in this, re-write it from scratch for all I
  care.  Make it 10 pages.  Make it one page.  (The only stipulation I
  have is don't do anything illegal, like adding any 'licensed' icons
  like Duke that we are not allowed to use.)

Resources available to you:
+++++++++++++++++++++++++++
o The FreeBSD Java WWW page has a pointer to the patches we used to
  build the release.
    http://www.freebsd.org/java

o If you don't have Motif, LessTif works well enough to make a working
  JDK.  The 'official' NetBSD JDK uses LessTif, so it work 'pretty
  well'. 
    http://www.lesstif.org

o The FreeBSD Java team.  We're willing to help out any way we can, but
  *ONLY* to folks who are showing both a willingness to help and have
  demonstrated that they are doing something.  Remember, we don't get
  paid, and any time we spend helping others is time spent away from
  doing something else (like family, work, porting to Java2, or fun
  stuff).
    java-port@FreeBSD.org

o This mailing list.  If you think I'm being a butt-head and would
  rather keep things open, I will understand.  Leave the complete
  discussion on the mailing list, but do realize that the reason we've
  taken it 'offline' is due to the licensing restrictions Sun has made.




Nate


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-java" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199904300716.BAA18710>