comp.lang.ada
 help / color / mirror / Atom feed
* New copying license for classes/modules: CGPL
@ 1997-09-13  0:00 Wouter Scholten
  1997-09-14  0:00 ` Robert Dewar
  0 siblings, 1 reply; 14+ messages in thread
From: Wouter Scholten @ 1997-09-13  0:00 UTC (permalink / raw)



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





^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~1997-10-09  0:00 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-09-13  0:00 New copying license for classes/modules: CGPL Wouter Scholten
1997-09-14  0:00 ` Robert Dewar
1997-09-16  0:00   ` Bertrand Meyer
1997-09-17  0:00     ` Joerg Rodemann
1997-09-17  0:00       ` Enforcing assertions in Eiffel Joachim Durchholz
1997-09-29  0:00         ` Joerg Rodemann
1997-09-30  0:00           ` Joachim Durchholz
1997-10-01  0:00             ` Jon S Anthony
1997-10-09  0:00               ` JOVIAL (J3) John R. Fluharty, Jr
1997-10-01  0:00           ` Enforcing assertions in Eiffel Morgan Palaeo Associates
1997-10-01  0:00             ` Joerg Rodemann
1997-10-01  0:00               ` W. Wesley Groleau x4923
1997-09-17  0:00     ` New copying license for classes/modules: CGPL Robert Dewar
1997-09-17  0:00     ` Robert Dewar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox