By Jake Edge
March 28, 2012
Trademarks and free software projects have something of a troubled
history. On one hand, a trademark can protect the project from others
using the name but offering sub-standard—or malicious—versions
of the software. On the other, whoever holds the trademark also holds much
of the power over the project as a whole. That can lead to conflicts, which
is what we are seeing in a recent fork of the ZeroMQ (aka 0MQ or ØMQ) project.
ZeroMQ is a high-performance asynchronous messaging system that is based on
BSD sockets.
Two of the developers working on the project, Martin Sustrik and Martin
Lucina, wrote about ZeroMQ for LWN in January
2010. Sustrik is the chief architect of ZeroMQ and, up until recently,
served as the de facto "benevolent dictator" for the project, while Lucina
has been
working on the project since late 2009. On March 15, the two of them announced a fork of the LGPLv3-licensed ZeroMQ
code as Crossroads I/O version 1.0.0.
The ZeroMQ trademarks
There were two main reasons cited for the fork in that announcement, but
based on an email exchange
with Sustrik and Lucina, the trademark issue is clearly paramount, at least for Sustrik. The
trademark is held by iMatix Corporation which funded the early development
of ZeroMQ. That trademark is governed by policy that
essentially gives iMatix full control over how the names (ZeroMQ, 0MQ, ØMQ,
and zmq) can be used.
That worries Sustrik for a couple of reasons. He believes that the
underlying protocols for ZeroMQ should be standardized via the Internet
Engineering Task Force (IETF), but that is not something that is easily
done using volunteers:
Consider
just the trivial case of standardisation of underlying protocols in
IETF. The protocol developers should meet at IETF meetings, with average
costs being some $4000 per developer and year. It's definitely not a
volunteer activity. Same need for funding applies to large-scale
testing, hardware implementation etc.
His solution to the funding problem is to allow companies to make money by
releasing modified versions, plugins, and extensions that can use the
ZeroMQ name, which is something he says the current policy does not allow:
Here the trademark policy comes into the picture. People can technically
do this stuff but cannot link its name back to 0MQ. You cannot create
"Foobar Enterprise 0MQ" in the way that Red Hat have created "RH
Enterprise *Linux*". You cannot write an extension and release it as
"0MQ toaster control unit". Etc.
Given that trademarks are at the center of the disagreement, it is ironic
that the trademark policy was created at Sustrik's request in May 2011. In a message
on the zeromq-dev mailing list, iMatix CEO Pieter Hintjens noted that he
created a policy and asked for feedback. There were no major complaints
about the policy in that thread, but a suggestion
from Sustrik that the trademarks be handed to a foundation (like Software
in the Public Interest, which holds the Debian trademark) was not something
that Hintjens was interested in:
To be honest, the trademarks represent non-trivial value to iMatix and
it would be hard to literally give them away. This is not really an
option, though it's one I've considered. There would have to be
compelling reasons (e.g. real dysfunction that puts the community at
risk), and it'd have to include the domain names.
But Sustrik is concerned that some day the trademarks could fall into
"hostile" hands, which could essentially take control of various
ZeroMQ-related projects (like the
language bindings for roughly 30 languages) by asserting a different
trademark policy. That also may make it difficult for ZeroMQ to attract
companies to work on the project: "If I was
a commercial entity I would be hesitant about investing in such a
project". One of the early goals for Crossroads I/O is to find a
"neutral entity" to control the trademark by the end of 2012. Until then,
the policy states:
"'Crossroads I/O' is trademark of Martin Sustrik. Martin Sustrik
grants everyone the right to use the trademark with products related to
Crossroads I/O (packages, plugins, extensions, tools and similar)."
Development process changes
Since a trademark owner can decide what gets to be called "ZeroMQ", it can
also make fairly sweeping decisions about how the project is governed and
released. According to Sustrik, after the 3.1.0
beta release, he was "explicitly prohibited to use [the] ZeroMQ
trademark, which gives me no other chance than to fork". That
prohibition came in a private message from Hintjens, he said. Around the
same time, Hintjens posted
a proposal for maintenance of libzmq (the heart of ZeroMQ) that makes
no mention of a single maintainer, which is the role that Sustrik thought
he had been filling.
In a Google+ posting
(which Lucina called an "objective writeup"), Ian Barber pointed to a
problem that may have been part of what led to the new development process:
"Martin
Sustrik was effectively a bottleneck for getting improvements into core,
and was clearly being pulled multiple directions on features and
functionality in the project".
As might be guessed, Hintjens has a somewhat different view from that of
Sustrik and Lucina. In an email exchange, he noted that Sustrik was
"in danger of burning out", which is part of what led to the
changes. In addition, he doesn't see the trademark policy as a problem:
Read that "hostile trademark policy". What it
really says is, "iMatix will use its trademarks to ensure that only
work done by the 0MQ community can call itself 0MQ". Martin Sustrik
asked me to draft it, I did, he liked it, and we used it.
According to Hintjens, Sustrik and Lucina "happily ignored about a year of consensus on
process, and unilaterally decided to take back control over stable
releases" when they made the 3.1 release. That didn't sit well with
some of the other contributors to ZeroMQ, which is what led to codifying
the process and, ultimately, the fork.
The new process
(scroll down to "Contributing to libzmq") is
more wide open than that of most free software development
projects. Anyone can fork the Github repository, make changes, and request
a pull into the mainline. The maintainers are only meant to enforce
process, ensure that the test cases pass, and are not allowed to
impose their opinions on the quality of the code or feature. If others in
the community are not happy with a particular patch, they are supposed to
make another patch that fixes or reverts it—the
maintainers are just there to apply it. The underlying assumption is that
the community members will find and fix problems quickly by getting
those changes in front of them sooner.
Barber calls the process "incredibly open", in fact, more
open than he is comfortable with, but it has worked well so far:
That said, there hasn't been a stable release rolled under the current
process yet and whether it'll be a usable long-term model remains to be
seen - but the plus side is that if it does work, it'll definitely
scale. It is, in a large way, an experiment, to draw in more code, and more
ideas and I respect the thinking behind that.
Crossroads I/O is going to use the more common "benevolent dictator" model,
with Sustrik in that role. Barber says that makes sense, because it is a
proven model for open source development, but he is concerned that
Crossroads will hit the same problems that ZeroMQ ran into. He also notes
that while Sustrik and Lucina have both contributed a great deal to ZeroMQ,
they are far from the only contributors to the project. It's not clear, at
least yet, if others from ZeroMQ will start working on Crossroads I/O, nor
whether the language binding authors will support both projects. That
leaves users in a bit of a quandary, he said.
In any case, the new process installed by Hintjens is something of an experiment: "We will try it for a while
and if it proves broken, we will fix the breakage and continue to
improve it." But that experiment, coupled with what Sustrik sees as
a restrictive trademark policy, is enough to cause the fork. What remains
to be seen is if Sustrik and Lucina can build enough of a community to
continue with their plans.
It is, at least in some sense, a friendly fork. Hintjens greeted the
Crossroads I/O announcement with: "Congratulations on this,
guys. It's nice to see the LGPL in action."
Based on the emails from Hintjens, Sustrik, and Lucina, there was
certainly some initial hostility and hurt feelings because of the fork,
but, in the end, both sides seem to wish the other well.
The two code bases
share the same license, so there is no reason that patches cannot flow
between them.
Hintjens noted that some may criticize the fork because it will split the
community, but he strongly defended Crossroads I/O for a number of
reasons. For one, he sees it as a place to do more experimental work,
while ZeroMQ focuses on stability. He is also interested in seeing which
of the two development models works out better over the long run. It will
also provide a choice of free solutions for users, he said.
This fork, like most, comes out of a difference in philosophies between two
sub-groups of the project. Unlike other forks, though, it doesn't come
about because of license disagreements. It is interesting for another
reason, however, as it serves as a reminder that a trademark holder can
exercise a great deal of control over a project. Since the owner of the
trademark can effectively decide what gets to be called by that name, they
can override the wishes of longtime developers.
From all appearances, much of the ZeroMQ community is not upset with the
changes or the fork. But most also seem to be keeping an eye on what
Crossroads I/O is up to. If Sustrik and Lucina can make the benevolent
dictator model produce a better messaging library than the more open ZeroMQ
model does, there may be a shift toward Crossroads. By taking the
trademark question off the table with a more liberal policy, Crossroads may
attract some of the companies that Sustrik worries are put off by the
ZeroMQ policy. That remains to be seen, of course, but what we do see is
yet another example of the problems inherent in the coexistence of
trademarks and free
software.
(
Log in to post comments)