[erlang-questions] 0MQ libraries

Pieter Hintjens <>
Mon Feb 3 15:57:15 CET 2014

Hi Joe,

Our use of the GPLv3 has often confused and annoyed people who haven't
really understood how standards development works (or fails to work).

It is not negotiable, nor is it going to change, by my very deliberate
design. If you want a full explanation, it's here:

However to suggest or believe that the copyright license on the RFC
affects implementations is false. (You can affect implementations via
patent or trademark licenses, however. The GPLv3 is neither of these).

> In their wisdom ISOC do not license RFCs - but they retain a copyright.

On the contrary, the ISOC page you point to has a long and detailed
license. One of its provisions is "you may not fork this spec". That's
a vulnerability I'm not happy with. Forking is essential, as is

All specs must be licensed in one way or another, just like any
creative work, otherwise you cannot share them freely. Lack of a
license means "standard copyright" which means "cannot share".

The text is copyrighted by its various contributors, and licensed
under the GPLv3. This means: if you make a derived work of the text
you must publish that derived work under GPLv3.

Is an implementation derived? No, of course it is not. We're speaking
of copyright law. There is no copyright on knowledge or information,
only the creative expression of it. There's no legal link between a
spec and the implementation unless one resorts to patent law, or
trademark law (e.g. "Bluetooth" is licensed to stacks that pass the
test suites.)

If you copied large parts of the spec into e.g. another spec, or a
book, or to another site, then you would have a derived work.

There are other share-alike licenses used for texts. I used the GPLv3.
It could have been cc-by-sa-nc. That would still affect only the
written spec and not implementations.

The policy is explained at

If you read the source code of an implementation and use that to make
a new one, you may be copying, or not. If you copy parts of the code,
you must have a license, or be the owner. If you are just "inspired",
that is fine. It comes down to convincing a judge you did or did not
copy parts of the code.

The spec is _irrelevant_ to this issue. Please don't blame the RFC
license for that confusion.

There's one addition, which is that contributors accept the
relicensing of RFCs to the IETF. That applies only to texts developed
on that website, and not forks (which are licensed purely as GPLv3).

Additionally the right side-bar on every RFC says, "Note on use of the
GPL: we use this license to cover the specification text itself, not
implementations. You can license your own code under any license you
wish. If you make derived versions of this specification, you must
share them under the GPL. The goal of this is to prevent private
extensions of our specifications."

We developed this policy in 2007 at Digistan, it was reviewed by
standards lawyers, who helped design it, and it has been successful in
preventing private forks of our standards.


On Sun, Feb 2, 2014 at 6:02 PM, Joe Armstrong <> wrote:
> I'm slightly confused here.
> I was thinking of implementing http://rfc.zeromq.org/spec:23
> The text in RFC says
> This Specification is distributed in the hope that it will be useful, but
> WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
> more details. You should have received a copy of the GNU General Public
> License along with this program;
> The words "with this program" do not make sense - there is no program. Just
> a spec of
> what you see on the wire. How can I receive a copy of a program when there
> is no program?
> Then the text is copyrighted and licensed in three different ways.
> Do I have to do a darkroom implementation and swear on the bones of my
> dearly lamented Aunty Doreen that I have never read the C++ code on the zero
> MQ site?
> I just want to read the spec and implement it. This is presumably why it has
> been published.
> RFCs accepted by ISOC are described in
> https://www.rfc-editor.org/copyright.23Jan01.html
> In their wisdom ISOC do not license RFCs - but they retain a copyright.
> I would be very happy to a see a change in the ZMQ RFCs in line with what
> ISOC does.
> Cheers
> /Joe
> On Sun, Feb 2, 2014 at 3:23 PM, james <> wrote:
>> On 31/01/2014 07:12, Joe Armstrong wrote:
>>> Pieter suggest looking at
>>> ...
>>> https://github.com/zeromq/libzmq/blob/master/tests/test_stream.cpp
>>> These implement the wire-line protocol on top of tcp rather than through
>>> the
>>> 0mz library so its easier to see whats going on.
>> Isn't that dangerous if there is a significant difference in the desired
>> license?
>> The zmtp license is more liberal.

More information about the erlang-questions mailing list