Notes from discussion on module definitions and tools
Alan Bateman
Alan.Bateman at Sun.COM
Mon Oct 19 07:52:05 PDT 2009
Mandy and I had a discussion last week on the tools and the other
changes that we need to do as we prepare for the build to generate
modules. Here's my notes from that discussion (Mandy, correct me if I've
got anything wrong).
We agreed that the module definitions need to be simple and easy to
maintain.
With the current tool, we can allocate classes to modules based by
matching on package/class names or we can specify roots and have the
tool attempt to compute the transitive closure (or do combinations of).
Following dependencies is very useful for analysis purposes but is
fragile in that it requires hard-to-maintain filters to prevent the tool
pulling in classes that we don't want. We therefore propose to use
simple matching in the definitions (with the possible exception of boot
or base modules that are defined by other means).
One implication of simple module definitions is that we will need to
look at a number of areas in the repository and split the packages or
move classes to more appropriate places. To give one example, the http
protocol handler supports the spnego authentication scheme that could
move into a sub-package to make it easy to assign to the
"security-kerberos" module. We'll likely conscript others to help with
this work.
On tooling, we decided to create several "simple" tools, each doing one
job well rather than building a Swiss Army knife. The tools that we
discussed are:
1. The class analyzer that we use for analysis, possibly including
generating class lists for boot/base modules.
2. A relatively simple tool to assign classes to modules defined by
patterns. The modules definitions can be in a single file and ordering
is only important where the patterns overlap. It should be relatively
quick to run in the build and will output the class lists, dependencies,
summary, and one file with the module dependencies.
3. A simple tool that compares module dependencies against a
"checked-in" file. The tool fails if there if there is a dependency that
isn't listed in the checked-in version. An open issue is optional
dependencies where finer-grain checking would be required to detect a
dependency that has changed into a "hard" dependency.
That's it!
More information about the jigsaw-dev
mailing list