[Tinyos-alliance] FW: Source licenses document draft
dculler
dculler at archrock.com
Mon Apr 24 22:21:13 PDT 2006
I'd like to pick up this thread and the SC role for tomorrows call. Also,
we had some people working on some action items.
I've come to agree with Phil's position on the license. The more I looked
into introducing a new license in between BSD and Apache, the more I found
that I did not want to be innovating in this area as a prerequisite for the
alliance. The BSD has held us well. I'd like to stick with it and provide
the tools and the social pressure to credit contributors.
-----Original Message-----
From: Philip Levis [mailto:pal at cs.stanford.edu]
Sent: Monday, April 24, 2006 11:28 AM
To: David Culler; dculler
Subject: Source licenses document draft
Summary: The approach we've been discussing for source licenses has a
serious problem, which I describe. There are two feasible solutions:
all Alliance code is owned by the Alliance, or the Alliance follows a
BSD model. There is a third but unattractive solution, that the
Alliance greatly limit who can contribute code. I argue that the BSD
license is the best solution.
-----
The major distinction between the Apache and BSD licenses is this
simple line:
"The end-user documentation included with the redistribution, if
any, must include the following acknowledgment:
'This product includes software developed by X'"
The Apache Software Foundation owns the copyright to all software
under the Apache umbrella, and requires that the attribution be to
the Apache Software Foundation. There are a few other distinctions
(e.g., the Apache license says that you can't use Apache in their
name without prior permission), but the attribution requirement is
the major one we've been discussing. Both the BSD and Apache licenses
require that you distribute the copyright notice with the software.
The proposal currently on the table for the TinyOS Alliance is to use
an Apache license, but with individuals holding the copyright and
requiring individual attribution. There are a few minor issues with
changing licenses, such as transitioning code over (everything now is
BSD), but for the most part I think they could be overcome with
enough effort. TinyOS has historically been BSD (very few strings
attached), and it might take some time to inform everyone of the
change, but it's definitely possible.
The much more significant problem and the source of my reservations,
however, is the fact that the Apache requirements are controlled by
individuals. If someone uses code from the Alliance, it is not the
Alliance that enforces the license requirements, but rather the
copyright holders. The Alliance would like its codes to be used as
widely as possible, and seeks to achieve this through a community
process and technical excellence. The issue that individual copyright
holders raise is that a lawsuit -- or even threatening a lawsuit --
could have a chilling effect on the use of TinyOS Alliance codes.
With the BSD license, this is a very minimal issue, as it pertains
only to liability, while with the Apache license it could be a
significant issue, as it pertains to attribution.
The situation I foresee is one where the best interests of an
individual contributor are not aligned with those of the Alliance as
a whole. For example, group A checks in some code, which group B
sells but (innocently or intentionally) does not properly attribute.
It could be in group A's best interest to sue group B for violating
the license, or at least threaten a suit to gain concessions.
However, it is very unlikely to be in the Alliance's best interest
that suits be threatened, due to the chilling effect it might have on
adoption and use. This situation becomes even more dangerous if a
group that has contributed code decides that selling its proprietary
versions of the reference services would be well served by throwing a
wrench into the Alliance reference implementations.
In short, the more requirements we place on users, the greater the
chance that they'll make a mistake. This could make the Alliance
vulnerable to harm caused by the actions of contributors who are
acting in their best interest when it is not the same as the Alliance's.
One simple solution to this is to require all code to be owned by the
Alliance. But that goes against the original motivation of the
attribution clause, which is giving credit to individuals.
Furthermore, this requires companies and individuals to surrender
their work. I had originally said that this might be problematic for
people at universities (myself included); I believe that if we must
go down this path, we can do it (I'd be willing to make the case to
Stanford), but I don't know how companies (e.g., Intel, Crossbow,
Motorola, etc.) might feel on the matter.
If we use an Apache license, then I believe that we will just be
pushing the problem to the next level: controlling who can check in
code. For example, if a company who is competing with TinyOS (there
aren't any today, but there might be in the future) tried to check
code into the repository, I can imagine personally resisting the
effort. Suddenly the Alliance will need to control who can check in
code in order to protect itself from harm by lawsuits or threats of
lawsuits issues by its contributors.
Furthermore, once there are individual attributions, we'll need to
establish exact rules for when files can be replaced. As a particular
example, consider the CC2420 stack in 2.x. I originally took Joe's
stack from 1.x and improved on it in several ways. Borrowing a few
ideas from my work and adding many of his own, Jonathan Hui did a
clean and complete rewrite of the entire stack and (with my
permission and thanks) replaced mine with his own. I have enough code
in 2.x that there's little danger such a change would remove me from
the attribution list, but I can imagine that if the only thing I had
written was the CC2420 stack I might have objected. Who gets to
determine when files are replaced, renamed, or appended? This seems
like a tremendous Pandora's box, and therefore not a good solution.
I believe that these concerns mean we should use a BSD source license
policy. Requiring the stronger of the two BSD-derived licenses (the
Intel/Arched Rock/etc. one) would simplify matters, and I suspect
that few using the weaker of the two (myself included) would have a
major concern in switching. Of course, polling the contributors on
this change would be an important step to make sure that limiting the
set of licenses is possible. Following this approach would minimize
the onus on users of the code, would make the Alliance safer from
harm by conflicts between its contributors and users. Most
importantly, however, I believe this would lower the bar for
contribution, as the Alliance would not have to institute a policy of
controlling contribution, replacement, etc.
Removing the legal requirement of attribution does not prevent
attribution. Instead, we can clearly state in TEP 120 that the
Alliance expects its members to acknowledge each other's
contributions, and asks users to do the same. In practice, I believe
this will have the same effect, in that almost everyone will provide
the appreciated acknowledgments. However, it means that a mistake by
a user does not open them to litigation, and therefore does not open
the Alliance to the harm caused by such litigation. Making this
attribution as simple as possible -- several technical approaches
have already been proposed -- would further help in this regard.
I understand that this is a reversal of my original position, in
which I believed that Apache would be a reasonable solution. After
thinking about it more deeply, however, and considering the long-term
complications it might cause, I believe that a BSD license is the
best solution.
Phil
More information about the Tinyos-alliance
mailing list