#87 GPL->LGPL licence change, more suitable for a library with basic vector and matrix objects


Some time ago I used IT++ for academic calculations. In the meantime I used only MATLAB, with some IT++-based Mex-functions. I'm still looking for the best math library in future projects. The most relevant disadvantages of IT++ are the lack of thread-safety and the GPL license.

I cannot publish all my algorithms I have develop for research contracts. However, I'm absolutely willing to contribute basic building blocks and extensions on a library such as IT++. I think most of the researchers are in the same situation.

But at the moment, only people can work with IT++ that are allowed to publish EVERYTHING they develop using the basic math of IT++ (hobbyists, students and researchers with liberal contracts). It's not a bad thing, but you exclude many professional and industrial researchers that have to keep some algorithms confidential by contract. Most of them have something to share and something to keep confidential. Of course, some industrial users could also just use IT++ without contributing anything back. But is this really a loss, if it's otherwise becoming a quasi-standard for signal processing blocks? I know many people that are unhappy with MATLAB and would like to to more in C++.

I think the LGPL would suit best for a library with basic math functions like IT++. It's a bit like with the GCC. The compiler itself is GPL, it will always be free software. But you are allowed to compile confidential algorithms, too. The more IT++ is used in application programs, the more contributions it receives to extend the library itself. At the moment, you have to publish all your source, even if just a few vectors and matrices are used from IT++.

With IT++ the situation is even more critical than with other more application-specific GPL/LGPL libraries. Because math (vector and matrix classes) between IT++, uBLAS on Boost/C++, GSL etc. is not compatible. This is very elementary. I would like to choose one basic math library, that my programs and algorithms are portable. It would be a mess to mix very different vector or matrix classes. C and C++ would never be successful, if elementary data types like double and string would force all programs to be GPL.

If IT++ stays with the GPL, I would probably switch to another math library. For example:


is licensed as LGPL, also based on LAPACK, MKL or ACML, with similar basic math. It might be an option. Or even using uBLAS C++/Boost standardized vector and matrix classes. I'm really looking for somthing as a "standard", that I don't have to rework algorithms every time I'm using a different math library. Armadillo could be a good base for signal processing extensions.

I know this issue has been discussed before. It's difficult to ask every author for permission. But as there are only a few core developers, it seems realistic. Maybe leaving out some functions in a LGPL-Library, for later reimplementation. I was very surprised how OpenStreetMap survived the license change. Not every contributor agreed, but in the end the map did not end with white empty areas. They systematically marked the elements that have to be recreated. Apparently not much was missing after the license change. The data size was even bigger a few months after the change.

There is a big risk that IT++ will become less popular as a C++ based MATLAB-replacement if it stays with the GPL.

p.s. the LGPL would be necessary if you want to distribute your program and link with non-GPL-compatible software such as ACML, MKL or MATLAB (IT++ Mex-Function). GPL "infects" every single piece of linked software and forces it to be compatible. Thinking of Mex-functions, they coudn't be just called as a functions but had to be implemented as a separate service program, communicating with sockets or pipes. This is insane. LGPL means, all modifications, improvements, bugfixes, additional functionaltiy of the library itself has to be LGPL again. It only gives the freedom to integrate IT++ with other software, like Mex-Funktions, some confidential application programs or linking together with other commercial libraries. So, in my opinion the LGPL is the best license for this kind of library.