1

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 ?

2

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.

  • 1
    Your answer summarises what I was searching for. However, I would be using JTransforms as is without modifying, I wonder whether the about page is necessary. Thanks for the help. – madLokesh Jan 21 '14 at 6:20
  • +1 if you think my question would help others as well – madLokesh Jan 21 '14 at 6:21
  • I am definitely not sure, but I think you are not required to give attribution (as one of the CPAL's main differences to the MPL is that it requires attribution). In my opinion it is however good sportsmanship to do it, especially if you make money from it. – mucaho Jan 21 '14 at 20:41
  • "Most licenses, open source or commercial, require that a copy of the copyright, patent, trademark, and attribution notices from the source software be distributed verbatim with the product using that software. Examples are GNU Public License (GPL), Microsoft Public License (MPL), and MIT license. Note that even if the source code is not distributed with your product, the copyright and other attribution must be distributed with your software." from blog about open source license distribution. – mucaho Jan 21 '14 at 20:55
  • 1
    "Most software licenses require that a copy of the license must be bundled with the binary ... For example, if your smart phone application uses an open source software distributed under Modified BSD license, then you have to make that license text available with the phone and make it accessible, and readable, on the mobile phone screen." - taken from same blog post. So in essence you will be forced to have an about page (or something similar), if you indeed distribute a single .apk file. The users have to be able to access JTransforms license & copyright somehow. – mucaho Jan 22 '14 at 13:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.