Question on Dual-Licensing Some Code for Phobos

Joakim dlang at joakim.fea.st
Thu Nov 30 20:01:58 UTC 2017


On Thursday, 30 November 2017 at 19:17:32 UTC, Jack Stouffer 
wrote:
> I'm starting work on a proposal for stdx.decimal, and one of 
> the clearest implementations to work off of is the Python 
> implementation.
>
> This however, poses a problem because Python's source is under 
> the PSFL, a BSD-like permissive license. Any derivative work, 
> such as a D conversion, must have the original copyright 
> notice, a copy of the PSFL, as a well as a summary of changes. 
> This is simple enough to do, but the resulting code would be 
> dual-licensed with the PSFL and the BSL 1.0 (dual-licensing 
> being relatively common in other OSS projects).
>
> My question is there any reason this could pose a problem? 
> Could this interfere with something like distribution or 
> company adoption?
>
> Also note, one of the existing Phobos modules, std.net.isemail, 
> is supposed to be dual-licensed because it's derived from an 
> existing BSD work. But, it's missing the BSD license from the 
> top (and is technically breaking the license because of that).

I don't believe BSD or PSFL-licensed source can be dual-licensed 
by you, unless you have the copyright on all the code yourself, 
which appears to not be the case here.  BSD-like licensed code is 
often then simultaneously licensed as GPL by those who don't have 
the copyright, while maintaining the original author's BSD 
copyright notice, because the GPL is a more restrictive license 
than the BSD license.

However, the Boost license is less restrictive than the BSD 
license, so technically you would be breaking the license 
attribution clause of the BSD license if you tried to 
simultaneously apply the more permissive Boost license to it.  
You could probably go the other way from less restrictive Boost 
to more restrictive BSD though.  And if you own the copyright, 
you could actually dual-license as BSD/Boost, meaning the user 
chooses one or the other, but nobody offers that combo because 
they're both so permissive.

IANAL and this is all hazy legal territory, but I believe this is 
the way it would commonly be technically interpreted, ie you 
cannot do what you want and what was done with std.net.isemail, 
if originally BSD like you describe, can't be done without the 
explicit permission of the author.


More information about the Digitalmars-d mailing list