geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <>
Subject Re: A Letter from JBoss's lawyers
Date Mon, 10 Nov 2003 19:54:35 GMT
This is a preliminary evaluation of the issue. It is based on the input
from a disinterested 3rd party. This does not constitute a formal  
of any kind, but is rather part of the required development discussion
regarding this.


In general, considering that some of the Geronimo developers also
contributed code to JBoss, it would be neither surprising nor improper  
there were found to be some identical pieces. The requirement should be
that authors submit only such code for which they have clear title.
Although "former project members cannot avoid the rights of the  
owner of the collective work that they intend to copy or change", that
does not preclude an author from also providing his or her own code to  
ASF for licensing under the ASL. As far as is known, there is no code
within Geronimo that was exclusively licensed to JBoss, or is included  
Geronimo without the author's permission.

With respect to the specific exhibits:

   Exhibit A: Similarities between two subclasses of
              org.apache.lo4j.Level, each of which
              implements a TRACE level.

The classes in question are org.apache.geronimo.code.log.XLevel and
org.jboss.logging.XLevel.  Both of them extend org.apache.log4j.Level,
which imposes (and provides) some of the common structure and names.   
classes, themselves, are trivial implementations of a new logging level,
the structure of which is dictated by Apache Log4J.  The code seems to  
as similar, and as different, as one would expect from two authors
implementing a Log4J TRACE log level based upon existing Log4J code.

   Exhibit B: Similarities between two PatternParser subclasses
              in support of the nested diagnostic context pattern.

The similarities come from the fact that both code bases implement  
diagnostic contexts" as described by Neil Harrison in "Patterns for
Logging Diagnostic Messages", which can be found in the book "Pattern
Languages of Program Design 3", published in 1997 by Addison-Wesley  
0201310112). Apache Log4J implements this class in org.apache.log4j.NDC.
This class describes how it is to be used, including the use of a
"distinctive stamp."

The two classes in question, org.apache.geronimo.code.log.PatternParser
and org.jboss.logging.layout.PatternParserEx, are both trivial  
of org.apache.log4j.helpers.PatternParser in support of this documented
pattern.  Again, Apache Log4J provides and imposes structure.  I would
expect this similarity to morph shortly because both Geronimo and JBoss
are using Log4J v1.2.8.  Log4J v1.3, still in development, completely
refactors how pattern handling is done within Log4J.


   Exhibit C: InvocationType

The pattern

   public static final TYPE NAME = new TYPE(...);

is boilerplate.  It is a well-established Java implementation pattern
found in the JDK and many other code bases.  The aforementioned Log4J  
base has an almost identical set of lines, differing only in TYPE, NAME
and parameters to the TYPE constructor.

The class name, InvocationType, is entirely descriptive of what the  
represents.  The term "Invocation" is also found in the term RMI --  
Method Invocation -- and the class simply represents the type of
invocation. The values of the first parameter: "REMOTE", "HOME", "LOCAL"
and "LOCALHOME" are defined by a J2EE Specification, not by JBoss.  The
second parameter is an ordinal from 0 to 3, and provides its location
within a static array.  If "I" were writing the code, "I" might have  
not had
that parameter, but most programmers probably would.  The remaining
parameters are unique to Geronimo, not found in JBoss, and define the
properties of the invocation.


   "Further, although not reproduced as an exhibit, we direct
    your attention to the similarities in the files named
    org.apache.geronimo.common.Invocation (Geronimo) and
    org.jboss.invocation.Invocation (JBoss).  Both of these files
    contain what JBoss believes is highly JBoss-specific payloads,
    which are named "AsIs", "Transient," and "Marshalled."

Upon investigation, it is seen that Geronimo's Invocation class was  
rewritten more than two months prior to the communication from Testa,  
and Thibeault.  The well-established RPC/RMI concepts of transient and
marshalled data are implemented completely differently in current  

View raw message