Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Consider a Flex (actually AIR) application that is considered proprietary, but needs to use an LGPLv2.1 AS3 library, so that it is considered a "work that uses the Library" according to the license text and is thus required to be distributed according to the terms of Section 6 of the LGPL. What provision in AS3 or Flex is there for using a "suitable shared library mechanism" (Section 6b) to create the executable to use the library, allowing the end user to replace the library (somehow) and debug the new lib's use, thus not requiring that all the source for the proprietary app to be supplied (Section 6a,c,d,e) for recompiling/relinking?

I've already had a false start with RSL's, because replacing the RSL causes "Flex Error #1001: Digest mismatch with RSL".

share|improve this question

migrated from stackoverflow.com Dec 15 '11 at 15:06

This question came from our site for professional and enthusiast programmers.

    
Don't think so if the wording is "What provision in AS3 or Flex is there...". I think I know what the license requires - I'm asking what features of the language/framework can be used to meet a particular requirement. –  terry.bondy Dec 13 '11 at 20:56
    
Fixed title a bit. –  terry.bondy Dec 13 '11 at 21:06
    
I don't have the foggiest idea what you're asking for. Do you want to swap out libraries at runtime? I know of no way to make this happen. –  Reboog711 Dec 13 '11 at 21:25
    
Not necessarily at run-time. Could be at compile time as long as what is compiled is not prop app's sources and the "when" of the compile time is determined by the end user. Could even be a compilation of a "slice" of an IOC/DI container's config. –  terry.bondy Dec 13 '11 at 21:35
    
I'm not familiar with modules. Could they be a facility for doing this? –  terry.bondy Dec 13 '11 at 21:36
add comment

1 Answer

One way around this would be to provide your program in SWC form, along with a Makefile and a pointer to the Flex SDK tools. The user is then free to link up a new version of your program with a different SWC for the LGPL'd library you want to use.

Bottom line, whatever way you choose, the primary freedom you need to preserve to comply with the LGPL is that of your users to swap in new versions of the LGPL'd library at any time of their choosing. It sounds like RSLs can't do what you want, and your users don't get the freedom they were promised by the LGPL'd library's copyright holder with any solution involving your server. (e.g. You can't just let users upload a .swc for you to relink into their special hosted version of your Flex app, since that puts your users at your mercy: if your server breaks or you go away, your users' ability to take advantage of their promised freedom under the LGPL also goes away.) You either have to give your end users the freedom to relink the program themselves, or don't use LGPL'd code.

Maybe this sounds unfair to you, but this is exactly the sort of thing the library's copyright holder had in mind when he chose the LGPL.

You might be worried about how this impacts security, but I assure you that the fully-compiled and optimized Flex .swf sitting on your web server is just as easily disassembled as a pile of .swc files. If you're worried about people stealing your stuff, you shouldn't be using Flash at all. Compiled Flash files are scarcely more secure against prying eyes than obfuscated Javascript.

share|improve this answer
    
Thanks for your lengthy and considered answer. As I mentioned in the original question, I've tried RSLs. They are digest checked on app startup and so can't be replaced. Otherwise it would have been OK, as the app and the original RSL are distributed as a native installed AIR app. –  terry.bondy Dec 15 '11 at 3:36
    
Removed unhelpful paragraphs :) –  Warren Young Dec 15 '11 at 4:38
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.