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

Reply via email to