From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jan Moringen Newsgroups: gmane.emacs.devel Subject: Potential copyright problem in EIEIO improvement Date: Wed, 30 Dec 2009 03:49:00 +0100 Message-ID: <23751_1262141343_ZZg0N7E3ZcBp~.00_1262141340.11263.18.camel@localhost.localdomain> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE X-Trace: ger.gmane.org 1262145381 23526 80.91.229.12 (30 Dec 2009 03:56:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 30 Dec 2009 03:56:21 +0000 (UTC) To: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Dec 30 04:56:14 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NPpfQ-0005pK-MC for ged-emacs-devel@m.gmane.org; Wed, 30 Dec 2009 04:56:12 +0100 Original-Received: from localhost ([127.0.0.1]:45477 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NPpfQ-0002Jc-PP for ged-emacs-devel@m.gmane.org; Tue, 29 Dec 2009 22:56:12 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NPoca-0004vc-Gd for emacs-devel@gnu.org; Tue, 29 Dec 2009 21:49:12 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NPocV-0004tB-PX for emacs-devel@gnu.org; Tue, 29 Dec 2009 21:49:11 -0500 Original-Received: from [199.232.76.173] (port=41570 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NPocV-0004t8-Jk for emacs-devel@gnu.org; Tue, 29 Dec 2009 21:49:07 -0500 Original-Received: from mux1-unibi-smtp.hrz.uni-bielefeld.de ([129.70.204.65]:42875) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NPocV-0004HQ-54 for emacs-devel@gnu.org; Tue, 29 Dec 2009 21:49:07 -0500 Original-Received: from pmxchannel-daemon.mux1-unibi-smtp.hrz.uni-bielefeld.de by mux1-unibi-smtp.hrz.uni-bielefeld.de (Sun Java(tm) System Messaging Server 6.3-6.03 (built Mar 14 2008; 32bit)) id <0KVG00A002HRL700@mux1-unibi-smtp.hrz.uni-bielefeld.de> for emacs-devel@gnu.org; Wed, 30 Dec 2009 03:49:03 +0100 (CET) Original-Received: from [192.168.2.101] ([212.100.61.78]) by mux1-unibi-smtp.hrz.uni-bielefeld.de (Sun Java(tm) System Messaging Server 6.3-6.03 (built Mar 14 2008; 32bit)) with ESMTPPSA id <0KVG00M3H2HQU380@mux1-unibi-smtp.hrz.uni-bielefeld.de>; Wed, 30 Dec 2009 03:49:03 +0100 (CET) X-Mailer: Evolution 2.29.3.2 X-EnvFrom: jan.moringen@uni-bielefeld.de X-PMX-Version: 5.5.1.360522, Antispam-Engine: 2.6.1.350677, Antispam-Data: 2009.12.30.23916, pmx10 X-Connecting-IP: 212.100.61.78 X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (beta) X-Mailman-Approved-At: Tue, 29 Dec 2009 22:56:08 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:119010 Archived-At: Hi, while working on an EIEIO feature, Eric and I encountered a possible legal problem we could not resolve. Eric suggested asking for help he= re. Basically, I implemented an algorithm (c3 linearization) which is described in an academic paper (see below). My implementation is very close to the implementation presented in the paper (although that one= is written in Dylan). Rather than explaining everything from scratch I just paste Eric's an= d my conversation concerning the issue (the diff at the beginning is fr= om one part of my patch): On Thu, 2009-12-17 at 03:08 +0100, Jan Moringen wrote:=20 > On Tue, 2009-12-15 at 22:43 -0500, Eric M. Ludlam wrote: > > +;; > > +;; Note: the implementation of the c3 algorithm is based on: > > +;; Kim Barrett et al.: A Monotonic Superclass Linearization fo= r > > Dylan > > +;; Retrieved from: > > +;; http://192.220.96.201/dylan/linearization-oopsla96.html > >=20 > > Could you elaborate on what this comment means? =20 >=20 > Sure. >=20 > > More specifically,did you translate code directly (presumably fro= m > > Dylan) >=20 > Pretty much. The Dylan code uses lots local methods and some other > minor things are different, but the structure is still very similar= . >=20 > > , and could they claim copyright in some way on your work? >=20 > Bottom line: I don't know. However, I can present some details: >=20 > The note refers to the paper "A Monotonic Superclass Linearization = for > Dylan" (a full citation is in the Wikipedia article > http://en.wikipedia.org/wiki/C3_linearization). In that paper, the > authors present the Dylan code of the canonical Dylan linearization > and > they present their modified candidate method. >=20 > The novel code in the paper is this (comments stripped): >=20 > local method candidate (c :: ) > local method tail? (l :: ) > member?(c, tail(l)) > end method tail?; >=20 > ~any?(tail?, remaining-inputs) > & c > end method candidate, >=20 > method candidate-at-head (l :: ) > ~empty?(l) & candidate(head(l)) > end candidate-at-head; >=20 > let next =3D any?(candidate-at-head, remaining-inputs); >=20 > The equivalent code in eieio.el would be: >=20 > (defun eieio-c3-candidate (class remaining-inputs) > "Returns CLASS if it can go in the result now, otherwise nil" > ;; Ensure CLASS is not in any position but the first in any of th= e > ;; element lists of REMAINING-INPUTS. > (and (not (some (lambda (l) (member class (rest l))) > =09=09 remaining-inputs)) > class)) >=20 > and later: >=20 > (let ((next (some (lambda (c) (eieio-c3-candidate c remaining-input= s)) > =09=09 (mapcar #'first > =09=09=09 (remove-if #'null remaining-inputs))))) >=20 > The copyright notice of the online version of the paper reads as > follows: >=20 > Copyright =C2=A9 1996 by the Assocation for Computing Machinery. > Permission > to copy and distribute this document is hereby granted provided tha= t > this notice is retained on all copies, that copies are not altered, > and > that ACM is credited when the material is used to form other copyri= ght > policies. See the ACM Interim Copyright Policy for details. >=20 > The canonical algorithm was probably implemented in GPLed code befo= re > the publication. For example sources/dylan/class-dynamic.dylan:573 = of > Open Dylan. >=20 > According to Wikipedia, the algorithm itself is in moderate use: >=20 > * Python 2.3's use of C3 MRO > * Perl 6 will use C3 MRO > * Parrot uses C3 MRO > * C3 MRO available in Perl 5.10 >=20 > I would assume it to be safe to derive an equivalent program in > another > programming language (like we would). But I'm not sure. >=20 > > If you aren't sure we should check with the FSF copyright clerk a= s > I'm > > not that clear on the rules here either. >=20 > If the elaboration did not help, we should resort to that measure. >=20 > > Thanks >=20 > Thank you for concerning yourself so much with this very small > potential improvement. >=20 > Jan Any thoughts on this issue would be greatly appreciated. I can try to provide additional information if required. Many thanks in advance. Jan