From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,39771953fe5b2343,start X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,39771953fe5b2343,start X-Google-Attributes: gid103376,public X-Google-Thread: 1025b4,39771953fe5b2343,start X-Google-Attributes: gid1025b4,public From: Wouter Scholten Subject: New copying license for classes/modules: CGPL Date: 1997/09/13 Message-ID: <341A7F0E.66E46566@cistron.nl>#1/1 X-Deja-AN: 272127280 X-Server-Date: 13 Sep 1997 11:58:48 GMT Organization: not too good. Desktop is a bit messy. Newsgroups: gnu.misc.discuss,comp.lang.eiffel,comp.lang.ada Date: 1997-09-13T11:58:48+00:00 List-Id: Summary: CGPL license for classes/modules/subroutines Introduction ============ The GPL/LGPL licenses are not adequate for classes as these must be compiled into a program, but they are really used in the same way as a library: to get access to already coded functions. Similarly for non-OO programming, small utilies can easier be compiled into a program (and possible altered a bit) than linked with a shared lib (you must make sure the target system has the lib you use etc). An example would be GIF decoders and time/date functions. I therefore suggest a CGPL license which says: - using the classes (or subroutines, modules, ...) for any product is allowed, commercial, GPL, LGPL, BSD, etc. - Any enhancements to the classes must be released freely with source by uploading to a server like sunsite.unc.edu (this is stronger than the GPL/LGPL requirement) - additional classes made in a program using them, need not be released. There are some other cases where the CGPL should also be used, like wrappers for libraries. These need to be compiled into a program although it's clear they are used like a library, but the code must be compiled into the program. This latter requirement means the LGPL doesn't work (it becomes automatically equivalent to a GPL). Rationale ========= 1. It should not be necessary to reinvent the wheel for any programmer. Creativity should go into the toplevel stuff, not in reinventing the wheel for the umpteenth time. 2. Now, there's no or almost no incentive for commercial programmers to release their stuff freely. Now, if we have a CGPL, then they would/could also contribute. 3. The top level/creative/specific stuff should fall under the license one wants (Comm., GPL, LGPL, BSD, whatever) 4. We could have a common base for BSD/GPL versions of programs. Duplication of efforts between *BSD and Linux would be lessened. Which license for what part? ============================ Well, it's your own choice, but CGPL for the really general things, Commercial/GPL/LGPL/BSD/other for the higher level stuff seems appropriate. Completely CGPL'ing would be possible but only useful in some cases. What should the license look like? ================================== Mike Stump suggested: - Try the libgcc trick. Do a standard GPL, then add: - - /* As a special exception, if you link this library with other files, - some of which are compiled with GCC, to produce an executable, - this library does not by itself cause the resulting executable - to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. - */ - - to each file, just after the standard opening. You'll probably want - to modify that slightly to target what it is you want to allow. Note, - once you do this, you cannot incorporate normal GPL or LGPL code, - without the copyright holder's explicit blessing. If you own it - (wrote it), then there is no problem. - - It works well for libgcc.a and libstdc++, the runtime libraries for - gcc and g++, and has withstood the test of time IMHO. In the CGPL case, the 'compiled with GCC' should be removed, and 'link with' should be replaced. It should probably look somewhat like this: GPL + /* As a special exception, if you link a complete library made from these classes/modules/functions with other files, or compile these classes with other files to produce an executable, this library does not by itself cause the resulting executable to be covered by the GNU General Public License. This will be covered by the license that is implied by the license on the components not obtained from the library. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License. Any enhancements to the classes/library must be released freely with source by uploading to a server like sunsite.unc.edu, immediately after releasing any program based on these enhanced classes. */ i.e., the components used would remain under the CGPL, and the executable falls under the same license as the top level stuff (*GPL, BSD,..) Furthermore, I want to avoid the vagueness of the GPL/LGPL about releasing source, which can be 'delayed' (see the 'What does the GPL really say' discussion in comp.lang.ada) Any suggestions or improvements ? BTW, I don't like the standard GPL opening for all files. This adds an enourmous amount of text for mostly small files. Can one say, 'see the file CGPL explaining the license for this file', where the file CGPL contains a reference to the GPL, with the addition as above ? Wouter