Survey: Which MySQL .NET provider to choose?

Posts   
1  /  2
 
    
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 16-Nov-2004 15:18:50   

As I am starting with the MySQL driver, (which is very straight forward) the main question is: which .NET provider to choose?

MySQL has a .NET provider (which was ByteFX) but this provider is GPL-ed, and I therefore can't link with the provider. This is something others will decide as well, so I'd like to know which MySQL provider we should choose to build the MySQL driver with?

Options which exclude a provider: GPL (no go), High price (it has to be a common provider).

Frans Bouma | Lead developer LLBLGen Pro
netclectic avatar
netclectic
User
Posts: 255
Joined: 28-Jan-2004
# Posted on: 16-Nov-2004 16:13:47   

Otis wrote:

As I am starting with the MySQL driver, (which is very straight forward) the main question is: which .NET provider to choose?

MySQL has a .NET provider (which was ByteFX) but this provider is GPL-ed, and I therefore can't link with the provider. This is something others will decide as well, so I'd like to know which MySQL provider we should choose to build the MySQL driver with?

Options which exclude a provider: GPL (no go), High price (it has to be a common provider).

From what i can see ByteFX has been taken in house and is now MySQL Connector/Net and apparently commercial licences are available although i couldn't find a price for them.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 16-Nov-2004 16:32:31   

Yeah I couldn't find a price either. I think I'll go for the CoreLab mysql provider, it costs 99$, but it does work and is an active product (stable).

My only concern is that time is spend on a driver for mysql which is not used by anyone because of the price for the provider...

Frans Bouma | Lead developer LLBLGen Pro
Jelle
User
Posts: 17
Joined: 25-Aug-2004
# Posted on: 16-Nov-2004 17:01:34   

Otis wrote:

My only concern is that time is spend on a driver for mysql which is not used by anyone because of the price for the provider...

Very, very true, because the main reason (i think) why MySQL would be used it's free.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 16-Nov-2004 17:35:14   

Yeah, because it can't be because of the featureset. wink The thing doesn't even have unique constraints. frowning

But kidding aside... there is of course a market for mysql: ISP's with virtual hosts. THe only problem I have with that is: when ISP's offer ASP.NET hosting, they in almost all cases offer sqlserver as well...

Because the driver is promissed for some time, it will be delivered, but again, I fear the problem with the provider will not make a lot of people be happy I think. I'll mail MySQL what their ideas are on the matter... (as I can't buy a license from them either, and having a .NET provider which is GPL-ed is pretty weird.)

Frans Bouma | Lead developer LLBLGen Pro
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 17-Nov-2004 10:38:03   

I saw the ByteFX driver is still around and LGPL'd so I'll go for that one for now.

Frans Bouma | Lead developer LLBLGen Pro
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 17-Nov-2004 17:59:20   

ARG!! That ByteFX driver doesn't work with MySql's 4.1.xx database, the latest stable version. It's outdated...

I had finished the driver code, and was trying to test it, but I can't connect to the database. So there is one option left: CoreLab's provider or no mysql driver at all.

(oh and I did find a way to read unique indexes as constraints pfew. simple_smile Only no way to find the foreign key constraints in an innodb db, I have to parse the create-table statement, which is very intense...)

Frans Bouma | Lead developer LLBLGen Pro
wayne avatar
wayne
User
Posts: 611
Joined: 07-Apr-2004
# Posted on: 18-Nov-2004 08:38:34   

Sorry - to say this, but i think the MySQL driver implementation is a waste of time.

MySQL is mostly used with PHP. If you use .Net then you would rather go for a better DB like, hmm..MS Access OR FireBird simple_smile

But if you feel the need for it is great enough then who am i to judge. wink

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 18-Nov-2004 10:07:04   

heh simple_smile

Well I had time for one last driver in this year, and several people have asked for mysql support, but none has asked for say, sybase. As most databases are of the type oracle, sqlserver and db2, and in the free area of mysql, it's not that hard to make the choice. Also the driver is very straight forward, only tables.

I'll try the corelabs demo today, see if it works. THere is no other way to do it, all other providers are GPL-ed.

Frans Bouma | Lead developer LLBLGen Pro
netclectic avatar
netclectic
User
Posts: 255
Joined: 28-Jan-2004
# Posted on: 18-Nov-2004 10:26:15   

Why is there such a problem with gpl'd drivers? I would have thought it would only be a problem if you were distributing them with your app??

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 18-Nov-2004 10:58:07   

netclectic wrote:

Why is there such a problem with gpl'd drivers? I would have thought it would only be a problem if you were distributing them with your app??

Heh, you missed the whole debate about 'gpl is a viral license' started by microsoft? wink

The GPL contains a couple of clauses which are harmful. They come down to: if you link to this GPL-ed code from your non-GPL-ed code you are only allowed to do that if you GPL your code too, as the linking code is considered (by the license) as a derived work. Now, because my driver would link with the GPL-ed provider, my driver also has to be GPL-ed. However my driver is loaded by the designer, which then also has to be GPL-ed (as the FSF clearly stated that runtime-linking is also linking, because some clever bozo's found a loophole in which they created a COM component to circumvent the license clause)

The problem is that no-one knows if this license clause is legit, but I'm not going to risk it. I know that MySql's lawyers are actively looking for GPL violations and I don't want to end up on the front page of Slashdot.

The only solution is to use a driver with a different license (LGPL for example, which doesn't force linking code to be GPL-ed) as having GPL-ed code inside your system is very harmful.

There is another reason: if I use a GPL-ed provider, the DQE also links to the provider which thus has to be GPL-ed. It's now BSD licensed, however the generated code links to the DQE, which therefore also has to be GPL-ed. Which thus injects the GPL into a customer's code. This is of course a disaster scenario.

I am sure a lot of MySQL users at the moment (on .NET) are not aware / don't care of this, but once their own product is shipping, they'll run into trouble sooner or later.

(I am aware of the fact that having your own code be GPL-ed is not harmful per-se, but it DOES require the supply of the sourcecode to any user of the binary. Something that almost every ISV wants to avoid)

Frans Bouma | Lead developer LLBLGen Pro
netclectic avatar
netclectic
User
Posts: 255
Joined: 28-Jan-2004
# Posted on: 18-Nov-2004 11:22:45   

Much badness confused

So i write a product for a client who comes back at a later date and says we need it to integrate with this other product, which happens to be gpl'd. I then have to to gpl my product even though all i'm doing is linking to it. That's just stupid, i can't see how that could possibly stand up in a court. Fair enough if i was integrating that product into mine or distributing it along with mine.

But hey, who am i to question the logic of such things.

On a brighter note... it's nearly friday simple_smile

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 18-Nov-2004 11:57:08   

netclectic wrote:

Much badness confused

Indeed. The whole philosophy of the FSF (and RMS (Stallman) ) is that individual property (or IP, or copyright or whatever) is something that should be banned from life: everything should become the property of all. Now, in theory that's a sweet idea, but it doesn't work always. However the GPL is tailored to do just that: make everything open and a property of all. That's why the viral part of the license is there.

They have one rebutal: if you don't like it, don't use GPL-ed software.

Ok, I can live with that, but it will hurt people they're trying to help out. (oh the ironysimple_smile ). Also ironic is that the largest piece of GPL-ed software, the Linux kernel, has a clause in its license which frees software makers from the viral clause IF they write software which links directly to the linux core libraries. sunglasses . So far for principles simple_smile

So i write a product for a client who comes back at a later date and says we need it to integrate with this other product, which happens to be gpl'd. I then have to to gpl my product even though all i'm doing is linking to it. That's just stupid, i can't see how that could possibly stand up in a court. Fair enough if i was integrating that product into mine or distributing it along with mine.

The GPL works from the gpl-ed source ware to your ware, if you link to it, i.e.: you need it to make your own software work and do its thing. It does't work the other way around, so if a piece of GPL-ed code links to your code, big deal simple_smile .

Well, it's hard to predict if it will be valid in court. It depends on what the definition of 'derived work' is. No large company has tried that out in court. And as judges are typical alpha-brains, they likely are going to consult a 3rd party and what they'll say is impossible to predict as it is a widely discussed issue so everybody and his brother has an opinion about it. wink (my parents in law are judges (my father in law passed away earlier this year, and he was a specialist on this field, so I can't ask him for details on this anymore, sadly enough cry , and I can clearly say: judges don't have the slightest clue what a computer is, left alone what a program is.)

But hey, who am i to question the logic of such things. On a brighter note... it's nearly friday simple_smile

Yeah! simple_smile As a tip for the weekend: get Halflife 2 simple_smile

Frans Bouma | Lead developer LLBLGen Pro
Skeeterbug
User
Posts: 165
Joined: 21-May-2004
# Posted on: 18-Nov-2004 20:13:07   

I know a sybase driver could come in handy where I work simple_smile

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 18-Nov-2004 22:27:50   

Heh simple_smile Yeah, sybase would be easy I think, when I base it on the SqlServer driver, still the market share of sybase is IMHO less than MySql and that driver is even simpler. It now creates projects, I only have to add some lines for the unique constraints and then base the DQE on the access DQE to get the full driver. I now use corelab's driver, works ok.

Frans Bouma | Lead developer LLBLGen Pro
sirshannon
User
Posts: 48
Joined: 26-Jun-2004
# Posted on: 19-Nov-2004 12:31:16   

Otis wrote:

The GPL contains a couple of clauses which are harmful.

no, no, no, no, no! no! no!

GPL is not harmful, it is not viral, it is not evil, it is a collections of terms of service. Period. Every license has terms, the GPL is no more harmful than any other license.

If you release a product with library A1 covered under the GPL along with a second library B2 that is licensed under a license that conflicts with the GPL, the GPL does not infect nor harm B2 nor the complete product. All that happens is that you have a product that breaks the licenses you agree to when you used the A1 and B2. And then you have to correct the situation.

B2 is not suddenly GPL, nor is the entire product. However, you have to pull the product and correct the situation. This is not "harmful", though, the only real harm done is a lot of hours wasted and some rework, but that is because someone didn't read the licenses they agreed to, not the fault of the licenses.

[for the record here, I think you know this Franz, but there is a lot of misunderstanding that is being repeated by those who just want to discourage GPL and those who don't know better. "harmful" and "viral" are 2 of the words most often used by those who don't understand (or have shady intentions).]

And Richard Stallman is a paranoid troll.

sirshannon
User
Posts: 48
Joined: 26-Jun-2004
# Posted on: 19-Nov-2004 12:34:54   

Otis, I would LOVE to see MySQL functionality in LLBLGen... working on Mono...

Have you seen the "MySQL Gotchas" page?

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 20-Nov-2004 11:24:35   

sirshannon wrote:

Otis wrote:

The GPL contains a couple of clauses which are harmful.

no, no, no, no, no! no! no!

GPL is not harmful, it is not viral, it is not evil, it is a collections of terms of service. Period. Every license has terms, the GPL is no more harmful than any other license.

I thought I described a situation in which it is viral. I'll do it again, more briefly.

Say, we buy a license for the .NET provider of MySql. We develop the code with that provider and release it. Now, some customer, say .. you simple_smile , uses the GPL-ed version of that same .NET provider. You compile the generated code with the DQE and the GPL-ed provider, at runtime the GPL-ed provider is linked with the DQE. Violation of the license.

I did investigate Open source licenses in full a number of times, people should not kid themselves about what is in the GPL nor about the consequences of using ANY piece of GPL-ed code in their system.

If you release a product with library A1 covered under the GPL along with a second library B2 that is licensed under a license that conflicts with the GPL, the GPL does not infect nor harm B2 nor the complete product. All that happens is that you have a product that breaks the licenses you agree to when you used the A1 and B2. And then you have to correct the situation.

B2 is not suddenly GPL, nor is the entire product. However, you have to pull the product and correct the situation. This is not "harmful", though, the only real harm done is a lot of hours wasted and some rework, but that is because someone didn't read the licenses they agreed to, not the fault of the licenses.

I wasn't talking about B2. When I write a driver, I don't release that driver's sourcecode under the GPL. If I use a GPL-ed provider, I have to. LLBLGen Pro loads the driver at runtime, linking to it at runtime, in memory. As you probably know, the position of the FSF about this is very clear: linking is linking, be it at runtime or at design time, that doesn't matter. (as a COM component could work around the GPL this way).

So the designer also has to be GPL-ed then. Which is, IMHO, incredibly stupid, as I just link to a single library somewhere in the call chain.

The DQE also uses the same provider. The DQE also has to be GPL-ed then, and because the generated code is linking to that DQE, the generated code also has to be GPL-ed then. Now, I may not be an english native speaker, but please explain to me why that isn't viral...

Did I misinterpreted the GPL and the FSF's position (and their army of lawyers) ? I don't think so, but if I did, so can a judge.

[for the record here, I think you know this Franz, but there is a lot of misunderstanding that is being repeated by those who just want to discourage GPL and those who don't know better. "harmful" and "viral" are 2 of the words most often used by those who don't understand (or have shady intentions).]

Trust me, I do understand the GPL and the intentions of the people who made the GPL. I also don't see it as a bad license, let that be absolutely clear. It is not my license of choice, but that's something else, I can perfectly understand why some projects are GPL-ed. I also don't try to get the GPL abandoned like Microsoft does with their anti-GPL campagne. The problem is though that the viral aspect IS THERE. Sorry to get a bit annoyed by this, but what annoys me a bit is the state of denial some GPL people seem to have. Like there is nothing to worry about, or that there is nothing to be concerned of.

When a piece of software is a library and it's GPL-ed and you don't like that, simply ignore it. That's also the advice GPL-advocates give you and that's the right advice I think.

Needless to say, I find GPL-ing a library the most dumbest thing you can do if you want a lot of people use your code. For libraries, to KEEP the 'if you change anything and you release that, you have to open your changes too'-aspect but want to get rid of the viral aspect, use the LGPL, it's made for situations like this.

MySQL clearly uses the viral aspect of the GPL to make themselves some money. They own the code, so it's their right to do that. I however don't like the aspect of bringing the fear of a lawsuit to the table to get someone to pay for a license.

After all, as I said earlier, no matter what provider we use for mysql, our customers have to pay for a licensed provider as well, as their own code will be GPL-ed then otherwise.

Frans Bouma | Lead developer LLBLGen Pro
sirshannon
User
Posts: 48
Joined: 26-Jun-2004
# Posted on: 21-Nov-2004 15:57:00   

"viral", as used by some (mostly Microsoft) people trying to scare developers (and users) away from Open Source (in general) and GPL-licensed software, does not mean "you can not use it with conflicting licenses, it means "it will infect your software with it's own license and cause your software to become GPL". What you described is no more viral than any Microsoft license: If you a component that has a license conflicting with the total software product's license, then you have to correct the situation. That means changing your license, removing the component, or whatever. That is is true of Microsoft's software, GPL, and pretty much every piece of software with a license at all. And it is not viral. You describe a license violation as "viral" and that is wrong. If "can cause a violation of a license" means "viral" then every Microsoft license is viral (because they all have provisions that can cause incompatibility). "Viral" is a very strong word in the English language and it was used by certain people to spread FUD by making users think that the GPL is a virus that will infect your software, causing it to become GPL without your permission or control.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 21-Nov-2004 16:15:40   

Ok, I can live with that simple_smile

I understand that 'viral' means also something connected with a virus, but from my POV, I find the GPL a 'viral' license as it does infect the way I have to license my own code, something no-one has any rights on except myself.

Other licenses, as you pointed out, do this too, which are also not recommendable. And I'd like to add that no-one forces you to use a GPL-ed piece of software. That's the vital part of the matter: by choosing a GPL-ed library for example, you agree with the terms the GPL contains. This, IMHO, means that you can't complain about what the GPL contains, because you did agree with it. Of course you can say "it would be better if..." but that's another story simple_smile

Frans Bouma | Lead developer LLBLGen Pro
rykr
User
Posts: 3
Joined: 30-Nov-2004
# Posted on: 30-Nov-2004 22:31:32   

Otis wrote:

I thought I described a situation in which it is viral. I'll do it again, more briefly.

Say, we buy a license for the .NET provider of MySql. We develop the code with that provider and release it. Now, some customer, say .. you simple_smile , uses the GPL-ed version of that same .NET provider. You compile the generated code with the DQE and the GPL-ed provider, at runtime the GPL-ed provider is linked with the DQE. Violation of the license.

I don't agree. If you purchase a license for the provider, then you are allowed to "distribute" your app without using the GPL. If I use your tool and gen some code that I then link against the GPL provider, I can use that code internally all I want since the license really only kicks when I got to distribute the code. Now if I want to then sell or otherwise distribute some works that I gen'ed with your tool without using the GPL, then I need to acquire a commercial license as well. I simply don't see how this is a problem.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 01-Dec-2004 10:00:24   

rykr wrote:

Otis wrote:

I thought I described a situation in which it is viral. I'll do it again, more briefly.

Say, we buy a license for the .NET provider of MySql. We develop the code with that provider and release it. Now, some customer, say .. you simple_smile , uses the GPL-ed version of that same .NET provider. You compile the generated code with the DQE and the GPL-ed provider, at runtime the GPL-ed provider is linked with the DQE. Violation of the license.

I don't agree. If you purchase a license for the provider, then you are allowed to "distribute" your app without using the GPL. If I use your tool and gen some code that I then link against the GPL provider, I can use that code internally all I want since the license really only kicks when I got to distribute the code. Now if I want to then sell or otherwise distribute some works that I gen'ed with your tool without using the GPL, then I need to acquire a commercial license as well. I simply don't see how this is a problem.

The problem is, my code, the DQE, is shipped with your code. If you use a GPL-ed provider, the DQE at runtime then will use that GPL-ed provider, making me violating the GPL license, as they deliberately WANT to make sure that runtime linking is also linking.

I'm not sure if I'll ever be able to prevent this though, as anyone can implement the interface, slam a GPL on it and make my code violate the GPL. However, as I'm not a lawyer, and as I do understand the runtime linking issue (the GPL is even revisited soon to include more runtime linking situations than the current v2), the only option I currently have is to provide my code without linking to any GPL-ed library.

I mailed MySql about this and their license lawyer said they're busy with a partner program which should solve this. So in the mean time Corelab's provider is the choice of the mysql provider, as I don't want to run the risk of having GPL-ed code linked at runtime with my code, at ANY cost. This means that if there is no other choice, MySql support will be dropped.

Frans Bouma | Lead developer LLBLGen Pro
rykr
User
Posts: 3
Joined: 30-Nov-2004
# Posted on: 01-Dec-2004 17:16:03   

Otis wrote:

The problem is, my code, the DQE, is shipped with your code. If you use a GPL-ed provider, the DQE at runtime then will use that GPL-ed provider, making me violating the GPL license, as they deliberately WANT to make sure that runtime linking is also linking.

I'm not sure if I'll ever be able to prevent this though, as anyone can implement the interface, slam a GPL on it and make my code violate the GPL. However, as I'm not a lawyer, and as I do understand the runtime linking issue (the GPL is even revisited soon to include more runtime linking situations than the current v2), the only option I currently have is to provide my code without linking to any GPL-ed library.

I mailed MySql about this and their license lawyer said they're busy with a partner program which should solve this. So in the mean time Corelab's provider is the choice of the mysql provider, as I don't want to run the risk of having GPL-ed code linked at runtime with my code, at ANY cost. This means that if there is no other choice, MySql support will be dropped.

Again, I can use the code your tool generates with a GPL provider all I want as long as I don't ship the product. Once I start shipping, then, just like any other library, I have to make sure the licensing is proper. If you don't allow your code to be shipped GPL, then I will have to purchase a license of the provider and ship it with my product. If you do allow GPL shipping then I can ship the entire package as GPL including using the GPL MySQL provider.

It sounds like you don't allow GPL licensing of the code generated by your tool. In that case I can't ship a product based on that code as GPL anyway.

I can understand the nervousness the GPL causes in this situation and I expect that we might improve the situation in the future, however the situation is simply not as confused as people are making it out to be.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39614
Joined: 17-Aug-2003
# Posted on: 01-Dec-2004 17:45:16   

rykr wrote:

Otis wrote:

The problem is, my code, the DQE, is shipped with your code. If you use a GPL-ed provider, the DQE at runtime then will use that GPL-ed provider, making me violating the GPL license, as they deliberately WANT to make sure that runtime linking is also linking.

I'm not sure if I'll ever be able to prevent this though, as anyone can implement the interface, slam a GPL on it and make my code violate the GPL. However, as I'm not a lawyer, and as I do understand the runtime linking issue (the GPL is even revisited soon to include more runtime linking situations than the current v2), the only option I currently have is to provide my code without linking to any GPL-ed library.

I mailed MySql about this and their license lawyer said they're busy with a partner program which should solve this. So in the mean time Corelab's provider is the choice of the mysql provider, as I don't want to run the risk of having GPL-ed code linked at runtime with my code, at ANY cost. This means that if there is no other choice, MySql support will be dropped.

Again, I can use the code your tool generates with a GPL provider all I want as long as I don't ship the product. Once I start shipping, then, just like any other library, I have to make sure the licensing is proper. If you don't allow your code to be shipped GPL, then I will have to purchase a license of the provider and ship it with my product. If you do allow GPL shipping then I can ship the entire package as GPL including using the GPL MySQL provider.

Understood, there is a problem I think: the code generated by the tool, who owns that? I'm not a lawyer so I'm not sure. It's generated using our templates, but the user operates the machine generating it. If we own it, we can force someone to obey our license. If we don't own it, we can try to force someone to obey a license, but the user can ignore that legally.

I think it depends on the judge what the verdict will be in this case.

Because we linked with an assembly at compile time, which will be a GPL-ed component (probably) at runtime, it can make us look as if we've compiled against the GPL-ed component.

I.o.w.: a messy situation. It is simply not clear, and if something is not clear, stay away from it if you don't want to end up in court.

It sounds like you don't allow GPL licensing of the code generated by your tool. In that case I can't ship a product based on that code as GPL anyway.

I'm not sure if I can demand that or not. I can try of course, but if it's legally valid is something else simple_smile

I can understand the nervousness the GPL causes in this situation and I expect that we might improve the situation in the future, however the situation is simply not as confused as people are making it out to be.

If someone can guarantee me, in writing, coming from MySql that we're not violating the GPL in this construction, it's more clear to us. However, at the moment, I find it very unclear, and therefore I'll not take any risk in this. I accept the GPL as a license, and therefore the consequences it brings to the table and also the consequences it has for us. The only solution I see now is avoid it as there is no 100% certainty we'll not end up in court because of this (as I see it now)

Frans Bouma | Lead developer LLBLGen Pro
rykr
User
Posts: 3
Joined: 30-Nov-2004
# Posted on: 03-Dec-2004 14:20:31   

Otis wrote:

Understood, there is a problem I think: the code generated by the tool, who owns that?

This is the bigger problem you have. It's very common for a code generating tool to specify in it's license how the code that is generated can be licensed and this affects not only your licensing relationship to MySQL but affects you in other ways. I would imagine that you would want to clear up the licensing question of you generated code ASAP. Once that is clear, then you can move past this GPL junk.

In any event, good luck to you and I hope you reassess the situation in the future.

1  /  2