I have found a library that I would like to use in my project "as-is", but it is licensed under the Reciprocal Public License. As far as I understand it, you have to make your source code using that library open-source and publish it somewhere for people to find. This seems quite restrictive (as was the intent in creating this license). Is there any type of license that RPL is compatible with?

Could I, for example, use a library that's licensed under LGPL, Apache2 or MIT that does some task for which it needs the RPL'ed library or would that library itself have to be licensed under RPL?

Mind you, I do not want to change anything in the original library or redistribute it. Just use it to perform a certain task without having to make the other eleventeen tasks of my software public.

  • The license is at opensource.org/licenses/RPL-1.5 – David Thornley Dec 11 '18 at 17:26
  • No kidding. I've read that, but I'm a software engineer, not a copyright lawyer. Do you understand the terms written down there? – YetiCGN Dec 11 '18 at 17:27
  • 1
    As I understand it, this roughly comes down to 2 questions (one I can't answer, one I can): (1) are any non-RPL licenses compatible with the RPL? i.e., does the requirement that the code be "governed by the terms of this License" preclude including permissively-licensed code within an RPL-licensed work? The GPL allows this; does the RPL allow this? (2) re: "having to make the other eleventeen tasks of my software public" -- the RPL requires the entirety of the single work (as understood by copyright law in your jurisdiction) that contains RPL'd code to be disclosed. – apsillers Dec 11 '18 at 18:18
  • It would seem the answer to (1) would be "only RPL is compatible with RPL", nothing else. Either way, I think they succeeded in discouraging me enough from using their library. :-D – YetiCGN Dec 11 '18 at 18:25
  • I checked the Gnu sites to see if it said anything about the RPL and compatibility. The only hit I got was in a language I can't read. The OSI doesn't seem to have a compatibility matrix. I thought the GPL worth learning because of its heavy use, but I just can't get up the motivation to read the RPL. – David Thornley Dec 11 '18 at 19:21

You seem to have a misunderstanding regarding "license compatibility". The notion of 'compatibility' with respect to licensing is roughly defined by the GNU project in their FAQ:

In order to combine two programs (or substantial parts of them) into a larger work, you need to have permission to use both programs in this way. If the two programs' licenses permit this, they are compatible. If there is no way to satisfy both licenses at once, they are incompatible.

GPL FAQ - What does it mean to say a license is “compatible with the GPL?”

So to answer the question, say, "Is RPL compatible with LGPL?", you need to ask whether you could combine the RPL-licensed program together with an LGPL-licensed program and still be able to satisfy the requirements of both licenses. As for the LGPL, satisfying its requirements implies that you must also distribute the source code to the LGPL parts to your customer, and you must generally separate the LGPL parts from other parts (e.g. by using dynamic linking) in a way that allows the end user to replace the LGPL parts if he so chooses (e.g. by allowing a user to replace the DLL files of the LGPL parts that you distributed with the user's own DLLs, if he chooses).

To comply with the RPL, you must follow what is in section 6.1:

You must make available, under the terms of this License, the Source Code of any Extensions that You Deploy, via an Electronic Distribution Mechanism.

RPL 1.5 License Text

RPL defines "Deploy" and "Extensions" in a broad way, so that, for example, distributing RPL-licensed software within a company is clearly considered to be "deployment" according to the RPL. Also, "Extensions" are defined quite broadly in the RPL, so that even separate programs are likely to be considered extensions by the license. In the (L)GPL, however, using software internal to an organization, even for commercial purposes, generally poses no additional obligations.

The RPL is also quite broad when it says "you must make [source code] available." If you read the license, it literally says that you must make it available to "the software community". For the (L)GPL, the requirement to deliver source code (if you need to deliver it at all), only ever needs to be delivered to the person or organization that you distributed the software to in the first place (i.e. no distribution = no requirement to deliver source code). With the (L)GPL there is also the option to deliver binary-only versions with a "Written Offer" instead of the source code itself.

So, is the RPL compatible with the LGPL? Technically, yes, because it is possible to satisfy the requirements of both licenses simultaneously. However, I think you actually wanted to ask something else:

Could I, for example, use a library that's licensed under LGPL, Apache2 or MIT that does some task for which it needs the RPL'ed library or would that library itself have to be licensed under RPL?

You basically want to ask: Can I circumvent the RPL requirements by including software with a 'compatible' but different license together with an RPL-licensed program?

The RPL does not say you must license the other parts under the RPL as well, but it does require that you "make [the Source Code] available [to the software community] of any 'Extensions'". The RPL defines "Extensions" as:

1.5 "Extensions" means any Modifications, Derivative Works, or Required Components as those terms are defined in this License.

The RPL defines "Required Components" as:

1.12 "Required Components" means any text, programs, scripts, schema, interface definitions, control files, or other works created by You which are required by a third party of average skill to successfully install and run Licensed Software containing Your Modifications, or to install and run Your Derivative Works.

My reading of the above two sections means that if you combine an RPL-licensed program with any other software parts (programs, files, etc.) in any way such that one depends on the other in order to function, then you must release all parts "to the software community" as the RPL specifies. Basically, this means that you cannot 'circumvent' the requirements of the RPL simply by using an (L)GPL program (for example) in combination with it, even if the two licenses are 'compatible'.

There is one possible 'loophole' you may see in the above definition of Required Components: if you include a component which is not created by "You" (say, a third party library), then that is not a Required Component according to the RPL, so it appears that the RPL does not require you to make the source code of that component available "to the software community". However, even if a component is not a Required Component according to the 1.12 definition, it is still likely to be an "Extension" according to the 1.5 definition, since an Extension by definition also includes anything that is considered a Derivative Work according to U.S. copyright law, and compiled binary programs are definitely derivative works of the original (source code) that you compiled them from.

If you don't feel you can satisfy the requirements of the RPL (or any other license), you should not use any software with that license, no matter how you combine the parts. Personally, I don't see how the RPL can be Open Source-approved, since its definition of "Deploy" in the license agreement depends on how you use the software (personal use or non-commercial use). However, the OSD prohibits a license from doing that:

For example, [an Open Source license] may not restrict the program from being used in a business, or from being used for genetic research.

Open Source Definition

  • It is a solid analysis, but I don't agree that the LGPL and RDP are compatible. In particular the requirement from the RDP to inform the community is a restriction that is incompatible sith section 7 of the GPL (and by inclusion also the LGPL). – Bart van Ingen Schenau Dec 12 '18 at 18:44
  • @BartvanIngenSchenau Where does the RPL say you must "inform the community"? It does say you must use an "Electronic Distribution Mechanism" for distribution to "the software community," which is more specific and more nit-picky than the LGPL's distribution requirement, but I don't see that the two requirements would be impossible to fulfill at the same time. – Brandin Dec 13 '18 at 6:57
  • See RPL section 6.4(c): "[...] You must notify the software community of the availability of Source Code to Your Extensions within one (1) month of the date You initially Deploy". This is a separate requirement from the manner of distribution, which might be construed as a further restriction if you want to be really picky, but that would probably only fly when you distribute the software as part of a 'consumer product' (a.k.a embedded on a physical device). – Bart van Ingen Schenau Dec 13 '18 at 7:04

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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