Re: cdrtools - GPL code with CDDL build system
Why is he quoting the GPL *preamble*? Preambles aren't supposed to
have legal effect, are they?
(Interesting looking at the case of the preamble question in
Australia's 1999 constitutional referendum - the 'no' case says that
the preamble could have had legal effect.)
andrew
On 3/19/06, Måns Rullgård <mru@inprovide.com> wrote:
> Sam Morris <sam@robots.org.uk> writes:
>
> > Måns Rullgård wrote:
> >> Flaming aside, this is a non-issue. The source for cdrecord contains
> >> invariant sections (those obnoxious "warnings" about using device
> >> names), so it's certainly not DFSG-free. Just use dvdrtools instead.
> >
> > Oh? How is it in main then?
>
> A package being in main doesn't automatically mean that it should be
> there. Packages have been removed from main in the past.
>
>
> These are the bits I'm referring to, from cdrecorc.c (sorry for the
> long lines, but that's how it's written):
>
> ---BEGIN QUOTE---
> /*
> * Begin restricted code for quality assurance.
> *
> * Warning: you are not allowed to modify or to remove the
> * Copyright and version printing code below!
> * See also GPL § 2 subclause c)
> *
> * If you modify cdrecord you need to include additional version
> * printing code that:
> *
> * - Clearly states that the current version is an
> * inofficial (modified) version and thus may have bugs
> * that are not present in the original.
> *
> * - Print your support e-mail address and tell people that
> * you will do complete support for this version of
> * cdrecord.
> *
> * Or clearly state that there is absolutely no support
> * for the modified version you did create.
> *
> * - Tell the users not to ask the original author for
> * help.
> *
> * This limitation definitely also applies when you use any other
> * cdrecord release together with libscg-0.6 or later, or when you
> * use any amount of code from cdrecord-1.11a17 or later.
> * In fact, it applies to any version of cdrecord, see also
> * GPL Preamble, subsection 6.
> *
> * I am sorry for the inconvenience but I am forced to do this because
> * some people create inofficial branches. These branches create
> * problems but the initiators do not give support and thus cause the
> * development of the official cdrecord versions to slow down because
> * I am loaded with unneeded work.
> *
> * Please note that this is a memorandum on how I interpret the GPL.
> * If you use/modify/redistribute cdrecord, you need to accept it
> * this way.
> *
> *
> * The above statement is void if there has been neither a new version
> * of cdrecord nor a new version of star from the original author
> * within more then a year.
> */
>
> /*
> * Ugly, but Linux incude files violate POSIX and #define printf
> * so we cannot include the #ifdef inside the printf() arg list.
> */
> # define PRODVD_TITLE ""
> #ifdef CLONE_WRITE
> # define CLONE_TITLE "-Clone"
> #else
> # define CLONE_TITLE ""
> #endif
> if ((flags & F_MSINFO) == 0 || lverbose || flags & F_VERSION) {
> printf("Cdrecord%s%s %s (%s-%s-%s) Copyright (C) 1995-2004 Jörg
> Schilling\n",
> PRODVD_TITLE,
> CLONE_TITLE,
> cdr_version,
> HOST_CPU, HOST_VENDOR, HOST_OS);
>
> #if defined(SOURCE_MODIFIED) || !defined(IS_SCHILY_XCONFIG)
> #define INSERT_YOUR_EMAIL_ADDRESS_HERE
> #define NO_SUPPORT 0
> printf("NOTE: this version of cdrecord is an inofficial (modified) release
> of cdrecord\n");
> printf(" and thus may have bugs that are not present in the original
> version.\n");
> #if NO_SUPPORT
> printf(" The author of the modifications decided not to provide a
> support e-mail\n");
> printf(" address so there is absolutely no support for this
> version.\n");
> #else
> printf(" Please send bug reports and support requests to <%s>.\n",
> INSERT_YOUR_EMAIL_ADDRESS_HERE);
> #endif
> printf(" The original author should not be bothered with problems of
> this version.\n");
> printf("\n");
> #endif
> #if !defined(IS_SCHILY_XCONFIG)
> printf("\nWarning: This version of cdrecord has not been configured via
> the standard\n");
> printf("autoconfiguration method of the Schily makefile system. There is a
> high risk\n");
> printf("that the code is not configured correctly and for this reason will
> not behave\n");
> printf("as expected.\n");
> #endif
> }
>
> /*
> * I am sorry that even for version 1.297 of cdrecord.c, I am forced to do
> * things like this, but defective versions of cdrecord cause a lot of
> * work load to me and it seems to be impossible to otherwise convince
> * SuSE to cooperate.
> * As people contact me and bother me with the related problems,
> * it is obvious that SuSE is violating subsection 6 in the preamble of
> * the GPL.
> *
> * The reason for including a test against SuSE's private
> * distribution environment is only that SuSE violates the GPL for
> * a long time and seems not to be willing to follow the requirements
> * imposed by the GPL. If SuSE starts to ship non defective versions
> * of cdrecord or informs their customers that they would need to
> * compile cdrecord themselves in order to get a working cdrecord,
> * they should contact me for a permission to change the related test.
> *
> * Note that although the SuSE test is effective only for SuSE, the
> * intention to have non bastardized versions out is not limited
> * to SuSE. It is bad to see that in special in the "Linux" business,
> * companies prefer a model with many proprietary differing programs
> * instead of cooperating with the program authors.
> */
> linuxcheck(); /* For version 1.297 of cdrecord.c */
>
> if (flags & F_VERSION)
> exit(0);
> /*
> * End restricted code for quality assurance.
> */
> ---END QUOTE---
>
> The linuxcheck() function can be found near the end of the same file:
>
> ---BEGIN QUOTE---
> /*
> * I am sorry that even for version 1.297 of cdrecord.c, I am forced to do
> * things like this, but defective versions of cdrecord cause a lot of
> * work load to me and it seems to be impossible to otherwise convince
> * SuSE to cooperate.
> * As people contact me and bother me with the related problems,
> * it is obvious that SuSE is violating subsection 6 in the preamble of
> * the GPL.
> *
> * The reason for including a test against SuSE's private
> * distribution environment is only that SuSE violates the GPL for
> * a long time and seems not to be willing to follow the requirements
> * imposed by the GPL. If SuSE starts to ship non defective versions
> * of cdrecord or informs their customers that they would need to
> * compile cdrecord themselves in order to get a working cdrecord,
> * they should contact me for a permission to change the related test.
> *
> * Note that although the SuSE test is effective only for SuSE, the
> * intention to have non bastardized versions out is not limited
> * to SuSE. It is bad to see that in special in the "Linux" business,
> * companies prefer a model with many proprietary differing programs
> * instead of cooperating with the program authors.
> */
> #if defined(linux) || defined(__linux) || defined(__linux__)
> #ifdef HAVE_UNAME
> #include <sys/utsname.h>
> #endif
> #endif
>
> LOCAL void
> linuxcheck() /* For version 1.297 of cdrecord.c */
> {
> #if defined(linux) || defined(__linux) || defined(__linux__)
> #ifdef HAVE_UNAME
> struct utsname un;
>
> if (uname(&un) >= 0) {
> /*
> * I really hope that the Linux kernel developers will soon
> * fix the most annoying bugs (as promised). Linux-2.6.8
> * has still much more reported problems than Linux-2.4.
> */
> if ((un.release[0] == '2' && un.release[1] == '.') &&
> (un.release[2] == '5' || un.release[2] == '6')) {
> errmsgno(EX_BAD,
> "Warning: Running on Linux-%s\n", un.release);
> errmsgno(EX_BAD,
> "There are unsettled issues with Linux-2.5 and newer.\n");
> errmsgno(EX_BAD,
> "If you have unexpected problems, please try Linux-2.4 or Solaris.\n");
> }
> if ((un.release[0] == '2' && un.release[1] == '.') &&
> (un.release[2] > '6' ||
> (un.release[2] == '6' && un.release[3] == '.' && un.release[4] >=
> '8'))) {
> errmsgno(EX_BAD,
> "Warning: Linux-2.6.8 introduced incompatible interface changes.\n");
> errmsgno(EX_BAD,
> "Warning: SCSI transport does no longer work for suid root programs.\n");
> errmsgno(EX_BAD,
> "Warning: if cdrecord fails, try to run it from a root account.\n");
> }
> }
> #endif
> if (streql(HOST_VENDOR, "suse")) { /* For version 1.297 of cdrecord.c */
> /* 1.297 */ errmsgno(EX_BAD,
> /* 1.297 */ "SuSE Linux is known to ship bastardized and defective versions
> of cdrecord.\n");
> /* 1.297 */ errmsgno(EX_BAD,
> /* 1.297 */ "SuSE is unwilling to cooperate with the authors.\n");
> /* 1.297 */ errmsgno(EX_BAD,
> /* 1.297 */ "If you like to have a working version of cdrtools, get the\n");
> /* 1.297 */ errmsgno(EX_BAD,
> /* 1.297 */ "original source from ftp://ftp.berlios.de/pub/cdrecord/\n");
>
> }
> #endif
> }
> ---END QUOTE---
>
> For completeness, here's GPL 2c:
>
> ---BEGIN QUOTE---
> c) If the modified program normally reads commands interactively
> when run, you must cause it, when started running for such
> interactive use in the most ordinary way, to print or display an
> announcement including an appropriate copyright notice and a
> notice that there is no warranty (or else, saying that you provide
> a warranty) and that users may redistribute the program under
> these conditions, and telling the user how to view a copy of this
> License. (Exception: if the Program itself is interactive but
> does not normally print such an announcement, your work based on
> the Program is not required to print an announcement.)
> ---END QUOTE---
>
> Take note that cdrecord is never interactive, so GPL 2c doesn't apply.
> I don't know why JS refers to it, but then JS does a lot of things
> that nobody understands.
>
> --
> Måns Rullgård
> mru@inprovide.com
>
>
> --
> To UNSUBSCRIBE, email to debian-legal-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
>
>
--
Andrew Donnellan
http://andrewdonnellan.com
http://ajdlinux.blogspot.com
Jabber - ajdlinux@jabber.org.au
-------------------------------
Member of Linux Australia - http://linux.org.au
Debian user - http://debian.org
Get free rewards - http://ezyrewards.com/?id=23484
OpenNIC user - http://www.opennic.unrated.net
Reply to: