Project

General

Profile

Freedom issue #1631

[intellij-idea-community-edition] Parts of the package are under different licenses than Apache, some nonfree - PKGBUILD is not built from source

asie - almost 2 years ago - . Updated 9 months ago.

Status:
confirmed
Priority:
freedom issue
Assignee:
-
% Done:

100%


Description

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.

The following evaluates the state of the licensing as documented by JetBrains themselves - I'll get to why that is important a bit later:

  • XStream: 3-clause BSD, free software
  • Apache Ant: Apache 2.0, free software
  • ASM: 3-clause BSD, free software
  • Growl: 3-clause BSD, free software
  • GSON: Apache 2.0, free software
  • ImgScalr: Apache 2.0, free software
  • JavaHelp: Binary Code License Agreement, non-free
  • Javolution: 2-clause BSD, free software
  • JAXB: CDDL v1.1, free software (GPL-incompatible)
  • Jaxen: 3-clause BSD, free software
  • Jayatana: X11 license, free software
  • 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.
  • JUnit: Common Public License 0.5, ??? (I don't know)
  • Kryo: 3-clause BSD, free software
  • Log4j: Apache 1.1, free software (GPL-incompatible)
  • Microba: 3-clause BSD, free software
  • MiGLayout Swing: 3-clause BSD, free software
  • NanoXML: zlib license, free software
  • OROMatcher: non-free
  • picoContainer: 3-clause BSD, free software
  • SAXON: Mozilla Public License 1.0 + custom license for AElfred, ???
  • SQLJet: non-free (may only be freely distributed as part of the IntelliJ Platform, among other restrictions)
  • SVNKit: non-free (see above)
  • SwingX: LGPLv2.1, free software
  • Trove4j: LGPLv2.1+ (plus custom license for two classes), free software
  • WinP: MIT, free software
  • Xerces: Apache 2.0, free software
  • XMLRPC: Apache 2.0, free software
  • YourKit: 3-clause BSD only for binary files, effectively non-free

There are also broader license files which do not refer to any particular file:

  • eclipse_license.txt: Eclipse Public License v1.0, free software (not GPL-compatible)
  • eclipse_license2.txt: Eclipse Public License v2.0, free software (not automatically GPL-compatible)

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 only, we arrive at the following list:

lib/ (mandatory-by-default components):

Now, it's time to evaluate the plugins. There's a lot of plugins to go through:

  • 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

Kotlin:

android:

coverage:

cvsIntegration:

  • JavaCVS: Sun Public License, free software (GPL-incompatible)
  • 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.
  • Trilead SSH2: 3-clause BSD (https://github.com/jenkinsci/trilead-ssh2/blob/master/LICENSE.txt), free software

devkit:

gradle:

java-decompiler: The decompiler itself is Apache 2.0, but it has to be evaluated whether or not the following EULA/disclaimer affects the decision: https://github.com/JetBrains/intellij-community/blob/master/plugins/java-decompiler/plugin/src/messages/Decompiler.properties

javaFX:

maven:

  • Maven components, Plexus: Apache 2.0, free software

settings-repository:

svn4idea:

  • SQLJet: non-free (may only be freely distributed as part of the IntelliJ Platform, among other restrictions)
  • SVNKit: non-free (see above)

Did not check other libraries as these two are sufficient for the plugin to be proprietary.

tasks:

  • Apache Axis, Commons Discovery: Apache 2.0, free software
  • json-path: Apache 2.0, free software
  • json-smart: Apache 2.0, free software
  • wsdl4j: Common Public License 1.0, free software (GPL-incompatible)

testng:

This should cover the entirety of IntelliJ IDEA Community Edition, but I may have missed something somewhere. I think I haven't, though.

Okay, so what libraries do not respect the user's freedom and what can be done about this?

Licensing issues

lib/:

  • 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.
  • JavaHelp: A newer release can be compiled from https://github.com/javaee/javahelp which is under the more tolerable CDDL 1.1 license.
  • 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.
  • WADL: Same as JavaHelp, a newer CDDL 1.1 release can be compiled from https://github.com/javaee/wadl/blob/master/LICENSE .

plugins/:

  • The cvsIntegration and java-decompiler plugins require closer examination.
  • The svn4idea plugin must be removed entirely. (Can be achieved by just removing the directory)

Proprietary services

  • 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.
  • GitHub plugin: Should anything be done about it?

Subtasks

Freedom issue #1885: [intellij-idea-community-edition] Intellij IDEAD includes User Agreement that revokes freedoms?not-a-bug

Actions

History

#1

Updated by oaken-source almost 2 years ago

I wish all freedom issues on this tracker were as detailed as this one.

#2

Updated by asie almost 2 years ago

Further evaluation # 1:

  • In regards to cvsIntegration, the closest leads I could find are that the last time the file had a clear notice was ""/* * Copyright (c) $today.year JetBrains s.r.o. All Rights Reserved. */"" in one of its copyright generation files, as well as that SmartCVS is a proprietary CVS client written in Java. I believe it is reasonable to consider this plugin non-free if/until JetBrains's upstream clarifies its licensing status.
  • It appears IntelliJ's buildscripts already contain a far more comprehensive list of bundled libraries and their licensing, in ./platform/build-scripts/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy, though I am not sure how comprehensive it is. Importantly, it made me realize I have not checked licensing on most bundled non-JetBrains resources.

lib/resources.jar:

  • I'm going to operate under the assumption JetBrains-created content in this file is under Apache 2.0, as is rest of the suite. This should be a reasonable expectation, and mostly leaves fonts:
  • Fonts: Fira Code, Inconsolata, Source Code Pro are all under the SIL Open Font License. Roboto is under the Apache 2.0 License instead. Both seem to be fine.

Some additional notes, after searching for LICENSE/NOTICE files in the code source tree:

  • The editorconfig plugin is actually X11-licensed.
  • The hg4idea plugin bundles a standalone? Python script licensed under the GPLv2 (or later).

PyCharm has to be examined in the same manner - the differences shouldn't be very large, however, so I think it's better to tackle IDEA first and then see how much PyCharm differs.

#3

Updated by nRoof over 1 year ago

There are two more issues to that:
  1. As has been mentioned in the Dev mailing list on Fri Jun 8 19:26:55 BST 2018, upon first start, IDEA shows "JETBRAINS USER AGREEMENT" which clearly restricts user freedoms. But both the source code and the binary package contains Apache License Version 2.0 notice. So I suspect it's either a bug, where it shows the agreement from the Ultimate edition, or an additional agreement for usage of JetBranins network services, which may be non-free. All this needs additional investigation.
  2. This package ships from Arch, and they just repackage binary files instead of building them from sources. The following ticket has been created in their bug tracker to resolve the issue: https://bugs.archlinux.org/index.php?do=details&task_id=58953
#4

Updated by bill-auger over 1 year ago

quite an ostentatious stack of dependencies there

i gave it a try building this from source - the first thing ant does is download binary package of 'gradle' and a pile of gradle plugins as java jars - then binary packages for
'maven' and 'groovy' in order to build 'kotlin' - all of those programs are in
parabola already so this is maybe not impossible but it would be some work to
get this to build without third-party blobs

the build went for some time then choked with this error:

[java] BUILD FAILED
[java] build/gant.xml:59: The following modules from
productProperties.productLayout.bundledPluginModules aren't found in the
project: [intellij.android.plugin, intellij.android.smali]

the PKGBUILD is in abslibre [libre-testing] - im washing my hands of this one -
i say kick this beast to the curb :)

#5

Updated by bill-auger 9 months ago

  • Priority changed from bug to freedom issue
  • Status changed from open to confirmed
  • Subject changed from [intellij-idea-community-edition] Parts of the package are under different licenses than Apache, some nonfree to [intellij-idea-community-edition] Parts of the package are under different licenses than Apache, some nonfree - PKGBUILD is not built from source

Also available in: Atom PDF