The OpenJDK Developers' Guide - DRAFT version 0.01
Brad Wetmore
Bradford.Wetmore at Sun.COM
Thu Feb 21 18:36:11 PST 2008
Hi Iris,
Iris Clark wrote:
> I am pleased to announce that DRAFT version 0.01 of "The OpenJDK
> Developers' Guide" is now available at http://openjdk.java.net/guide.
Nice job culling down a lot of info.
> A
> mailing list, guide-discuss at openjdk.java.net, has been created for
> discussion.
Incidentally/personally, I tend to agree with folks regarding the
overabundance of email aliases at Sun. It's so easy to come to a
project late, and you have no idea what aliases you *should* or
*supposed* to be be on, meanwhile you're missing relevant discussions.
Fortunately, they are archived.
Anyway, to specifics:
http://openjdk.java.net/guide/
I'd suggest putting an intro para here, just to say this is still under
development, not complete, etc. (or copying/moving that para from the
intro page.)
http://openjdk.java.net/guide/intro.html
> "Comments may be sent to..."
Suggest you also include a link to the guide-discuss archives:
http://mail.openjdk.java.net/pipermail/guide-discuss/
so people can see the back issues.
> First, production of this document needs to be part of an OpenJDK
> project.
Isn't the o.j.n hierarchy going to move to a mercurial repository soon?
If so, would that be a good place for it? Or are you thinking of a
separate repository just for this guide?
> 2007/Q4
As it's now 2008/Q1, do you want to shift these dates by a quarter so
people don't have unreasonable expectations?
http://openjdk.java.net/guide/repositories.html
> "The JDK source is available from other locations, for example src.zip
> from a full JDK distribution."
That is only partial source, so you should mention that in your later.
Actually, I think you might want to open with the sentence "Portions of
the JDK source are available..."
and
"OpenJDK contributions must use source from the OpenJDK Mercurial
repositories..."
> <h1> <h2> <h3>
This is probably outside your realm, but the current CSS style sheets
don't really make an obvious distinction between the level header
format. I was hoping for at least a font size change to help me note
the different parts of the hierarchy, not just an italics change.
> The promoted builds are performed using the source in the MASTER
> forest of repositories
The term MASTER was obvious when we had repositories called MASTER, but
since they're now called jdk7, maybe you should add a note here showing
where the MASTERS are for jdk7.
> Repositories may be either read-only or read/write. Clones are made
> from read-only repositories. Changeset pushes are made into the
> read/write repositories, which are called gate repositories.
A picture's worth a thousand words.
MASTER (R/O)<-------MASTER-gate (R/W)
| ^
| |
+---->dev workspace----+
> The repositories use following naming scheme:
>
> <release>/<project>{-gate}?/<component>
Really suggest adding an example here:
jdk7/JSN/jdk
jdk7/TL-gate/langtools
> Contact Mailing Lists
In addition to the mailto, maybe having a link to the archives?
> build (also know as Release Engineering or RE)
also know*n* as. Missing n.
> hotspot-comp Hotspot Compiler implementation as provided by members
> of the Hotspot group
I'm not parsing what this is supposed to be. Does this mean
hotspot-{comp,gc,rt,svc} all feed into this forest?
> jsn Security and Networking APIs and implementations as provided by
JSN does not include the original NIO, which are part of TL. You might
want to call this out.
> Components
>
> The following table describes the components (or trees) in each forest
> of repositories.
You should also mention the top level (previously known as control).
Newbies might not appreciate that it is yet another repository.
> http://www.selenic.com/mercurial/wiki/index.cgi.
Suggest using: http://www.selenic.com/mercurial/wiki/
Also note, extra period at the end of the text that might be confusing
to readers not using hyperlinks. (i.e. those that print out this guide
and enter the URL by hand.) This will give a 404.
Same comment about the period for the other links:
http://www.selenic.com/mercurial/wiki/index.cgi/UnixInstall.
http://www.selenic.com/mercurial/wiki/index.cgi/ForestExtension.
> Solaris:
We can talk about the following offline if you like, but working in
mercurial under windows is *NOT* a straightforward process and should
have a section of it's own. You should talk about the windows gotchas,
mainly that windows puts in ^M's at the end of lines, and they won't be
allowed by jcheck. (need to use dos2unix (solaris), flip (MKS), or
something similiar (tr/sed/perl/etc)) Also, the default windows
Mercurial distributions don't include a hgmerge file. You have to
create one. And if it's a bourne shell merge script, it needs to be
named hgmerge.sh, otherwise, it assumes a MSDOS script.
> Create and edit the ~/.hgrc file to minimally contain the following
> entries:
If you're going to be mentioning fetch here, you should probably add:
[defaults]
fetch = -m Merge
and also put in a mention for the eventual jcheck and its hooks.
> jdk_username is a plain lowercase,
You need to have a section where you talk about how openjdk usernames
are created/used, and then you need to link from here to there.
> $ hg help
> <a href=...>full output</a>
Either the abbreviated output should be moved here, or you need to say
something like "<link to full output>"
> Cloning...
Suggest reversing the order of single and forest. Let them know there
is a repository they can clone, then that forest can be used to simplify
things...
Also, can they push to the sandbox? We haven't really talked about
pushes yet.
http://openjdk.java.net/guide/codeConventions.html
Suggest you at least mention the major expected changes such as whitespace.
http://openjdk.java.net/guide/changePlanning.html
> are urged to work with their sponsors
Iris wrote:
> I don't think we've yet defined what the
> protocol should be for working with your sponsor.
Since sponsors haven't been defined yet, you should probably at least
have a link to http://openjdk.java.net/contribute/
> CCC/SDN/jdcinclude/etc.
Looks like Andy Tripp had the same comment.
Lots of these terms have not been described yet, so it's not clear
what's involved. Yes, these sections are TBD, but you might want to at
least give a 2 second description here so people aren't scratching their
heads as to what CCC is/does, or else fill in that part in the glossary now.
> I'm not quite sure what "CCC" stands for
I've heard Committee of Concerned Citizens, Change Consideration
Committee, and the Committee of Cranky Curmudgeons. Ok, I made that
last one up... ;)
> For bugs, provide a jtreg regression test
Provide a link to jtreg.
> -hard
You should say that you should at least try to come up with a race case,
not just simply use noreg-hard because you're not sure if it can be
dup'd. I've written several relatively easy race cases that were
originally marked noreg-hard.
> 10. Run relevant regression and unit tests on all relevant platforms
to which Lars Westergren wrote:
> Until there is a more complete page in place, perhaps you could just
> add the following to the page for those who are currently working on
> patches-
>
> "OpenJDK tests are located in the jdk/test directory. If for instance
> you have been changing code in the management package, you should at
> the minimum run the tests located in jdk/test/java/lang/management"
and Jon wrote:
> Note that not all the tests are in jdk/test. There are also tests in
> langtools/test.
and hotspot/test.
I strongly suggest adding a note here to check with your gatekeeper
and/or project group to determine which tests to run.
http://openjdk.java.net/guide/producingChangeset.html
> Setting a JDK User Name
Same comment about how to obtain an OpenJDK User name.
You might want to point a bit earlier to "Installing and Configuring
Mercurial" instead of "Verifying the Configuration", so in case the
users haven't already set their username, they will know how and what it
should look like when properly configured.
> ...
Nowhere is jcheck mentioned here. It needs to be clear that there will
be restrictions on content in both the changeset description and the
files themselves, and that jcheck will be enforcing that at both the
local and repository level. It's fine to say "jcheck is under development."
> The timing for creating a changeset is important.
I'd suggest simply advising that changesets should only be created after
review, and just before checkin. With the way jcheck is currently set
to operate, you can only use a bugid once in a repository. Any changes
either have to be backed out completely before an integration, or else a
new bugid has to be created.
> They are therefore identified by their OpenJDK usernames rather than
> full e-mail addresses.
This is an aside, but how do we figure out the username->user->email
mapping?
> If a changeset contains multiple unrelated changes (this is frowned
> upon, but may happen from time to time) then its comment will contain
> multiple blocks of the above form, separated by blank lines.
Blank lines are not allowed anywhere in a changeset comment, at least in
Mark's current jcheck.
> The required format of the comments will be enforced whenever the
> changeset is pushed into the JDK 6/7
This is the only place you mention JDK 6/7 by name. Since OpenJDK6 is
still under teamware for a while longer, maybe you want to keep this
generic to OpenJDK?
> Option 1: hg fpull
I'd suggest "hg fpull; hg fupdate"
> At this point, there are no recommendations for the format of the
> merge comment.
Currently it's "Merge" in jcheck.
> Actual file merging will be done with the selected Mercurial merging
> tool see MergeProgram for the details on how to define the selected
> merge tool in ~/.hgrc.
Shouldn't we get into silent/automatic/fuzzy merges here?
> For MASTER repositories, the integrators and members of the Release
> Engineering Team can push.
I think the term "gatekeepers" should be used here instead of
"integrators". IMHO, integrators is too generic a term, and means
anyone who integrates code into a repository, and can be hard to explain
to outside folks. A gatekeeper, by contrast, is a different type of
person who controls access to the MASTERs.
I would also suggest adding a note somewhere about how code goes from
the project gates to the MASTERs. (i.e. gatekeepers). If you haven't
seen it already:
http://blogs.sun.com/wetmore/entry/you_re_a_gatekeeper_uh
http://openjdk.java.net/guide/glossary.html
I'd suggest pulling in parts of Kelly's Glossary here.
http://wikis.sun.com/display/OpenJdkBuilds/JDK+Glossary+of+Terms
HTH,
Brad
More information about the guide-discuss
mailing list