Frequently Asked Questions!
Why GPL version 2?
This choice of license startled several users, some because LGPL seemed a more flexible choice for being used by some companies, others because LGPLv3+static linking exception is apparently the usual license for the standard OCaml library. Here is what I answered:
Actually, would I have had the choice, I would have gone for the GPLv3 because that’s the usual license I apply to softwares I develop, but I don’t really use any LGPL (version whatever) usually, even for libraries. If someone wants to use my library, that person can as well develop a Free Software (note that if one’s software has an incompatible license with a GPL, though Free as well, we can always discuss, and I will most certainly agree to make exception for this project).
But in fact I had no real choice for this: in my previous email, I wrote a bit of history about 2 original authors who made the base of the library (it was some kind of study project, or just a proof of concept at the time, it seems) in 2002. And when I asked them if they could release it to a GPLv3, they only accepted a GPLv2 (I don’t know why and did not ask. This was good enough for me).
So even though I made a lot of work since then (a few rewriting, lot of restructuring, cleaning of code, bug fix, higher level code, making the library robust so that it never crashes, except for documented and meaningful catchable exceptions, new features, etc.), the base of the library still comes from this earlier code. And I don’t plan to rewrite everything because a new license is not worth it. So I can’t change the license without them agreeing.
Of course if anyone wants to try, that’s just 3 people right now, and the 2 others are easily contactable (their emails are in the code, or you can drop me a private emails and I’ll give them). So if you get them to accept a LGPLv3+static linking, I think I’ll accept as well. That’s not that bad a license and I know how to be flexible for reasonable queries.
Is it synchroneous library?
It is currently indeed synchroneous only. I plan to write later more information about the advantage of both synchroneous and asynchroneous logics (what can be done with one is also doable by the other… in a different way though) and why I chose myself synchroneous as being a better implementation, at least by default.
I may easily make an asynchroneous option though so that developers can choose. I may do so if enough people are interested with good reasons.
Note also that there exists netdns which is asynchroneous though there unfortunately does not seem to be active development for years at the time I write these lines (actually I remembered having had a look at this library in 2009 when I was looking for a DNS library for OCaml).