On Tue, Aug 26, 2014 at 03:48:49AM +1200, RussellMc wrote: > I'm trying to establish when use of an "open" compiler (or interpreter or > ...) will or will not equally liberate the code it produces. A compiler/interpreter never librates the code that is its imput that I have seen in over 20 years in that scene. The sticky wicket comes against dynamic linking of libraries IIRC. > While this subject is no doubt very well covered in many places I've not > yet found a moderately definitive paragraph-or-few summary that I can > depend on. >=20 > There are many versions of "free" software - GNU, FOSs, FLOSS copy left, > public domain ... >=20 > A read through one of Wikipedia's offerings left me more uncertain than > when I started. >=20 >=20 > http://en.wikipedia.org/wiki/Free_and_open-source_software#Controversy >=20 > I'll use the term "XXX" here and I'd be pleased for anyone to comment on > any version of "free" / open / ... and its relevance to my question as > they see fit. >=20 > Question: >=20 > I use an XXX licenced "free" compiler to produce a target 'program'. > Under what circumstances does my target program become equally "free"? Never. >=20 > How do various 'free' licences affect this? They do not. >=20 > How dos using an interpreter alter things (if at all)? None. >=20 > _________ >=20 > Example: >=20 > How is Python affected by this? > (FOSS & interpreted so may be a good extreme example?) No effect. Just because Python is running your code does not make your code free. >=20 > _________ >=20 > Misc thunks: >=20 > I have seen it suggested that where code includes library code from an XX= X > compiler that that renders the whole program as XXX licenced except for > modules which are compiled independently and linked to as part of the > target program. This is the sticky wicket. If a library is GPL, then your code must be GPL compatible to use it. Very few libraries are actually GPL (They are LGPL) and most of the ones that are use what is called the GNU Linking exception. http://en.wikipedia.org/wiki/GPL_linking_exception Now incorporating source is a completely different discussion. In the past when these discussions come up I use what I call the YOURCODE rules. 1. YOURCODE is your code. You may license it as you wish as long as it's completely YOURCODE. 2. Compiling or interpreting YOURCODE never makes it not YOURCODE even if you use OSS software to do so. 3. Under virtually every circumstance, you can link YOURCODE with OSS libraries as long as you do not modify the library in any way. 4. You can even change the OSS libraries, interpreters, and compilers. However, those entities are not YOURCODE. So any changes that you make to those entities are subject to the license of the entity, not to the license of YOURCODE. 4. Once you start to combine the source of YOURCODE with the source of OSS code, then it's no longer completely YOURCODE. So you may be subject to license restrictions of the code your incorporate. Note that typically keeping them as independent linkable modules reverts to rule #3. >=20 > I understand that if I use an XXX compiler and include NO library code th= en > my program will not be XXX licenced BUT it is liable to be 'rather hard' = to > avoid such code being included. See rule #3 above. Virtually all libraries use something like the LGPL or looser license. LGPL is subject to rule #4. Specifically if you make changes to the library and then link your code to the changed library, then you must distribute the modified library. It has no impact on YOURCODE as long as you are not in a #4 situation. Now some licensees (BSD for example) will allow you to combine code without having to convey the source of the combined work. But with GPL type licenses of all types, the conveyance rules for the source of the GPL type code is that if you change it, you have to convey it. >=20 > Does or may use of a wholly interpretive language alter anything? >=20 > Tokenisation exterior to target and ...? >=20 > ....? For a compiler/interpreter your code is data. It does not combine in any meaningful way. YOURCODE is your code. You can link and use system libraries for these tools unimpeaded... AS LONG AS YOU DO NOT CHANGE THEM! It gets sticky when you change code that is not yours... BAJ >=20 >=20 > R > --=20 > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist --=20 Byron A. Jeff Chair: Department of Computer Science and Information Technology College of Information and Mathematical Sciences Clayton State University http://faculty.clayton.edu/bjeff --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .