3

My Python package has a dependency of an open-source package with a BSD-3-Clause-LBNL variant license. It seems the only difference between this variant and the original BSD-3-Clause license is the addition of the following text:

You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to Lawrence Berkeley National Laboratory, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such Enhancements or derivative works thereof, in binary and source code form.

My question is whether I can license my Python package as BSD-3-Clause license?

1
  • Will you be distributing their code (or including it in some kind of package that is intended to be redistributed)? Based on how Python works, I'm assuming not, but you might be planning to e.g. put all of your dependencies into a single package for easy installation.
    – Kevin
    Commented Oct 1, 2023 at 5:29

1 Answer 1

2

If you're not redistributing their code (or a modified version of their code, a .pyc Python binary compiled from their code, etc.), then you can use whatever license you want. It doesn't need to be a BSD license or even an open source license. This is because the obligations of their BSD license, including this modifier, only attach when you redistribute their code (or a binary based on their code).

If you are redistributing their code, then you can still use whatever license you want, but you must include a copy of their license and specify that it applies to their code. It is probably wise to preserve this addendum as-is rather than trying to "standardize" the license. You should also be as clear as possible about exactly what software is subject to the license (presumably, just the upstream package, and not any of your code).

If you've modified their code, you will also need to decide whether you want to place the modifications under a different license. That is permitted, although you should read the addendum carefully if you want to do that, but in that situation, the "nice" thing to do is to use the same license that you received it under. You are not required to use the same license, but it makes things easier for everyone because we all have fewer licenses to think about. This is called "inbound = outbound," and is a good rule of thumb for making FOSS contributions in general. If you have not made any changes or improvements to their code, then this does not apply to you at all.


Some licenses attach to "derivative works," which may imply circumstances other than direct code redistribution. However, you did not ask about those licenses, so I will not further discuss them in this answer. The BSD licenses (including this variant) use the word "redistribution," and so it would be quite a strained reading to claim that you can violate a BSD license without actually redistributing anything. The license conditions simply do not attach.

7
  • 1
    "you must include a copy of their license and specify that it applies to their code" This is a very "coloured bricks" model of copyright, and I don't think it works that way. The requirements of the BSD3 licence, such as they are, apply to the derived work in its entirety; any additional licence conditions you choose to impose can also apply to the work in its entirety.
    – MadHatter
    Commented Oct 1, 2023 at 6:30
  • 1
    @MadHatter: BSD is not a copyleft license. The text (of the main BSD, not LBNL's addendum) says absolutely nothing about derivative works, and I have simply never heard of anyone asserting that BSD licenses extend to derivatives (other than your comment). It is, in fact, common practice for the GNU people (and others) to take BSD code (or other code from similarly permissive licenses), slap the GPL (or whatever license) on it, and redistribute it as part of a larger GPL project, so if that is infringing, it is infringing on a massive scale, and literally everyone is guilty.
    – Kevin
    Commented Oct 1, 2023 at 8:00
  • "Redistribution [...] with or without modification, are permitted provided that the following conditions are met" a modified work is a copyright derivative; if it were not, no permission would be required. I know the coloured bricks model is superficially attractive, but it is not a good representation of copyright law. I never claimed BSD was a copyleft licence, though arguably you did: "specify that it applies to their code". To better understand the BSD-code-in-a-GPL-work case, I recommend you read my answer on Law.SE.
    – MadHatter
    Commented Oct 1, 2023 at 8:12
  • @MadHatter: I disagree. It is simply not reasonable to interpret dynamic linking as "redistribution... with modification," especially when the language in question is Python (and the file that is distributed is just source code that happens to contain import foo somewhere in it - there's no weird linker bindings being distributed in some binary, or anything like that).
    – Kevin
    Commented Oct 1, 2023 at 18:25
  • You may well be right. It's not even well established whether dynamic linking of compiled code constitutes creation of a derivative work ([it does](opensource.stackexchange.com/q/1187/458(, it doesn't), so the position on interpreted languages is even fuzzier. But you seemed to me to be making wider statements than that, and I'm really not a fan of the "coloured blocks" model. If what you mean is that in this case the use of interpreted languages means that no derivative work is created, I would have led with that.
    – MadHatter
    Commented Oct 1, 2023 at 19:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.