[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: