Question

I am developing an application which is using JTransforms to compute FFT and InverseFFT.

I am planning to sell that application on Play Store.

The JTransforms Library is covered under MPL/LGPL/GPL tri-license.

Does that mean I have to disclose my application's source code to the community ? Does that mean I cannot use an open-source library to sell non-free application ?

I found the following link in which the ScissDSP library is using JTransforms under LGPL license :

https://github.com/Sciss/ScissDSP/blob/master/licenses/JTransforms-License.txt

Does that mean MPL/LGPL/GPL is sort-of Pick 'n' Choose type of License ?

Was it helpful?

Solution

Wikipedia Multi-license description says:

When software is multi-licensed, recipients can choose which terms under which they want to use or distribute the software. The distributor may or may not apply a fee to either option.

From my personal grasp on the subject (IANAL and I am very new to licensing):

I would use the library under the terms & conditions of the MPL license:

  • MPL is least restrictive; you can have static (and dynamic) linkage of the used library in your app you charge money for without having to disclose the source of your app. Static linkage means you can import the library however you please (you can import the library as a jar file; you can even copy & paste the java source files directly into your project). Dynamic linkage means you link to a jar-packed version of the library and users of your app must be able to replace that jar.
  • As long as you do not modify the source code of the (static/dynamic) linked library, you do not have to disclose source code (extending classes, interfaces or calling methods/constructors of the library are not modifications).
  • However, if you do modify the source code of the linked library, you should make the modified source code publically available under the same license. You do not have to disclose your full app's source code. Instead, you modify the library as you please, host a public version of it and import the modified library in your app. Notice how your modified library is actually a new MPL licensed library on its own.
    • I would just host a fork on github of the modified library and add a NOTICE file to the root of the project, acknowledging that this fork is a modified version of the library in question. It is even better if you submit a pull request containing your modifications against the original library: if the PR gets merged, you can now import the new version of the original library containing your modifications, delete your fork and the general public will benefit from your modifications in the future.

I would not use the library under the terms & conditions of the LGPL or GPL license:

  • LGPL is about dynamic linkage and the ability to replace the used library with another version. Considering that you will pack your app into one .apk file, how will the users be able to replace JTranforms?
  • GPL does not allow you to release your software under a proprietary license. You can charge money for it, but the app has to be GPL licensed and the full source code must be made publically available.

Conclusion:
Assuming you call JTrasnforms without modifying it, you could use JTransforms without worries; include an about page in your app where you acknowledge that you use JTransforms under the MPL conditions (include links to the original JTransforms copyright & license). That's it.
I am not 100% certain if my statements are correct: I would definitely contact the authors of JTransform directly and ask them if you can do this.

Licensed under: CC-BY-SA with attribution
scroll top