Titanium Community Questions & Answer Archive

We felt that 6+ years of knowledge should not die so this is the Titanium Community Questions & Answer Archive

License issue of JavaScriptCore and Titanium

Titanium is built upon JavaScriptCore as far as I can tell from this blog.

Although Titanium is licensed under Apache V2, JavaScriptCore is still using LGPL. LGPL is not friendly to iOS App Store and Android Market.

How could developers avoid the potential license issue caused by JavaScriptCore?

For more information about LGPL and App Store, please read the following articles:

1. The GPL and the iOS App Store

2. Compatibility between the iPhone App Store and the LGPL

— asked January 15th 2012 by Cuper Hector
  • license
4 Comments
  • Our lawyer is reviewing license issues of all 3rd-party libraries in our products. I'm trying to convince him Titanium is legal to use.

    I'd appreciate it if anyone can share some supportive advices.

    — commented January 16th 2012 by Cuper Hector
  • My two cents would be that because the Ti product does make static libraries available as object code then it does support the LGPL.
    I'm not a lawyer though!

    — commented January 16th 2012 by Nick Milner
  • FYI, I am checking on this internally and will let you know what our determination on this issue was.

    — commented January 17th 2012 by Kevin Whinnery
  • Thanks a lot!

    — commented January 18th 2012 by Cuper Hector

2 Answers

  • Accepted Answer

    We checked on this over about a month, but I forgot to come back and update - sorry guys. We're in compliance with the LGPL license under our usage of JSCore, and your apps are as well - since your apps don't require modification of the JSCore engine, you are not required to do anything with your own source code as a result. Appcelerator modifies JSCore, but our modifications are made open source in compliance with the license.

    — answered March 14th 2012 by Kevin Whinnery
    permalink
    2 Comments
    • This doesn't completely answer my concerns. The LGPL requires that binaries (such as Titanium App) which statically include LGPL'ed code (such as JSC) are made available in a way that allows third parties to recompile the LGPL'ed component (e.g. to include new upstream features or to manually fix a bug or security issue) and re-create the application with their own version of the LGPL'ed component.

      The section we're worried about is section 6)a) of the LGPL 2.1:

      a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

      — commented March 14th 2012 by Sven Herzberg
    • As it has been explained to me by our new in house counsel (who thankfully has written extensively on these topics), what excludes your JavaScript source from the viral nature of the LGPL is the nature of your use of the "Library". Only libraries that statically link against the original library must be made open source (which we have done with our modified version of JSCore).

      In the passage above, "the Library" refers to the "contributor version" of the original library, which in the case is our modified version of JSCore. There's a FAQ on the GNU site here which speaks to this issue. Since your source code dynamically uses an LGPL-compatible open source library, which our custom JSCore is, your source is not required to be made available.

      I'm afraid that's probably the best I can do myself - I think in both the sprit and letter of the license, it's pretty clear that Titanium applications are not affected by the viral provisions of the LGPL. If you or your company's counsel wants to get in contact with our in-house lawyer to hash this out further, I can make an introduction. Send me a mail at community at appcelerator dot com.

      — commented March 16th 2012 by Kevin Whinnery
  • Hello,
    I agree with Nick, all the code is being statically included, which complies with Apple's policies:

    "3.3.2 An Application may not download or install executable code. Interpreted code may only
    be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple’s built-in WebKit framework."

    More info here

    Best,

    Mauro

    — answered January 16th 2012 by Mauro Parra
    permalink
    2 Comments
    • The point is not whether Apple approves static linking.

      It's about why Appc thinks that using LGPL'ed JavaScriptCore as a statically linked library is legal.

      The LGPL demands release of the .o files for rebuilding statically linked binaries (along with all scripts/tools to do the rebuild).

      I'm still puzzled whether this would even include the release of the application's JavaScript code (as the resulting binary from re-linking still wouldn't be usable w/o that code).

      — commented January 17th 2012 by Sven Herzberg
    • I have the exact same concern. We don't want to make our JavaScript code public. But I'm worried LGPL may force us to it.

      — commented January 17th 2012 by Cuper Hector
The ownership of individual contributions to this community generated content is retained by the authors of their contributions.
All trademarks remain the property of the respective owner.