stevieb has asked for the wisdom of the Perl Monks concerning the following question:

I'm writing a new distribution, RPi::OLED::SSD1306 (code only on Github currently, will eventually make it onto the CPAN) that allows control of certain OLED displays directly via Perl.

This new distribution directly includes BSD-licensed C code and header files (Adafruit's ssd1306_i2c) which get built for the XS side of things, therefore, I believe I must BSD-license my entire new Perl distribution.

Now, I've got a top-level Raspberry Pi Perl distribution (RPi::WiringPi), that requires and returns objects of various other RPi:: distributions (sensors, ICs, protocols etc, you can see them all on my CPAN page).

I have written all of the existing RPi:: distributions myself, and they are all licensed as the same terms of perl itself.

My question is, if I have to re-license the top-level RPi::WiringPi distribution if I require the new RPi::OLED::SSD1306 distro, and it gets built along side of it automatically.

I'd like to keep it with the Perl license on my RPi::WiringPi dist, so worst case I figure, is that I write in the documentation for the OLED, but make a note (and throw a warning) that the OLED dist needs to be installed separately, due to it being of a different license. This way, the user has the option to install it or not.

Replies are listed 'Best First'.
Re: Licensing clarification: Requiring a BSD licensed dist in a Perl licensed dist
by haukex (Archbishop) on Oct 25, 2018 at 19:52 UTC

    Which variant of the BSD license is it? I don't see any license terms in the repo you linked to.

    Why is the original BSD license incompatible with the GPL?

    Because it imposes a specific requirement that is not in the GPL; namely, the requirement on advertisements of the program. Section 6 of GPLv2 states:

    You may not impose any further restrictions on the recipients' exercise of the rights granted herein.

    GPLv3 says something similar in section 10. The advertising clause provides just such a further restriction, and thus is GPL-incompatible.

    The revised BSD license does not have the advertising clause, which eliminates the problem.

    From here, see also What does it mean to say that two licenses are “compatible”? and License Compatibility and Relicensing.

      Thanks haukex,

      I've got an email to the fine folks over at Adafruit for clarification on which version of the license was applied to their original code, and even went as far to explain my situation, and how the CPAN ecosystem works (as far as requiring dependencies etc), to see if they can give me direct feedback.

      I'll update here when I hear back.

        If I had to guess, it looks like this could be the original code. The license is the 3-clause BSD license, without the advertising clause, so AFAICT it should be GPL compatible. But you might also want to try and get confirmation from iliapenev about what the original code was (maybe open an issue).

Re: Licensing clarification: Requiring a BSD licensed dist in a Perl licensed dist
by hippo (Archbishop) on Oct 25, 2018 at 19:44 UTC
    My question is, if I have to re-license the top-level RPi::WiringPi distribution if I require the new RPi::OLED::SSD1306 distro, and it gets built along side of it automatically.

    IANAIPL and this comment is worth precisely what you paid for it.

    I can see no reason why you would have to relicense RPi::WiringPi in this case and 2 reasons why you need not.

    Firstly: from a practical viewpoint it doesn't stack up. Look at how many dists on CPAN have many dependencies (and levels of them) such that even finding a consistent licence let alone applying one would be futile. If the user employs an automated tool to install dependencies then they must bear the responsibility for keeping tabs on and conforming to all the licences involved.

    Secondly: this is the BSD licence and it is not viral, AFAIAA. Certainly not like the GPLv3 at any rate.

    For peace of mind check with your legal representatives of course.