Dear Amir and list,
Originating from the conversation on Bignums, I went through the
conditions of LibBitcoin's license.
LibBitcoin's present license is the GNU Affero General Public License
version 3, found at
http://www.gnu.org/licenses/agpl-3.0.html . It
states that
"The GNU Affero General Public License is designed specifically to
ensure that [...] the modified source code becomes available to the
community. It requires the operator of a network server to provide the
source code of the modified version running there to the users of that
server. Therefore, public use of a modified version, on a publicly
accessible server, gives the public access to the source code of the
modified version."
i.e., if you modify it and run a public service with it, you need to
immediately make your patch clearly and publicly available. From the
freedom point of view, this is even worse than GNU GPL -
It's not free, in the sense that use in various commercial, academic and
also community projects frequently is absolutely impossible because
you're subject to a sharing and disclosure rule incompatible with quite
standard projects, both embedded/binary distributions *and* in this case
even running a service with it.
Other Open Source projects like OpenBSD have made similar conclusions
and kicked out all similar licenses such as all GNU GPL v3+ code, for
this reason.
For similar reasons, there's projects that provide a dual LGPL and
Apache or BSD license, or who just go MIT/BSD directly, like BitcoinD.
As a workaround, an Affero library can be used through a "Service as a
Software Substitute (SaaSS)", subjecting the user to publish only the
SaaSS/"adapter" sourcecode, however that would probably impose weird
performance characteristics and therefore painful complexity - so why
take this route at all if the objective is freedom.
Also, distributing LibBitcoin with binary programs may become a big use
at some point, and with Affero that is just about impossible.
Publishing a general purpose Open Source library and wanting proper
attribution for contributions is delivered well by the Apache or LGPL
licenses, as they requires a public note to be made with the distributed
application, of the library creator and his copyrights.
I completely respect all the enormous effort and hard work that has been
and is going into LibBitcoin, and it really find it to have a huge shine
to it of being the finest piece of Bitcoin tech around, and I wish to
open this question:
Is LibBitcoin supposed to be a universal driver of Bitcoin solutions, or
is it intended to be an open reference implementation but actually used
in an extremely limited, special subset of projects only, calling for a
third project apart from both BitcoinD and LibBitcoin to take the role
of universal driver?
I hope you find this enquiry humbly expressed. Also, I firmly believe a
free license would not inhibit LibBitcoin innovation, simply because the
need for this is so big that there will always be contributors for
everything that's needed and more.
On the other hand, if LibBitcoin sticks with the Affero license, it is
probable that it will eventually succumb to a free project, as many
private and organization users who would be happy to submit patches,
would prefer a free library day and night for performance, legal, or
just general principle reasons.
Thanks.