Tools License Review

Andrew John Hughes gnu_andrew at member.fsf.org
Fri Mar 6 16:33:14 UTC 2009


Hi all,

I was looking at the tools code earlier this week, and noticed that
the code was licensed under the pure GPL.  As such, it seemed
plausible that these could be moved up to the GPLv3.  The main library
code itself can't yet be changed as there is no suitable exception for
GPLv3 (equivalent to what we have now) available from the FSF so far,
and we would also like to try and remain compatible with the licensing
used by OpenJDK.  (note: we are already slightly different in that
Classpath code can be distributed or modified under the GPLv3 due to
the 'or later' clause, whereas OpenJDK can't).  However, pure GPL code
causes no such problem and so it seemed possible that these files
could be changed, just as parts of GCC have already moved from pure
GPLv2 to pure GPLv3.

However, after discussing this with Mark Wielaard on IRC, it seems
these files are mislicensed.  I reviewed the code in the tools
subdirectory in full and it seems the majority is GPLv2 + Classpath
exception like the rest of the library (so it can be used from tools
like Ant, etc.).  However, the following are all pure GPLv2:

tools/gnu/classpath/tools/rmic/ClassRmicCompiler.java
tools/gnu/classpath/tools/rmic/RmicBackend.java
tools/gnu/classpath/tools/rmic/CompilationError.java
tools/gnu/classpath/tools/rmic/Variables.java
tools/gnu/classpath/tools/rmic/MethodGenerator.java
tools/gnu/classpath/tools/rmic/SourceRmicCompiler.java
tools/gnu/classpath/tools/rmic/WrapUnWrapper.java
tools/gnu/classpath/tools/rmic/Main.java
tools/gnu/classpath/tools/rmic/Generator.java
tools/gnu/classpath/tools/rmic/GiopIo.java
tools/gnu/classpath/tools/rmic/RmiMethodGenerator.java
tools/gnu/classpath/tools/rmic/SourceGiopRmicCompiler.java
tools/gnu/classpath/tools/rmic/RMICException.java
tools/gnu/classpath/tools/rmic/HashFinder.java
tools/gnu/classpath/tools/serialver/SerialVer.java
tools/gnu/classpath/tools/gjdoc/DocImpl.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantLong.java
tools/gnu/classpath/tools/gjdoc/expr/LessThanExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantShort.java
tools/gnu/classpath/tools/gjdoc/expr/ShiftRightExpression.java
tools/gnu/classpath/tools/gjdoc/expr/TypeCastExpression.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryShiftExpression.java
tools/gnu/classpath/tools/gjdoc/expr/GreaterThanOrEqualExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ExclusiveOrExpression.java
tools/gnu/classpath/tools/gjdoc/expr/DivisionExpression.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryExpression.java
tools/gnu/classpath/tools/gjdoc/expr/EqualExpression.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryBitwiseExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ShiftLeftExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantByte.java
tools/gnu/classpath/tools/gjdoc/expr/IdentifierExpression.java
tools/gnu/classpath/tools/gjdoc/expr/GreaterThanExpression.java
tools/gnu/classpath/tools/gjdoc/expr/NegateExpression.java
tools/gnu/classpath/tools/gjdoc/expr/AdditionExpression.java
tools/gnu/classpath/tools/gjdoc/expr/UnknownIdentifierException.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryEqualityExpression.java
tools/gnu/classpath/tools/gjdoc/expr/LessThanOrEqualExpression.java
tools/gnu/classpath/tools/gjdoc/expr/InclusiveOrExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantFloat.java
tools/gnu/classpath/tools/gjdoc/expr/UnaryExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantDouble.java
tools/gnu/classpath/tools/gjdoc/expr/LogicalOrExpression.java
tools/gnu/classpath/tools/gjdoc/expr/SubtractionExpression.java
tools/gnu/classpath/tools/gjdoc/expr/BitShiftRightExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantString.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryLogicalExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ModuloExpression.java
tools/gnu/classpath/tools/gjdoc/expr/Evaluator.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantBoolean.java
tools/gnu/classpath/tools/gjdoc/expr/ConditionalExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantNull.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryRelationExpression.java
tools/gnu/classpath/tools/gjdoc/expr/BinaryComputationExpression.java
tools/gnu/classpath/tools/gjdoc/expr/AndExpression.java
tools/gnu/classpath/tools/gjdoc/expr/Expression.java
tools/gnu/classpath/tools/gjdoc/expr/NotExpression.java
tools/gnu/classpath/tools/gjdoc/expr/EvaluatorEnvironment.java
tools/gnu/classpath/tools/gjdoc/expr/IllegalExpressionException.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantInteger.java
tools/gnu/classpath/tools/gjdoc/expr/LogicalAndExpression.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantExpression.java
tools/gnu/classpath/tools/gjdoc/expr/NotEqualExpression.java
tools/gnu/classpath/tools/gjdoc/expr/Context.java
tools/gnu/classpath/tools/gjdoc/expr/LogicalNotExpression.java
tools/gnu/classpath/tools/gjdoc/expr/MultiplicationExpression.java
tools/gnu/classpath/tools/gjdoc/expr/Type.java
tools/gnu/classpath/tools/gjdoc/expr/CircularExpressionException.java
tools/gnu/classpath/tools/gjdoc/expr/ConstantChar.java
tools/gnu/classpath/tools/gjdoc/Parser.java
tools/gnu/classpath/tools/gjdoc/MethodDocImpl.java
tools/gnu/classpath/tools/gjdoc/ConstructorDocImpl.java
tools/gnu/classpath/tools/gjdoc/ClassDocImpl.java
tools/gnu/classpath/tools/gjdoc/SeeTagImpl.java
tools/gnu/classpath/tools/gjdoc/ClassDocProxy.java
tools/gnu/classpath/tools/gjdoc/ThrowsTagImpl.java
tools/gnu/classpath/tools/gjdoc/TagContainer.java
tools/gnu/classpath/tools/gjdoc/RootDocImpl.java
tools/gnu/classpath/tools/gjdoc/GjdocPackageDoc.java
tools/gnu/classpath/tools/gjdoc/MemberDocImpl.java
tools/gnu/classpath/tools/gjdoc/ClassDocReflectedImpl.java
tools/gnu/classpath/tools/gjdoc/ValueTagImpl.java
tools/gnu/classpath/tools/gjdoc/AbstractTagImpl.java
tools/gnu/classpath/tools/gjdoc/Main.java
tools/gnu/classpath/tools/gjdoc/LinkTagImpl.java
tools/gnu/classpath/tools/gjdoc/GjdocRootDoc.java
tools/gnu/classpath/tools/gjdoc/InheritDocTagImpl.java
tools/gnu/classpath/tools/gjdoc/ArrayCharacterIterator.java
tools/gnu/classpath/tools/gjdoc/Timer.java
tools/gnu/classpath/tools/gjdoc/JavadocWrapper.java
tools/gnu/classpath/tools/gjdoc/TextTagImpl.java
tools/gnu/classpath/tools/gjdoc/ErrorReporter.java
tools/gnu/classpath/tools/gjdoc/SerialFieldTagImpl.java
tools/gnu/classpath/tools/gjdoc/TemporaryStore.java
tools/gnu/classpath/tools/gjdoc/ParamTagImpl.java
tools/gnu/classpath/tools/gjdoc/TimerDoclet.java
tools/gnu/classpath/tools/gjdoc/ProgramElementDocImpl.java
tools/gnu/classpath/tools/gjdoc/DirectoryTree.java
tools/gnu/classpath/tools/gjdoc/Debug.java
tools/gnu/classpath/tools/gjdoc/FieldDocImpl.java
tools/gnu/classpath/tools/gjdoc/TypeVariableImpl.java
tools/gnu/classpath/tools/gjdoc/TypeImpl.java
tools/gnu/classpath/tools/gjdoc/SourcePositionImpl.java
tools/gnu/classpath/tools/gjdoc/PackageDocImpl.java
tools/gnu/classpath/tools/gjdoc/ParseException.java
tools/gnu/classpath/tools/gjdoc/WritableType.java
tools/gnu/classpath/tools/gjdoc/TagImpl.java
tools/gnu/classpath/tools/gjdoc/ParameterImpl.java
tools/gnu/classpath/tools/gjdoc/ExecutableMemberDocImpl.java
tools/gnu/classpath/tools/doclets/DocletOptionString.java
tools/gnu/classpath/tools/doclets/DocletOptionPackageWildcard.java
tools/gnu/classpath/tools/doclets/InvalidPackageWildcardException.java
tools/gnu/classpath/tools/doclets/AbstractDoclet.java
tools/gnu/classpath/tools/doclets/DocletOptionFile.java
tools/gnu/classpath/tools/doclets/PackageMatcher.java
tools/gnu/classpath/tools/doclets/TagletPrinter.java
tools/gnu/classpath/tools/doclets/DocletConfigurationException.java
tools/gnu/classpath/tools/doclets/DocletOptionFlag.java
tools/gnu/classpath/tools/doclets/InlineTagRenderer.java
tools/gnu/classpath/tools/doclets/DocletOption.java
tools/gnu/classpath/tools/doclets/xmldoclet/Driver1_4.java
tools/gnu/classpath/tools/doclets/xmldoclet/Driver.java
tools/gnu/classpath/tools/doclets/xmldoclet/HtmlRepairer.java
tools/gnu/classpath/tools/doclets/xmldoclet/TargetContext.java
tools/gnu/classpath/tools/doclets/xmldoclet/doctranslet/OutputFileInfo.java
tools/gnu/classpath/tools/doclets/xmldoclet/doctranslet/DocTransletException.java
tools/gnu/classpath/tools/doclets/xmldoclet/doctranslet/DocTransletConfigurationException.java
tools/gnu/classpath/tools/doclets/xmldoclet/doctranslet/DocTranslet.java
tools/gnu/classpath/tools/doclets/xmldoclet/doctranslet/JarClassLoader.java
tools/gnu/classpath/tools/doclets/xmldoclet/doctranslet/DocTransletOptions.java
tools/gnu/classpath/tools/doclets/StandardTaglet.java
tools/gnu/classpath/tools/doclets/htmldoclet/ExternalDocSet.java
tools/gnu/classpath/tools/doclets/htmldoclet/CssClass.java
tools/gnu/classpath/tools/doclets/htmldoclet/HtmlDoclet.java
tools/gnu/classpath/tools/doclets/htmldoclet/HtmlPage.java
tools/gnu/classpath/tools/doclets/htmldoclet/HtmlTagletContext.java
tools/gnu/classpath/tools/doclets/DocletOptionColonSeparated.java
tools/gnu/classpath/tools/doclets/PackageGroup.java
tools/gnu/classpath/tools/MalformedInputListener.java
tools/gnu/classpath/tools/NotifyingInputStreamReader.java
tools/gnu/classpath/tools/taglets/AuthorTaglet.java
tools/gnu/classpath/tools/taglets/VersionTaglet.java
tools/gnu/classpath/tools/taglets/CopyrightTaglet.java
tools/gnu/classpath/tools/taglets/ValueTaglet.java
tools/gnu/classpath/tools/taglets/CodeTaglet.java
tools/gnu/classpath/tools/taglets/DeprecatedTaglet.java
tools/gnu/classpath/tools/taglets/GnuExtendedTaglet.java
tools/gnu/classpath/tools/taglets/SinceTaglet.java
tools/gnu/classpath/tools/taglets/GenericTaglet.java
tools/gnu/classpath/tools/MalformedInputEvent.java
tools/gnu/classpath/tools/StringToolkit.java
tools/gnu/classpath/tools/java2xhtml/Java2xhtml.java
tools/gnu/classpath/tools/FileSystemClassLoader.java
tools/gnu/classpath/tools/IOToolkit.java

Most seem to be from the GJDoc import.  There are also a few with no license:

tools/com/sun/tools/javadoc/Main.java
tools/gnu/classpath/tools/doclets/debugdoclet/DebugDoclet.java
tools/gnu/classpath/tools/taglets/TagletContext.java

Shall we migrate all these to GPLv2 + Classpath exception?
-- 
Andrew :-)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8



More information about the Classpath mailing list