Parabola Issue Tracker: Issueshttps://labs.parabola.nu/https://labs.parabola.nu/favicon.ico?15367742552018-02-08T08:45:13ZParabola Issue Tracker
Redmine Packages - Freedom Issue #1631 (fixed): [intellij-idea-community-edition] Parts of the package ar...https://labs.parabola.nu/issues/16312018-02-08T08:45:13Zasie
<p>While IntelliJ IDEA Community Edition is commonly listed as Apache 2.0-licensed, that license only applies to the parts of the code provided by JetBrains - that is, the editor itself and not necessarily the libraries it utilizes, or the libraries utilized by its plugins.</p>
<p>The following evaluates the state of the licensing <em>as documented by JetBrains themselves</em> - I'll get to why that is important a bit later:</p>
<ul>
<li>XStream: 3-clause BSD, free software</li>
<li>Apache Ant: Apache 2.0, free software</li>
<li>ASM: 3-clause BSD, free software</li>
<li>Growl: 3-clause BSD, free software</li>
<li>GSON: Apache 2.0, free software</li>
<li>ImgScalr: Apache 2.0, free software</li>
<li>JavaHelp: Binary Code License Agreement, <strong>non-free</strong></li>
<li>Javolution: 2-clause BSD, free software</li>
<li>JAXB: CDDL v1.1, free software (GPL-incompatible)</li>
<li>Jaxen: 3-clause BSD, free software</li>
<li>Jayatana: X11 license, free software</li>
<li>JDOM: 3-clause BSD with one additional clause: "Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission" (also includes a clause similar to the Original BSD License's advertising clause but unlike said license, it is not compulsory), I think that qualifies as free software? I'm not sure.</li>
<li>JUnit: Common Public License 0.5, ??? (I don't know)</li>
<li>Kryo: 3-clause BSD, free software</li>
<li>Log4j: Apache 1.1, free software (GPL-incompatible)</li>
<li>Microba: 3-clause BSD, free software</li>
<li>MiGLayout Swing: 3-clause BSD, free software</li>
<li>NanoXML: zlib license, free software</li>
<li>OROMatcher: <b>non-free</b></li>
<li>picoContainer: 3-clause BSD, free software</li>
<li>SAXON: Mozilla Public License 1.0 + custom license for AElfred, ???</li>
<li>SQLJet: <b>non-free</b> (may only be freely distributed as part of the IntelliJ Platform, among other restrictions)</li>
<li>SVNKit: <b>non-free</b> (see above)</li>
<li>SwingX: LGPLv2.1, free software</li>
<li>Trove4j: LGPLv2.1+ (plus custom license for two classes), free software</li>
<li>WinP: MIT, free software</li>
<li>Xerces: Apache 2.0, free software</li>
<li>XMLRPC: Apache 2.0, free software</li>
<li>YourKit: 3-clause BSD <strong>only for binary files</strong>, effectively <b>non-free</b></li>
</ul>
<p>There are also broader license files which do not refer to any particular file:</p>
<ul>
<li>eclipse_license.txt: Eclipse Public License v1.0, free software (not GPL-compatible)</li>
<li>eclipse_license2.txt: Eclipse Public License v2.0, free software (not automatically GPL-compatible)</li>
</ul>
<p>However, upon closer examination, it appears IntelliJ includes multiple libraries not listed in licenses/, as well as libraries with licenses different than what is listed in licenses/. In other words, the list of licenses in there is best ignored, removed and recreated based on what the bundled libraries themselves represent. Thus, using the above list as a guide <b>only</b>, we arrive at the following list:</p>
<p><strong>lib/</strong> (mandatory-by-default components):</p>
<ul>
<li>MultithreadedTC: 3-clause BSD, free software</li>
<li>Aether: Apache 2.0, free software</li>
<li>Apache Ant: Apache 2.0, free software</li>
<li>ASM: 3-clause BSD, free software</li>
<li>Automaton: 2-clause BSD (<a class="external" href="http://www.brics.dk/automaton/">http://www.brics.dk/automaton/</a>), free software</li>
<li>Batik: Apache 2.0 (+ CC BY-SA 2.5 for icons), free software</li>
<li>Bouncy Castle Crypto: X11 license, free software</li>
<li>CGLib: Apache 2.0, free software</li>
<li>cli-parser: Apache 2.0 (<a class="external" href="https://github.com/spullara/cli-parser">https://github.com/spullara/cli-parser</a>), free software</li>
<li>Common (TwelveMonkeys): 3-clause BSD (<a class="external" href="https://github.com/haraldk/TwelveMonkeys/blob/master/LICENSE.txt">https://github.com/haraldk/TwelveMonkeys/blob/master/LICENSE.txt</a>), free software</li>
<li>Commons (Apache): Apache 2.0, free software</li>
<li>Cucumber Core: X11 license, free software</li>
<li>Cucumber Groovy: no license, <b>non-free</b> (although I am going to assume that was not the intention, issue open here: <a class="external" href="https://github.com/cucumber/cucumber-jvm-groovy/issues/4">https://github.com/cucumber/cucumber-jvm-groovy/issues/4</a> )</li>
<li>ECJ (Eclipse): Eclipse Public License v1.0, free software (not GPL-compatible)</li>
<li>Emma: Common Public License 1.0 (<a class="external" href="http://emma.sourceforge.net/license.html">http://emma.sourceforge.net/license.html</a>), free software (not GPL-compatible)</li>
<li>Fest libraries: Apache 2.0 (<a class="external" href="https://github.com/alexruiz/fest-swing-1.x/blob/master/fest-swing/LICENSE.txt">https://github.com/alexruiz/fest-swing-1.x/blob/master/fest-swing/LICENSE.txt</a>), free software</li>
<li>fluent-hc (Apache): Apache 2.0, free software</li>
<li>Gherkin: X11 license (<a class="external" href="https://github.com/cucumber/gherkin-java/blob/master/LICENSE">https://github.com/cucumber/gherkin-java/blob/master/LICENSE</a>), free software (bundles GSON, see below)</li>
<li>Google Analytics Library: Apache 2.0 (<a class="external" href="https://android.googlesource.com/platform/tools/analytics-library/+/gradle_3.0.0/shared/NOTICE">https://android.googlesource.com/platform/tools/analytics-library/+/gradle_3.0.0/shared/NOTICE</a>), free software.</li>
<li>Groovy: Apache 2.0, free software</li>
<li>Growl: 3-clause BSD, free software</li>
<li>GSON: Apache 2.0, free software</li>
<li>Guava: Apache 2.0, free software</li>
<li>Hamcrest: 3-clause BSD, free software</li>
<li>Apache HTTP libraries: Apache 2.0, free software</li>
<li>ImageIO (TwelveMonkeys): 3-clause BSD (<a class="external" href="https://github.com/haraldk/TwelveMonkeys/blob/master/LICENSE.txt">https://github.com/haraldk/TwelveMonkeys/blob/master/LICENSE.txt</a>), free software</li>
<li>ImgScalr: Apache 2.0, free software</li>
<li>Ini4j: Apache 2.0 (<a class="external" href="http://ini4j.sourceforge.net/license.html">http://ini4j.sourceforge.net/license.html</a>, but this version is actually used: <a class="external" href="https://github.com/JetBrains/intellij-deps-ini4j/blob/master/LICENSE.txt">https://github.com/JetBrains/intellij-deps-ini4j/blob/master/LICENSE.txt</a>), free software </li>
<li>isorelax: X11 license, free software</li>
<li>Jaxen: 3-clause BSD, free software</li>
<li>Jayatana: X11 license, free software</li>
<li>JCIP Annotations: CC BY-SA 2.5. While it is a bit of an ugly license for code, if that's a problem <a class="external" href="https://github.com/stephenc/jcip-annotations">https://github.com/stephenc/jcip-annotations</a> provides a claimed-to-be-cleanroomed implementation under Apache 2.0 instead.</li>
<li>JDOM: 3-clause BSD with one additional clause: "Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission" (also includes a clause similar to the Original BSD License's advertising clause but unlike said license, it is not compulsory), I think that qualifies as free software? I'm not sure.</li>
<li>Jediterm: Apache 2.0 and LGPLv3, free software (<a class="external" href="https://github.com/JetBrains/jediterm">https://github.com/JetBrains/jediterm</a>)</li>
<li>JGoodies: the older versions JetBrains bundles are claimed by JetBrains to be 3-clause BSD-licensed; unfortunately, the author's archive does not go that far and newest versions of this library are proprietary. However, some internet research (<a class="external" href="http://web.archive.org/web/20111107063221/http://www.jgoodies.com/downloads/libraries.html">http://web.archive.org/web/20111107063221/http://www.jgoodies.com/downloads/libraries.html</a>) lets us find out that the code is actually licensed under 2-clause BSD, which is, indeed, free software.</li>
<li>JavaHelp: the release JetBrains bundles, 2.0_02, is <b>non-free</b> under the Binary Code License Agreement.</li>
<li>Jimfs: Apache 2.0 (<a class="external" href="https://github.com/google/jimfs/blob/master/LICENSE">https://github.com/google/jimfs/blob/master/LICENSE</a>), free software</li>
<li>Jing, Trang: 3-clause BSD (<a class="external" href="http://www.thaiopensource.com/relaxng/copying.html">http://www.thaiopensource.com/relaxng/copying.html</a>), free software</li>
<li>JNA: LGPLv2.1, free software</li>
<li>JCraft JSCH: 3-clause BSD (<a class="external" href="http://www.jcraft.com/jsch/LICENSE.txt">http://www.jcraft.com/jsch/LICENSE.txt</a>), free software</li>
<li>jsr173_1.0_api.jar: no information could be found, I'm going to assume <b>non-free</b></li>
<li>jsr305.jar: 3-clause BSD (<a class="external" href="https://code.google.com/archive/p/jsr-305/">https://code.google.com/archive/p/jsr-305/</a>), free software</li>
<li>JUnit: Eclipse Public License 1.0, free software (GPL-incompatible)</li>
<li>Kotlin: Apache 2.0 (<a class="external" href="https://github.com/JetBrains/kotlin/blob/master/license/LICENSE.txt">https://github.com/JetBrains/kotlin/blob/master/license/LICENSE.txt</a>), free software</li>
<li>Kryo: 3-clause BSD, free software</li>
<li>Log4j: Apache 2.0, free software</li>
<li>Markdown4j: 3-clause BSD (<a class="external" href="https://code.google.com/archive/p/markdown4j/">https://code.google.com/archive/p/markdown4j/</a>), free software</li>
<li>MarkdownJ: 3-clause BSD (<a class="external" href="https://github.com/myabc/markdownj/blob/master/LICENSE">https://github.com/myabc/markdownj/blob/master/LICENSE</a>), free software</li>
<li>Microba: 3-clause BSD, free software</li>
<li>MiGLayout Swing: 3-clause BSD, free software</li>
<li>NanoXML: zlib license, free software</li>
<li>NekoHTML: Apache 2.0, free software</li>
<li>Netty: Apache 2.0, free software</li>
<li>OROMatcher: Apache 1.1, free software (GPL-incompatible)</li>
<li>picoContainer: 3-clause BSD, free software</li>
<li>ProtoBuf: 3-clause BSD (<a class="external" href="https://github.com/google/protobuf/blob/master/LICENSE">https://github.com/google/protobuf/blob/master/LICENSE</a>), free software</li>
<li>proxy-vole-1.0.3.jar: Apache 2.0, free software</li>
<li>pty4j: Eclipse Public License 1.0 (<a class="external" href="https://github.com/traff/pty4j/blob/master/LICENSE">https://github.com/traff/pty4j/blob/master/LICENSE</a>), free software (GPL-incompatible)</li>
<li>purejavacomm: 3-clause BSD (<a class="external" href="https://github.com/nyholku/purejavacomm/blob/master/LICENSE.md">https://github.com/nyholku/purejavacomm/blob/master/LICENSE.md</a>), free software</li>
<li>rngom: X11 license (<a class="external" href="https://github.com/kohsuke/rngom/blob/master/licenceheader.txt">https://github.com/kohsuke/rngom/blob/master/licenceheader.txt</a> + JetBrains' own claim), free software</li>
<li>SLF4J: X11 license (<a class="external" href="https://www.slf4j.org/license.html">https://www.slf4j.org/license.html</a>), free software</li>
<li>SnakeYAML: Apache 2.0 (<a class="external" href="https://github.com/asomov/snakeyaml/blob/master/LICENSE.txt">https://github.com/asomov/snakeyaml/blob/master/LICENSE.txt</a>), free software</li>
<li>Snappy-in-Java: Apache 2.0 (<a class="external" href="https://github.com/dain/snappy/blob/master/license.txt">https://github.com/dain/snappy/blob/master/license.txt</a>), free software</li>
<li>sqlite-jdbc: Apache 2.0 + 2-clause BSD (<a class="external" href="https://github.com/xerial/sqlite-jdbc">https://github.com/xerial/sqlite-jdbc</a>), free software</li>
<li>StreamEx: Apache 2.0 (<a class="external" href="https://github.com/amaembo/streamex/blob/master/LICENSE">https://github.com/amaembo/streamex/blob/master/LICENSE</a>), free software</li>
<li>studio-profiler-grpc: Apache 2.0 for both gRPC and Android components, free software</li>
<li>SwingX: LGPLv2.1, free software</li>
<li>Trilead SSH2: 3-clause BSD (<a class="external" href="https://github.com/jenkinsci/trilead-ssh2/blob/master/LICENSE.txt">https://github.com/jenkinsci/trilead-ssh2/blob/master/LICENSE.txt</a>), free software</li>
<li>Trove4j: LGPLv2.1+ (plus custom license for two classes), free software</li>
<li>Apache Velocity: Apache 2.0, free software</li>
<li>WADL: unknown, going to assume <b>non-free</b> for reasons outlined later</li>
<li>WinP: MIT, free software</li>
<li>Xerces: Apache 2.0, free software</li>
<li>XMLBeans: Apache 2.0, free software</li>
<li>XMLRPC: Apache 2.0, free software</li>
<li>XStream: 3-clause BSD, free software</li>
</ul>
<p>Now, it's time to evaluate the plugins. There's a lot of plugins to go through:</p>
<ul>
<li>ByteCodeViewer, Groovy, IntelliLang, ant, copyright, eclipse, editorconfig, git4idea, github, hg4idea, java-i18n, junit, properties, stream-debugger, terminal, uiDesigner, xpath, xslt-debugger, yaml: do not bundle non-JetBrains dependencies, are Apache 2.0-licensed and are thus free software</li>
</ul>
<p><b>Kotlin</b>:</p>
<ul>
<li>javaslang: Apache 2.0, free software</li>
<li>javax.inject: Apache 2.0 (<a class="external" href="http://code.google.com/p/atinject/">http://code.google.com/p/atinject/</a>), free software</li>
<li>Kotlin: Apache 2.0 (<a class="external" href="https://github.com/JetBrains/kotlin/blob/master/license/LICENSE.txt">https://github.com/JetBrains/kotlin/blob/master/license/LICENSE.txt</a>), free software</li>
</ul>
<p><b>android</b>:</p>
<ul>
<li>Android components: Apache 2.0 (AOSP), free software</li>
<li>ANTLR: BSD 3-clause (<a class="external" href="http://www.antlr.org/license.html">http://www.antlr.org/license.html</a>), free software</li>
<li>ASM, BouncyCastle, Apache components: as in lib/, free software</li>
<li>dexlib2: Apache 2.0/BSD 3-clause (<a class="external" href="https://github.com/JesusFreke/smali">https://github.com/JesusFreke/smali</a>), free software</li>
<li>FreeMarker: BSD 3-clause with "Products derived may not be called" addition (similar to JDOM), free software?</li>
<li>JavaWriter (Square): Apache 2.0 (<a class="external" href="http://github.com/square/javawriter">http://github.com/square/javawriter</a>), free software</li>
<li>JGraphX: 3-clause BSD (<a class="external" href="https://github.com/jgraph/jgraphx">https://github.com/jgraph/jgraphx</a>), free software</li>
<li>JOGL: 2-clause BSD (<a class="external" href="https://github.com/sgothel/jogl/blob/master/LICENSE.txt">https://github.com/sgothel/jogl/blob/master/LICENSE.txt</a>), free software</li>
<li>juniversalchardet: MPL 1.1 (<a class="external" href="https://github.com/albfernandez/juniversalchardet/blob/master/MPL-1.1.txt">https://github.com/albfernandez/juniversalchardet/blob/master/MPL-1.1.txt</a>), free software (GPL-incompatible)</li>
<li>kxml2: X11 license (<a class="external" href="https://github.com/stefanhaustein/kxml2/blob/master/license.txt">https://github.com/stefanhaustein/kxml2/blob/master/license.txt</a>), free software</li>
<li>libwebp: 3-clause BSD, free software (seems to be in Parabola under one of its other implementations)</li>
<li>Lombok AST: X11 license, free software</li>
<li>spantable: LGPLv2.1+, free software</li>
</ul>
<p><b>coverage</b>:</p>
<ul>
<li>FreeMarker: BSD 3-clause with "Products derived may not be called" addition (similar to JDOM), free software?</li>
<li>JaCoCo: Eclipse Public License 1.0 (<a class="external" href="http://www.jacoco.org/jacoco/trunk/doc/license.html">http://www.jacoco.org/jacoco/trunk/doc/license.html</a>), free software (GPL-incompatible)</li>
</ul>
<p><b>cvsIntegration</b>:</p>
<ul>
<li>JavaCVS: Sun Public License, free software (GPL-incompatible)</li>
<li>smartcvs-src: I genuinely have no idea. The only reference I can find to those classes is in IntelliJ's own source tree, but the files themselves have no license headers. Unknown status.</li>
<li>Trilead SSH2: 3-clause BSD (<a class="external" href="https://github.com/jenkinsci/trilead-ssh2/blob/master/LICENSE.txt">https://github.com/jenkinsci/trilead-ssh2/blob/master/LICENSE.txt</a>), free software</li>
</ul>
<p><b>devkit</b>:</p>
<ul>
<li>DTDParser: LGPL (which version is this? - <a class="external" href="http://web.archive.org/web/20010208195026/http://wutka.com:80/dtdparserlicense.html">http://web.archive.org/web/20010208195026/http://wutka.com:80/dtdparserlicense.html</a>), free software</li>
</ul>
<p><b>gradle</b>:</p>
<ul>
<li>Apache Commons, Guava: as in lib/</li>
<li>Gradle: Apache 2.0 (<a class="external" href="https://github.com/gradle/gradle/blob/master/LICENSE">https://github.com/gradle/gradle/blob/master/LICENSE</a>), free software</li>
<li>JAnsi: Apache 2.0 (<a class="external" href="https://github.com/fusesource/jansi/blob/master/license.txt">https://github.com/fusesource/jansi/blob/master/license.txt</a>), free software</li>
<li>Kryo: 3-clause BSD, free software</li>
<li>Minlog: 3-clause BSD (<a class="external" href="https://github.com/EsotericSoftware/minlog/blob/master/license.txt">https://github.com/EsotericSoftware/minlog/blob/master/license.txt</a>), free software</li>
<li>Objenesis: Apache 2.0 (<a class="external" href="http://objenesis.org/license.html">http://objenesis.org/license.html</a>), free software</li>
<li>ReflectASM: 3-clause BSD (<a class="external" href="https://github.com/EsotericSoftware/reflectasm/blob/master/license.txt">https://github.com/EsotericSoftware/reflectasm/blob/master/license.txt</a>), free software</li>
</ul>
<p><b>java-decompiler</b>: The decompiler itself is Apache 2.0, but it has to be evaluated whether or not the following EULA/disclaimer affects the decision: <a class="external" href="https://github.com/JetBrains/intellij-community/blob/master/plugins/java-decompiler/plugin/src/messages/Decompiler.properties">https://github.com/JetBrains/intellij-community/blob/master/plugins/java-decompiler/plugin/src/messages/Decompiler.properties</a></p>
<p><b>javaFX</b>:</p>
<ul>
<li>SceneBuilderKit: 3-clause BSD (example: <a class="external" href="https://bitbucket.org/gluon-oss/scenebuilder/src/ac28c033b85b7a0e2781bbcedb7f884d5b4771b1/kit/src/main/java/com/oracle/javafx/scenebuilder/kit/ResourceUtils.java?at=default&fileviewer=file-view-default">https://bitbucket.org/gluon-oss/scenebuilder/src/ac28c033b85b7a0e2781bbcedb7f884d5b4771b1/kit/src/main/java/com/oracle/javafx/scenebuilder/kit/ResourceUtils.java?at=default&fileviewer=file-view-default</a>), free software</li>
</ul>
<p><b>maven</b>:</p>
<ul>
<li>Maven components, Plexus: Apache 2.0, free software</li>
</ul>
<p><b>settings-repository</b>:</p>
<ul>
<li>Jackson: Apache 2.0 (<a class="external" href="https://github.com/FasterXML/jackson-core">https://github.com/FasterXML/jackson-core</a>), free software</li>
<li>JGit: Eclipse Distribution License 1.0, appears to just be 3-clause BSD (<a class="external" href="http://www.eclipse.org/org/documents/edl-v10.php">http://www.eclipse.org/org/documents/edl-v10.php</a>), free software?</li>
</ul>
<p><b>svn4idea</b>:</p>
<ul>
<li>SQLJet: <b>non-free</b> (may only be freely distributed as part of the IntelliJ Platform, among other restrictions)</li>
<li>SVNKit: <b>non-free</b> (see above)</li>
</ul>
<p>Did not check other libraries as these two are sufficient for the plugin to be proprietary.</p>
<p><b>tasks</b>:</p>
<ul>
<li>Apache Axis, Commons Discovery: Apache 2.0, free software</li>
<li>json-path: Apache 2.0, free software</li>
<li>json-smart: Apache 2.0, free software</li>
<li>wsdl4j: Common Public License 1.0, free software (GPL-incompatible)</li>
</ul>
<p><b>testng</b>:</p>
<ul>
<li>JCommander: Apache 2.0 (<a class="external" href="https://github.com/cbeust/jcommander/blob/master/license.txt">https://github.com/cbeust/jcommander/blob/master/license.txt</a>), free software</li>
<li>TestNG: Apache 2.0, free software</li>
</ul>
<p>This should cover the entirety of IntelliJ IDEA Community Edition, but I may have missed something somewhere. I think I haven't, though.</p>
<p>Okay, so what libraries do not respect the user's freedom and what can be done about this?</p>
<p><b>Licensing issues</b></p>
<p><b>lib/</b>:</p>
<ul>
<li>Cucumber Groovy: All we can do is wait for the developer to respond to the issue linked above. If the response does not arrive or is unhelpful, an initial examination suggests it might be possible to remove the library with no damage to the software as a whole.</li>
<li>JavaHelp: A newer release can be compiled from <a class="external" href="https://github.com/javaee/javahelp">https://github.com/javaee/javahelp</a> which is under the more tolerable CDDL 1.1 license.</li>
<li>jsr173_1.0_api.jar: I'm fairly confident it can be rather easily removed, as Java 7 merged in a fairly similar API and this JAR in particular should only be used by XMLBeans, not IDEA as a whole.</li>
<li>WADL: Same as JavaHelp, a newer CDDL 1.1 release can be compiled from <a class="external" href="https://github.com/javaee/wadl/blob/master/LICENSE">https://github.com/javaee/wadl/blob/master/LICENSE</a> .</li>
</ul>
<p><b>plugins/</b>:</p>
<ul>
<li>The cvsIntegration and java-decompiler plugins require closer examination.</li>
<li>The svn4idea plugin must be removed entirely. (Can be achieved by just removing the directory)</li>
</ul>
<p><b>Proprietary services</b></p>
<ul>
<li>Google Analytics Library: While it does not appear to be used for user tracking, it may be connected to the Android plugin. Further evaluation required.</li>
<li>GitHub plugin: Should anything be done about it?</li>
</ul>