Discussion:
[soci-users] MySQL connector and lib licensing
Paul Baxter
2014-10-06 20:50:57 UTC
Permalink
I really like what I’ve seen so far with SOCI and its excellent
documentation.

Because my main use is with MySQL, I’ve been looking at how to communicate
between my app and MySQL

I’m a little confused, but from what I’ve read, if I use MySQL’s
connectors/libraries, I appear to need to either GPL my application or
purchase a commercial license.
e.g.
http://www.h-online.com/open/features/Connectors-controversy-and-the-LGPL-1792282.html

The docs say “The SOCI MySQL backend requires MySQL's libmysqlclient client
library”
which indicates I have a problem in a non-GPL app?

Do I have any other options?
e.g.
Using generic ODBC to connect using MySQL/ODBC as a separate customer
download but not requiring any linking or source code sharing when building
my app, so OK for my app to not to be GPL.
or
MariaDB have produced a connector for C and ODBC licensed under the LGPL to
allow dynamic linking without the need to GPL my application. (Based on the
MySQL codebase when it was LGPL and forked/updated). Can this be used
instead?
https://mariadb.com/kb/en/mariadb/client-libraries/client-library-for-c/ or
https://mariadb.com/products/connectors-plugins
Pawel Aleksander Fedorynski
2014-10-07 03:15:02 UTC
Permalink
I believe the library from MariaDB is a drop-in replacement so it should be
possible to use it instead, but I haven't done it so not sure.

Thanks,

Aleksander
I really like what I’ve seen so far with SOCI and its excellent
documentation.
Because my main use is with MySQL, I’ve been looking at how to communicate
between my app and MySQL
I’m a little confused, but from what I’ve read, if I use MySQL’s
connectors/libraries, I appear to need to either GPL my application or
purchase a commercial license.
e.g.
http://www.h-online.com/open/features/Connectors-controversy-and-the-LGPL-1792282.html
The docs say “The SOCI MySQL backend requires MySQL's libmysqlclient client
library”
which indicates I have a problem in a non-GPL app?
Do I have any other options?
e.g.
Using generic ODBC to connect using MySQL/ODBC as a separate customer
download but not requiring any linking or source code sharing when building
my app, so OK for my app to not to be GPL.
or
MariaDB have produced a connector for C and ODBC licensed under the LGPL to
allow dynamic linking without the need to GPL my application. (Based on the
MySQL codebase when it was LGPL and forked/updated). Can this be used
instead?
https://mariadb.com/kb/en/mariadb/client-libraries/client-library-for-c/ or
https://mariadb.com/products/connectors-plugins
------------------------------------------------------------------------------
Slashdot TV. Videos for Nerds. Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
Yuliya Feldman
2014-10-07 04:26:35 UTC
Permalink
You can separate soci base and soci mysql backend by loading the latter one dynamically, so you don't have it at a compile time. It is quite painful to provide your customers with instructions on how to download libmysqlclient and soci mysql backend, but it kind of gets you through all GPL/LGPL business
Post by Paul Baxter
I really like what I’ve seen so far with SOCI and its excellent
documentation.
Because my main use is with MySQL, I’ve been looking at how to communicate
between my app and MySQL
I’m a little confused, but from what I’ve read, if I use MySQL’s
connectors/libraries, I appear to need to either GPL my application or
purchase a commercial license.
e.g.
http://www.h-online.com/open/features/Connectors-controversy-and-the-LGPL-1792282.html
The docs say “The SOCI MySQL backend requires MySQL's libmysqlclient client
library”
which indicates I have a problem in a non-GPL app?
Do I have any other options?
e.g.
Using generic ODBC to connect using MySQL/ODBC as a separate customer
download but not requiring any linking or source code sharing when building
my app, so OK for my app to not to be GPL.
or
MariaDB have produced a connector for C and ODBC licensed under the LGPL to
allow dynamic linking without the need to GPL my application. (Based on the
MySQL codebase when it was LGPL and forked/updated). Can this be used
instead?
https://mariadb.com/kb/en/mariadb/client-libraries/client-library-for-c/ or
https://mariadb.com/products/connectors-plugins
------------------------------------------------------------------------------
Slashdot TV. Videos for Nerds. Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
Paul Baxter
2014-10-07 07:37:53 UTC
Permalink
I'm a little confused, but from what I've read, if I use MySQL's
connectors/libraries, I appear to need to either GPL my application or
purchase a commercial license.
You can separate soci base and soci mysql backend by loading the
latter one dynamically, so you don't have it at a compile time. It is
quite painful to provide your customers with instructions on how to
download libmysqlclient and soci mysql backend, but it kind of gets
you through all GPL/LGPL business
<

I don't think that's true unfortunately. It is true for LGPL'ed
components but GPL'ed components 'virally' force the app with which
they are linked to take on the GPL license.

http://www.h-online.com/open/features/Connectors-controversy-and-the-LGPL-1792282.html

That is the reason for the mariadb effort and previous efforts by RHEL
etc to provide an alternate LGPL variant of the C connector.

Oracle want you to either purchase a license for the server (then they
give you commercial license for the connectors) or have you license
the connectors to a community edition server, or allow unrestricted
access providing you GPL your app.

I've got no complaints with Oracle as that is their business model.
I'm looking for alternatives because I very much want to use SOCI and
MySQL or at a pinch mariaDB.

What I'm not clear about is with regard to the ODBC alternative.

The MySQL ODBC connector may be suitable but I don't know for sure.
If SOCI/my app does not need to link with a mySQL library and if it
doesn't need to include any MySQL header files then I probably would
be OK, but I am confused as to how SOCI connects to an ODBC connector
- I assume using a generic ODBC interface that decouples it from a
specific vendor's ODBC connector implementation.

I previously used Microsoft OLEDB as my apps interface to ODBC but
this is becoming unsupportable (e.g. I can't get it to work on 64 bit
win2008R2 with a 64 bit variant of my app. I'd also like to deploy to
linux as well so a cross-platform solution is preferred).

I want to take the opportunity to move into the 21st century with this
part of our codebase and SOCI ticks the boxes. Just my confusion over
licensing to overcome :)

As Aleksander notes, my alternative would probably be to get SOCI
working with the MariaDB alternative connector (which isn't as feature
complete as Oracle's I believe).

Thanks for everyone's help

Paul
Paul Baxter
2014-10-07 08:38:41 UTC
Permalink
I'm a little confused, but from what I've read, if I use MySQL's
connectors/libraries, I appear to need to either GPL my application or
purchase a commercial license.
You can separate soci base and soci mysql backend by loading the
latter one dynamically, so you don't have it at a compile time. It is
quite painful to provide your customers with instructions on how to
download libmysqlclient and soci mysql backend, but it kind of gets
you through all GPL/LGPL business
<

I don't think that's true unfortunately. It is true for LGPL'ed
components but GPL'ed components 'virally' force the app with which
they are linked to take on the GPL license.

http://www.h-online.com/open/features/Connectors-controversy-and-the-LGPL-1792282.html
<<<<

Apologies, but I paste the wrong link to connector licensing
discussions last time

http://www.xaprb.com/blog/2009/02/17/when-are-you-required-to-have-a-commercial-mysql-license/

particularly the discussion in the comments which talks about
connectors rather the DB itself.

My interpretation (IANAL and often wrong :)

Separate use of a MySQL community edition server which is GPL isn't a
problem unless it is bundled as part of your app.

Connecting to a MySQL server isn't of itself making your app GPL.

However, using a GPL connector in a manner that bundles part of that
GPL connector into your app would virally make your app GPL whether it
is dynamically linked or statically linked.

The MySQL C connector and libmysqlclient require 'bundling' with SOCI
and therefore my take is that would make my app GPL

Using an LGPL alternative such as MariaDB's C connector with dynamic
linking would not make my app GPL

What I am hoping, and seeking clarification for is...

The ODBC connector from MySQL is also GPL, but how SOCI interfaces
with this (or any other ODBC connector) is generic and I think it
does not use any MySQL code to achieve this(??).
SOCI/ODBC can substitute connection to any other ODBC client/database
- substitutable via a generic interface. So long as I do not bundle
the connector with my app, my customer is free to download the ODBC
connector and MySQL and use this as a basis for storage when connected
to my app.

Paul
Artyom Beilis
2014-10-20 07:42:39 UTC
Permalink
I'm not a lawyer but... as long as you use libmysqlclient you need to comply with GPL license regardless you are loading it dynamically or not.
If your customer uses mysql library via soci your software should comply with GPL.

Also there is an exception from that rule for an FOSS software:

http://www.mysql.com/about/legal/licensing/foss-exception/


However, it is important that SOCI licensed under Boost software license that isn't covered by an exception. It makes it problematic as SOCI itself
should comply with GPL license requirements once you link in whatever way libmysqlclient.


For that reason I licensed libcppdb (that is similar library to SOCI) under dual MIT and Boost license (which are very similar) so I wouldn't have
to deal with the legal issues as MIT is covered.

My $0.02

Artyom Beilis
--------------
CppCMS - C++ Web Framework: http://cppcms.com/
CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/
________________________________
Sent: Tuesday, October 7, 2014 9:37 AM
Subject: Re: [soci-users] MySQL connector and lib licensing
I'm a little confused, but from what I've read, if I use MySQL's
connectors/libraries, I appear to need to either GPL my application or
purchase a commercial license.
You can separate soci base and soci mysql backend by loading the
latter one dynamically, so you don't have it at a compile time. It is
quite painful to provide your customers with instructions on how to
download libmysqlclient and soci mysql backend, but it kind of gets
you through all GPL/LGPL business
<
I don't think that's true unfortunately. It is true for LGPL'ed
components but GPL'ed components 'virally' force the app with which
they are linked to take on the GPL license.
http://www.h-online.com/open/features/Connectors-controversy-and-the-LGPL-1792282.html
That is the reason for the mariadb effort and previous efforts by RHEL
etc to provide an alternate LGPL variant of the C connector.
Oracle want you to either purchase a license for the server (then they
give you commercial license for the connectors) or have you license
the connectors to a community edition server, or allow unrestricted
access providing you GPL your app.
I've got no complaints with Oracle as that is their business model.
I'm looking for alternatives because I very much want to use SOCI and
MySQL or at a pinch mariaDB.
What I'm not clear about is with regard to the ODBC alternative.
The MySQL ODBC connector may be suitable but I don't know for sure.
If SOCI/my app does not need to link with a mySQL library and if it
doesn't need to include any MySQL header files then I probably would
be OK, but I am confused as to how SOCI connects to an ODBC connector
- I assume using a generic ODBC interface that decouples it from a
specific vendor's ODBC connector implementation.
I previously used Microsoft OLEDB as my apps interface to ODBC but
this is becoming unsupportable (e.g. I can't get it to work on 64 bit
win2008R2 with a 64 bit variant of my app. I'd also like to deploy to
linux as well so a cross-platform solution is preferred).
I want to take the opportunity to move into the 21st century with this
part of our codebase and SOCI ticks the boxes. Just my confusion over
licensing to overcome :)
As Aleksander notes, my alternative would probably be to get SOCI
working with the MariaDB alternative connector (which isn't as feature
complete as Oracle's I believe).
Thanks for everyone's help
Paul
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
soci-users mailing list
https://lists.sourceforge.net/lists/listinfo/soci-users
Loading...