Hi all, I have a question on license of MySQL C API or MySQL++ API, and libmysql.
What I want to do is to make a MS Windows program (C++) that accesses MySQL database, and to distribute it on internet without publishing its source code. It uses database server as its backend resource store. It currently uses MS SQL server or its free version MSDE, or MS Access, but I hope migration to MySQL. I have no intention to distribute MySQL itself and libmysql.dll itself with my program. It's non-commercial software, but not freeware (in GNU sense). Since C API seems fast I thought it's nice to use but after extraction of .zip of MySQL4 source code and moving to libmysql.dll source directory, I found that all libmysql.dll source code is in GPL. All those source code have the header that states they are under GPL. That means I can't distribute resulting executable that is linked to libmysql without reacting requests of open source. Preamble and Section 5 of LGPL(http://www.gnu.org/copyleft/lesser.html) (not GPL) says: <citation> Preamble --snip-- When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. --snip-- 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. </citation> Though LGPL Section 5 deals with LGPL, not GPL, it's also clear that I can't distribute a closed-source executable that links dynamically to GPLed library, because resulting executable(not object code) is covered by GPL too. Now, for MySQL++, it's LGPL. Since LGPL Section 6 forces users of LGPL library to permit reverse engineering of their executable, but it's not so hard to accept. (Though I think most of commercial applications for Linux, which are linked to L/GPL libraries including libc, infringe Section 6 by prohibiting reverse engineering in their license aggreement) But the problem is, when I use MySQL++, the executable is linked to libmysql.dll that is GPLed. So LGPL of MySQL++ is overwritten by more powerful GPL and there is no meaning of LGPL of MySQL++ in this case. I searched how actual commercial appliactions for MySQL deal with license. For example, EMS MySQL Manager http://ems-hitech.com/mymanager/ is linked to libmysql.dll, but it's not open-source, so it's not GPLed. EMS HiTech is an official MySQL AB partner, then there may be special license between them. I looked in commercial license store at mysql.com but can't find special licence. There is only per-server license and it doesn't look like developer license. I'm not sure how other closed-source applications that are not official partner of MySQL AB manage this license problem. Anyway I can't be official partner of MySQL AB just to distribute non-commercial proggy on my homepage. I checked MyODBC, though I don't like ODBC, but it's GPL too. Is there any good way, or any misconception in my understanding of libmysql license? Any idea is welcome, but please don't suggest embracing entire GPL... if it's not possible, then I'll quit touching MySQL and will start to look PostgreSQL. -- Linsey KISANJANI --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php