Bad Licenses Kill, Badly

I've been working on some data fitting routines lately. My natural response was to grab my copy of Numerical Recipes, and thought that their section on the Levenberg-Marquardt algorithm would be useful. I mentioned it to Jamie, and he said "you'd better check the license."

To be blunt: the license blows. It's a non-commercial license -- that's fine; I can understand that the authors may not want their work to go into a commercial product without compensation for their work. So perhaps a GPL style license would be appropriate, or a dual-license model. But their license goes far beyond limiting how the code can be distributed. It limits where you can read the code. You are licensed to look at the source code on one computer at a time. So if I want Jamie to review how I've integrated an NR routine, I have to quit Visual Studio so he can look at the same source file. There's more details at the aptly named "Boycott Numerical Recipes."

The most annoying thing: some of this work was done under the auspices of the NSF and DARPA. The US Federal Government paid for this work to further scientific research, and yet the license is so restrictive that it stifles scientific collaboration. Further, the authors, in their preface, "... enthusiastically recommend the principal software used: GNU Emacs, TeX, Perl, Adobe Illustrator, and PostScript." Well, they can use Emacs, TeX and Perl, and probably PostScript because the authors of those programs were forward-thinking enough to put their products out under permissive licenses.

So. What to do? First, don't make the same mistake: consider if your library can be released under an open-source license. Collectively, we've contributed to NPlot, AniML and EPIC and will continue to do so. Second, consider a license for your library that allows others to use and contribute to it. All of the projects we work on are distributed under generally permissive licenses (BSD-style, Lesser GPL, and the Eclipse License). Sharing the code helps us get the word out, but also improves the code and helps us with bugs and test cases. It's a win-win.

As for fitting routines, I think I'll go look at Apache Math, and leave NR back in the 1970s where it belongs.

Posted In

Post new comment

The content of this field is kept private and will not be shown publicly.