2010-12-14

In search of a BSD/LGPL/Apache licensed client library for MySQL and MariaDB

We have received many requests for a client library for MariaDB (and MySQL) under a license other than the GPL, and decided that it's now time to do something about it.

Some time ago we released the LGPL client library used in MySQL 3.23. This can be used by many applications to connect to MariaDB, MySQL, and Drizzle, but doesn't satisfy all the requirements one would like to see for a true replacement for the current GPL client library.

Minimum requirements are:
  • It should be binary link level compatible with the current MySQL 5.1 client library. To use it, one would just have to re-link the application with the new library. No re-compilation of the source should be necessary.
  • It should have all functionality of the MySQL 5.1 client library (including prepared statements).
  • It should be able to connect to all current versions of MariaDB, MySQL and Drizzle.
  • It should support all the new functionality in MariaDB's client library like new client functions and pluggable authentication.
  • The license should be one of BSD/LGPL/Apache.
We have now started to actively plan for getting this done. The plans can be found in our Worklog.

We have already found some companies that are willing to sponsor this project, but not yet enough to get it all done.

If you are willing to donate some time and effort on this, please contact us at
'maria-developers at lists.launchpad.com' or 'community at askmonty.org' (we strongly prefer the public maria developers list).

If you are willing to sponsor this effort, please contact us at 'sales at askmonty.org' or use our contact form.

We will put all monetary sponsorship into the Worklog. As with all worklog items, if someone from the community delivers a working solution that is accepted into the MariaDB source they will get 60% of the so far committed money.

11 comments:

Stewart Smith said...

certainly adding things to libdrizzle could work rather well here. It already has a user base and although it's not perfect, it performs wonderfully well.

The binary compatible linking could be fun (personally, not too important to me) but I could certainly see this to be an area of sponsorship.

It'd also be great to have more eyes looking at libdrizzle and making it better.

Shlomi Noach said...

Hi,
Doesn't libdrizzle answer these requirements? (I haven't used it yet)

Marcus Eriksson said...

If anyone is interested in a BSD licensed JDBC driver, i'm building one it uses the MySQL protocol, which means it can communicate with Drizzle, MySQL and MariaDB

http://launchpad.net/drizzle-jdbc - it is pretty solid, just needs more testers

hingo said...

Hi Monty

If you search your email you'll see that a long time ago I already did a pre-study on this that might be useful (it was also a customer case). In particular, rather than writing from scratch it is probably a better choice to base the work on or join forces with one of libmysql 3.23, libdrizzle, or the PHP MySQL ND library (which is also written in C, just to make it clear).

Apache is a poor choice of license since it is seen to be incompatible with GPLv2. Please go with LGPL or BSD to make it useful. (Or PHP license, in the case of the ND library.)

henrik

Monty said...

Regarding libdrizzle:

As said in the Worklog for this tasks, libdrizzle is certainly one option.

The problem with libdrizzle is that it doesn't have all functionality of the current libmysql library and is not link level binary compatible with libmysql.a

Part of this project is to evaluate all the options and decide what is the best way to go forward. All discussions of this will of course be done on the public maria-developers list on Launchpad.

Anonymous said...

What about the client lib that was reimplemented for PHP because of license issues?

Monty said...

Re: client lib that was reimplemented for PHP.

Same problem with this one. It doesn't support all the API's and is not binary compatibly with the current client library.

But it is, like libdrizzle, a candidate as the base for the new library.

Erik said...

A similar Monty Program AB supported JDBC driver would be great!

Robert Hodges said...

@Erik
Marcus Eriksson has already provided an excellent drizzle JDBC driver that supports MySQL version 5.0+. We are migrating Tungsten to this driver and have provided numerous patches. (https://launchpad.net/drizzle-jdbc)

@Monty
If you intend to redevelop client libraries it's worth rethinking what they provide as Marcus has done for JDBC. One very useful feature for some applications is hooks to go straight to the network level, kind of like HandlerSocket for connectivity.

Lionel said...

Hi all,

Is there any news about this project ?

Eduardo Juan said...

Hi any update?