

Why a BSD License Might be Wrong for your Embedded Open-Source Project - silentbicycle
http://spin.atomicobject.com/2013/05/31/bsd-license-open-source/

======
hvs
_Do you know, or necessarily care, who supplied the brakes in your car?_

Yes?

That's probably not the best example since many people actually change the
breaks in their car, whereas I believe the point of the OP was that this is a
library that is compiled into the final product.

That said, I don't think this is evidence that the BSD license is "broken" in
some way. It simply requires that the user of your code cite that they used
it. (I believe Microsoft failed to do this for a few years for their sockets
code). Just like when you quote another text, you need to cite your source;
the BSD license requires the same. If that's not your intention, don't use it,
but don't blame the license.

~~~
silentbicycle
Author here. I don't think the BSD license is broken, just that the legal
implications of that clause were surprising to me, and I thought I'd share
what I learned.

I'm still likely to use the BSD license in other contexts, but will probably
default to MIT/ISC/zlib specifically for embedded libraries.

~~~
shawnz
If I'm not mistaken, the MIT, ISC, zlib, AND GPL licenses all have the same
clause which caused you to reject the BSD license. Has the OEM in question
accepted the new license?

EDIT: Sorry, it appears the zlib license differs in that the clause only
applies to source distributions and not binary distributions.

EDIT2: I can't find a legally rigorous citation, but here's a Quora discussion
which seems to agree with me: [http://www.quora.com/Does-the-MIT-license-
require-attributio...](http://www.quora.com/Does-the-MIT-license-require-
attribution-in-a-binary-only-distribution)

~~~
silentbicycle
The MIT, ISC, and zlib do not seem to, and the OEM is happy with the ISC. I
didn't check the GPL, because its overall design conflicts with my intent.

Here's the ISC license, in its entirety:

    
    
        Permission to use, copy, modify, and/or distribute this software for any
        purpose with or without fee is hereby granted, provided that the above
        copyright notice and this permission notice appear in all copies.
     
        THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    

I don't think the "appear in all copies" applies to binary distribution, or at
least there's more room for interpretation because it is far less explicit.
IANAL, but if it did, there would likely be a LOT of violations - people
typically don't embed the license as a string in compiled libraries. (That
would probably be a disincentive for using the GPL, which is several times
larger than my compiled library!)

Edit: The zlib license explicitly says "source distribution", and does not
apply to binary distributions. Good to know.

~~~
X-Istence
If you look at the iPhone for example, there is a menu where Apple lists EVERY
single last license that applies for any software they ship.

Settings > General > About > Legal > Legal Notices

Where necessary reproducing the licenses isn't that difficult, either in
documentation or within some part of the program. If your customers are
purchasing something from you as an OEM you should notify them that they need
to put certain statements in their documentation.

------
noselasd
This is not that uncommon. e.g. many Broadcom SoCs uses various code from
opensource projects - Broadcom doesn't sell to end users though.

They publish a (small) document to their customers detailing what they have to
do as they retail the end product using this particular chip. Which licenses
they have to reproduce in documentation and which links to place there
pointing to the original source code where that's required.

If that's a burden you do not want to place on the customers - indeed, you
need to be careful about the selected license.

------
Symmetry
I don't see why this is a problem. The manufacturer of the hardware is the
only person bound by the license since they're the only people copying, the
only people who need to have the software licensed to them. They're bound to
give a copy of that notice to anyone who buys their stuff, but nobody
downstream has to care, they're protected by the Doctrine of First Sale[1].
Unless the author lives in a country where that doesn't apply.

[1]<https://en.wikipedia.org/wiki/First-sale_doctrine>

~~~
silentbicycle
I probably cannot discuss the specifics of the vendor, but I don't know if
First Sale applies in their country. I'm not a lawyer, and their lawyers
brought it up as a potential issue, so I'm inclined to take it at face value.

------
greenlakejake
Why not just put stuff into the public domain?

~~~
silentbicycle
The "public domain" designation has its own problems, nicely summarized on
Google Code
([https://code.google.com/p/support/wiki/FAQ#Can_I_host_code_t...](https://code.google.com/p/support/wiki/FAQ#Can_I_host_code_that_I_have_placed_in_the_public_domain?)).

In particular, Dr. Richard Hipp (SQLite's main author) has talked about
problems that came up from releasing it into the public domain. He eventually
created a second license specifically for companies in places that didn't
legally recognize the public domain, and wanted to make sure they were
protected from liability.

Licensing is complicated.

~~~
idupree
CC0 addresses these problems with "public domain"; its intent is the most
permissive license that's legally possible (plus, in jurisdictions where it is
possible, actually placing the work in the public domain). Unlike the other
Creative Commons licenses, it it suitable for source code.

( <http://wiki.creativecommons.org/CC0_FAQ> ,
<https://creativecommons.org/choose/zero/> )

------
ciupicri
I hate paperwork, but I suppose that providing a document with all the
copyright notices along with the car, can't be that bad.

~~~
jwr
As someone who manages commercial software development projects (also for
embedded devices) I can tell you that it is a royal pain to manage the
copyright notices. It is a list that has to be created, maintained, updated
and has to make its way into the final product or its documentation. You also
have to manage copyright notices from software shipped by your partners.

While you do this, your programmers will just drop in another library ("But
I've checked the license, it's fine, it's BSD!") without telling you. And that
library will have dependencies.

Overall, if you want to do this right, it's a major pain, for very little
actual gain (who reads these copyright notices anyway?).

~~~
silentbicycle
If you have any other recommendations for making this process smoother, please
let me know. I _want_ people in your situation to be able to use my libraries
without these irritations. (Author of the post.)

~~~
jwr
The only thing that comes to mind is a unified standard for copyright
statements. If I could be sure that there is a file called COPYRIGHT.statement
in every source repo, containing a single line of text that I should include
in the documentation, it would be a huge step forward.

Unfortunately, this would require agreeing on a standard and having people
follow it, so I'm not keeping my hopes up.

