cfortran and free software
(please cc: me because I am not on this mailing list)
Hi Debian legal experts --
I am trying to package a set of numerical libraries I have developed
for my research as free software, under the LGPL. These libraries
allow a simple C interface to high-powered matrix-based numerical
code, and also support some things like fast training and evaluation
of neural networks, and hidden Markov models. I have also developed
an RScheme interface for these libraries and will soon have a Guile
interface as well (I like numerical programming in Scheme, call me
I would eventually like to become a Debian developer and package these
libraries (and a couple related packages) for Debian. The libraries
are written primarily in C, but use Fortran libraries for most of
their inner loops. The libraries I use most are BLAS and LAPACK
(available at netlib.org, and as the Debian lapack packages). I am
using BLAS and LAPACK because it seems that much of the best numerical
libraries are written in Fortran, and for machines like the SGI O2 I
use at work, the hardware vendors of engineering workstations provide
versions of BLAS which are highly optimized for the hardware.
For making a portable interface between these FORTRAN libraries and my
C code, I have been using the cfortran package
(http://www-zeus.desy.de/~burow/cfortran/) which seems to be the most
general solution available. The package is mainly a c header file,
cfortran.h which allows you to create prototypes for Fortran functions
which will work for most any Fortran compiler and operating system.
Unfortunately, cfortran.doc includes the following text:
> THIS PACKAGE, I.E. CFORTRAN.H, THIS DOCUMENT, AND THE CFORTRAN.H EXAMPLE
> PROGRAMS ARE PROPERTY OF THE AUTHOR WHO RESERVES ALL RIGHTS. THIS PACKAGE AND
> THE CODE IT PRODUCES MAY BE FREELY DISTRIBUTED WITHOUT FEES, SUBJECT TO THE
> FOLLOWING RESTRICTIONS:
> - YOU MUST ACCOMPANY ANY COPIES OR DISTRIBUTION WITH THIS (UNALTERED) NOTICE.
> - YOU MAY NOT RECEIVE MONEY FOR THE DISTRIBUTION OR FOR ITS MEDIA
> (E.G. TAPE, DISK, COMPUTER, PAPER.)
> - YOU MAY NOT PREVENT OTHERS FROM COPYING IT FREELY.
> - YOU MAY NOT DISTRIBUTE MODIFIED VERSIONS WITHOUT CLEARLY DOCUMENTING YOUR
> CHANGES AND NOTIFYING THE AUTHOR.
> - YOU MAY NOT MISREPRESENTED THE ORIGIN OF THIS SOFTWARE, EITHER BY EXPLICIT
> CLAIM OR BY OMISSION.
> THE INTENT OF THE ABOVE TERMS IS TO ENSURE THAT THE CFORTRAN.H PACKAGE NOT BE
> USED FOR PROFIT MAKING ACTIVITIES UNLESS SOME ROYALTY ARRANGEMENT IS ENTERED
> INTO WITH ITS AUTHOR.
> THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
> EXPRESSED OR IMPLIED. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
> SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST
> OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. THE AUTHOR IS NOT RESPONSIBLE
> FOR ANY SUPPORT OR SERVICE OF THE CFORTRAN.H PACKAGE.
> Burkhard Burow
I assume that this precludes cfortran.h from being included in any
Debian distribution. I don't know whether it precludes binaries
generated with code including this header from being distributed by
Debian (I'm assume that debian-policy would make this difficult).
In the document "Adding Fortran 77 Support to Automake"
(http://www.slac.stanford.edu/~langston/am-f77_toc.html) at this
there is a footnote which states:
> For example, the cfortran package addresses all of these
> inter-language issues, and runs under nearly all Fortran 77, C and C++
> compilers on nearly all platforms. However, cfortran is not yet Free
> Software, but it will be in the next major release.
This node is dated 10 October 1998, and cfortran has not been
re-released since then. Maybe some day my problem will disappear :).
Could you please suggest some way that I might be able to get around
this? Help from anyone with a background in using Fortran code with
free software is especially welcome.
Here is one thought I have. First, I assume that my own code can be
licensed with the LGPL, but with an extra clause stating that it may
be used with cfortran.h. Then, I could make a set of headers for
Fortran functions specifically for use with G77, not using cfortran.h.
A distribution of code based on this could be usable by Debian, but
might not work on systems which do not use G77. I could then put
cfortran.h on my web page so that people could download it and set up
my distribution to use it if it is seen during the ./configure
Would this work? Any better ideas?