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

Re: Bug#290362: www.debian.org: Please add Root to list of programs that cannot be packaged



Sam Watkins wrote:

> On Thu, Jan 13, 2005 at 02:09:41PM -0500, Kevin McCarty wrote:
> 
>> the software contains what appears to be code derived from cernlib
>> (GPL) [3] and Xclass (LGPL) [4] while having a license incompatible
>> with either.
> 
> They likely are allowed to use cernlib, however xclass is a different
> matter.

I'm not confident about their use of Cernlib either.  One could argue
that because Rene and Fons were original authors of parts of Cernlib,
it's OK; but CERN claims copyright on (and has GPLed) the whole thing.

There are two issues:

1) Two conversion programs generated from Root source code, h2root and
g2root (Root license), link against Cernlib libraries, which might not
be permitted depending on your interpretation of the GPL.  The FSF's
interpretation (which I think Debian also uses) is that proprietary code
may not link against GPL libs, hence the invention of the LGPL.  This
issue is somewhat arguable, and the [gh]2root programs aren't strictly
necessary except for converting legacy data.

2) The code in minuit/src/TMinuit.cxx, as of Root version 4.02/00, has
the following header.  To me, this sounds very much ("a straightforward
conversion of the original Fortran version") as though TMinuit.cxx is a
derived work of MINUIT (part of PACKLIB, which in turn is part of
Cernlib, hence under GPL).

As an aside, I also wonder why they didn't just write a C++ wrapper
class around the existing FORTRAN code, instead of translating all of it.

> // Author: Rene Brun, Frederick James   12/08/95
> 
> /*************************************************************************
>  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
>  * All rights reserved.                                                  *
>  *                                                                       *
>  * For the licensing terms see $ROOTSYS/LICENSE.                         *
>  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
>  *************************************************************************/
> 
> //______________________________________________________________________________
> //*-*-*-*-*-*-*-*-*-*-*-*The Minimization package*-*--*-*-*-*-*-*-*-*-*-*-*
> //*-*                    ========================                         *
> //*-*                                                                     *
> //*-*   This package was originally written in Fortran by Fred James      *
> //*-*   and part of PACKLIB (patch D506)                                  *
> //*-*                                                                     *
> //*-*   It has been converted to a C++ class  by R.Brun                   *
> //*-*   The current implementation in C++ is a straightforward conversion *
> //*-*   of the original Fortran version: The main changes are:            *
> //*-*                                                                     *
> //*-*   - The variables in the various Minuit labelled common blocks      *
> //*-*     have been changed to the TMinuit class data members.            *
> //*-*   - The internal arrays with a maximum dimension depending on the   *
> //*-*     maximum number of parameters are now data members arrays with   *
> //*-*     a dynamic dimension such that one can fit very large problems   *
> //*-*     by simply initialising the TMinuit constructor with the maximum *
> //*-*     number of parameters.                                           *
> //*-*   - The include file Minuit.h has been commented as much as possible*
> //*-*     using existing comments in the code or the printed documentation*
> //*-*   - The original Minuit subroutines are now member functions.       *
> //*-*   - Constructors and destructor have been added.                    *
> //*-*   - Instead of passing the FCN  function in the argument            *
> //*-*     list, the addresses of this function is stored as pointer       *
> //*-*     in the data members of the class. This is by far more elegant   *
> //*-*     and flexible in an interactive environment.                     *
> //*-*     The member function SetFCN can be used to define this pointer.  *
> //*-*   - The ROOT static function Printf is provided to replace all      *
> //*-*     format statements and to print on currently defined output file.*
> //*-*   - The functions SetObjectFit(TObject *obj)/GetObjectFit() can be  *
> //*-*     used inside the FCN function to set/get a referenced object     *
> //*-*     instead of using global variables.                              *
> //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

regards,

-- 
Kevin B. McCarty <kmccarty@princeton.edu>   Physics Department
WWW: http://www.princeton.edu/~kmccarty/    Princeton University
GPG public key ID: 4F83C751                 Princeton, NJ 08544



Reply to: