Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Springing licenses" and promises to grant future permissions #20

Closed
Tracked by #23
mswilson opened this issue Nov 30, 2023 · 19 comments
Closed
Tracked by #23

"Springing licenses" and promises to grant future permissions #20

mswilson opened this issue Nov 30, 2023 · 19 comments
Labels
clarification a request for clarification about the license terms

Comments

@mswilson
Copy link

In the Creative Commons report on the viability of so-called "springing licenses" the authors made this observation:

Promises to grant a future gift are not enforceable agreements under U.S. law. Accordingly, in order to be legally binding against a conflicting future agreement or will, a springing license would need to be structured as a present grant of rights (e.g., “licensor hereby grants”). This means, as a legal matter, the license would not actually spring to life at a future time. Instead, the license would be granted to the beneficiaries when it was applied, even though the beneficiaries would not be able to exercise their rights until the specified triggering event or date.

It is not clear to me that the language in the current license text is a "present grant of future permissions" (i.e., irrevocable permissions granted via different legal terms that will be effective in the future). The current license text uses the words "will become available". This is different than a present grant (e.g., "the software is licensed to you under Apache Licence 2.0 effective [unambiguous date]".

See also this blog post from @kemitchell that goes into detail about the need to be unambiguous in the effective date for a license that grants permissions effective in the future.

Disclaimers: I am opening this bug report in my individual capacity, speaking only for myself. I am not a lawyer, and this is not intended to be legal advice. Opening this bug report is not intended to be an endorsement of the FSL.

@kemitchell
Copy link

I have been working with other PolyForm folks to further improve that draft since blogging it. The main question in my mind is whether to call it "PolyForm Countdown" or "PolyForm Scheduled".

I'd like to publish next month. But we're all volunteers, and many of us usually get crunched toward the end of the fiscal year.

@chadwhitacre chadwhitacre added the clarification a request for clarification about the license terms label Nov 30, 2023
@chadwhitacre
Copy link
Member

Is it as easy as this? @gavin-zee @hmeeker thoughts?

diff --git a/FSL-1.0-Apache-2.0.template.md b/FSL-1.0-Apache-2.0.template.md
index 3ab1387..daff829 100644
--- a/FSL-1.0-Apache-2.0.template.md
+++ b/FSL-1.0-Apache-2.0.template.md
@@ -91,7 +91,7 @@ trademarks, trade names, service marks or product names.
 ## Change License
 
 On the second anniversary of the date we make the Software available, the
-Software will become available under the Apache 2.0 license. On that date, the
+Software becomes available under the Apache 2.0 license. On that date, the
 Terms and Conditions above automatically terminate and the following terms
 become effective:
 

@gavin-zee
Copy link

@chadwhitacre it would probably have to be something like: "On the second anniversary of the date we make the Software available, we grant you the right to use the Software under the Apache 2.0 license. On that date, the Terms and Conditions above automatically terminate and the following terms become effective:"

@hmeeker
Copy link

hmeeker commented Dec 1, 2023 via email

@mswilson
Copy link
Author

mswilson commented Dec 1, 2023

If you've not had the opportunity to read the full CC report on springing licenses, I encourage you take the time to do so. I think you're retracing some steps that they, too, retraced some years ago.

Finally, through this work, CC gained a renewed appreciation for the documentation of research and learnings. As explained above, the springing license concept has been discussed and explored in a variety of fora for many years. Yet CC found itself having to revisit many of those previously vetted ideas because there was insufficient record of what was discussed and decided previously, including within CC. Creative Commons provides this extensive report in an effort to avoid this situation in the future if CC or another organization decides to move this project forward in the future.

"Stand on the shoulders of giants," as we say... ;-)

@hmeeker
Copy link

hmeeker commented Dec 1, 2023 via email

@kemitchell
Copy link

Half of "public license" is getting the legal job done. The other half is preventing pointless e-mail.

@mswilson
Copy link
Author

mswilson commented Dec 1, 2023

Is it as easy as this? @gavin-zee @hmeeker thoughts?

diff --git a/FSL-1.0-Apache-2.0.template.md b/FSL-1.0-Apache-2.0.template.md
index 3ab1387..daff829 100644
--- a/FSL-1.0-Apache-2.0.template.md
+++ b/FSL-1.0-Apache-2.0.template.md
@@ -91,7 +91,7 @@ trademarks, trade names, service marks or product names.
 ## Change License
 
 On the second anniversary of the date we make the Software available, the
-Software will become available under the Apache 2.0 license. On that date, the
+Software becomes available under the Apache 2.0 license. On that date, the
 Terms and Conditions above automatically terminate and the following terms
 become effective:
 

This isn't what I'm looking for. I'm looking for a clear present grant of license under Apache 2.0 terms that a licensee can elect to in the future. Something more like:

diff --git a/FSL-1.0-Apache-2.0.template.md b/FSL-1.0-Apache-2.0.template.md
index 3ab1387..8733966 100644
--- a/FSL-1.0-Apache-2.0.template.md
+++ b/FSL-1.0-Apache-2.0.template.md
@@ -88,12 +88,14 @@ Except for displaying the License Details and identifying us as the origin of
 the Software, you have no right under these Terms and Conditions to use our
 trademarks, trade names, service marks or product names.
 
-## Change License
-
-On the second anniversary of the date we make the Software available, the
-Software will become available under the Apache 2.0 license. On that date, the
-Terms and Conditions above automatically terminate and the following terms
-become effective:
+## Additional License
+
+We hereby grant to you an additional irrevocable license under the
+terms of the Apache License, version 2.0 that is effective on the
+second anniversary of the date we make the Software available. Until
+that date, the Terms and Conditions above are the entire agreement for
+the licensed Software. After that date, you may elect to use the
+following terms to superseed the Terms and Conditions above:
 
 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
 this file except in compliance with the License.

If someone is happy with the original Terms and Conditions, I don't see why you would want to pull the rug out from under them by forcing a change to Apache License, version 2.0. You can "dual license" the software perpetually as "FSL-1.x OR (IF TODAY() >= $CHANGE_DATE THEN Apache-2.0) " in a schema like SPDX.

Note that I don't think that the condition construct that @david-a-wheeler proposed in spdx/spdx-spec#60 was fleshed out, so that might be something to consider working with the SPDX community.

If you force a change in terms for a given release of software, the SPDX metadata for a given release has to change as well, and that's a bit of a pain (to say the least).

@chadwhitacre
Copy link
Member

I think you're retracing some steps that they, too, retraced some years ago.

Can you be specific about what we're missing, if not already covered in your other comments so far? In reading the doc, I didn't find anything more (apart from the main topic of this issue) to think through. Rather the opposite: "A license tied to a specified future date or period of time poses the fewest legal complications." That's us! :-)

appreciation for the documentation of research and learnings

An appreciation we share. ;-)

pull the rug out from under them by forcing

I don't resonate with this negative characterization. How is it a forced rug-pull when the license terms are clear up front? It's not like we jump out of the bushes in two years to surprise them with the additional permissions. 😛

that a licensee can elect to

Election is a new idea in this conversation. What's the value of it? We've successfully used BSL's "Change License" model for over four years (and others for longer). How would we benefit by switching FSL to use an election model instead?

the SPDX metadata for a given release has to change as well

Really? That doesn't seem like a given to me, but I've only lurked SPDX fairly recently. Doesn't the SPDX metadata include a date? A quick look only turns up the copyright field. Maybe package information should also include a publication or release date, if that's not already accounted for somehow? Then consumers could programmatically determine the licensing state of a given artifact.

Burdening the consumer with the computation of the concrete change date was an intentional design decision for FSL (contra @kemitchell's approach). Based on our experience with the friction of managing BSL change dates, we decided to optimize for producers to adopt FSL by only having the copyright notice to change. Also, we shot ourselves in the foot pretty badly with a date change misfire in the heat of our Codecov (mis)adventure. Once burned, twice shy.

Anyway, I intend to submit FSL to SPDX in due course (reticketed as #21). We can then discuss fully over there. I'm not sure there won't be other gotchas as well once we get into the process.

I'm looking for a clear present grant of license under Apache 2.0 terms [...] in the future.

I think my proposal achieves this, but I'm open to finding even clearer language.

... that a licensee can elect to ...

This is a separate ask, the value of which I don't understand.

@mswilson
Copy link
Author

mswilson commented Dec 1, 2023

I don't resonate with this negative characterization. How is it a forced rug-pull when the license terms are clear up front? It's not like we jump out of the bushes in two years to surprise them with the additional permissions. 😛

I didn't intend a negative characterization, apologies for that. I only meant to highlight that the original terms are unilaterally changed.

Election is a new idea in this conversation. What's the value of it? We've successfully used BSL's "Change License" model for over four years (and others for longer). How would we benefit by switching FSL to use an election model instead?

As a software consumer, I generally prefer agreements that are unchanging over time. The license you have drafted today is not an irrevocable one. In fact, it is expressly unilaterally revoked after two years, and replaced with new terms and conditions.

As a software consumer, this means I need to evaluate both agreements, and then set a calendar to know which ones apply to my continued use of the software (which is only permitted via these two license terms, which in the current drafting are never available to me concurrently).

From time to time, some software consumers need to make precise attestations to others about the licenses that permit their continued use of software. An election option would mean that if the Terms and Conditions of the FSL are agreeable to me, and are clearly perpetual, I can make an election to abide by those terms in perpetuity. I can't do this with an expressed termination that happens at an ambiguous date.

The argument that "the BUSL terminates and we've not had problems with it" doesn't convince me. There is increasing scrutiny on software supply chains in all dimensions. Security vulnerabilities gets a lot of attention, but clearly documented license compliance is another. This is an area where I think that BUSL can be improved upon, and I'd encourage you to consider it.

Doesn't the SPDX metadata include a date? A quick look only turns up the copyright field. Maybe package information should also include a publication or release date, if that's not already accounted for somehow?

I'm unaware of a place where the dates and changes in terms (License A or B, depending on a date) could be adequately expressed in a machine readable form within the SPDX standard as it sits today. If someone is generating an SBOM that uses SPDX identifiers, that SBOM producer could use a "Declared License" field of "FSL-1.0-Apache-2.0" and a "Concluded License" field of "Apache-2.0" once the change date has elapsed. But they would have to figure out how to implement that conclusion themselves. A "Concluded License" of "FSL 1.0" would not be durable, since it has an unknown (within the schema of SPDX license expressions) expiration date.

Burdening the consumer with the computation of the concrete change date was an intentional design decision for FSL

Naturally, this externalizes costs and risks. It is your choice to do so, but it may dampen adoption of software that uses this license due to the ambiguity.

@chadwhitacre
Copy link
Member

chadwhitacre commented Feb 9, 2024

I've started #32 with some updates, here's where we're at for this portion:

We grant you an additional license to use the Software under the Apache 2.0 license that becomes effective on the second anniversary of the date we make the Software available. On or after that date, if you elect to use the Software under the Apache 2.0 license, the following will apply:

Screenshot 2024-02-09 at 5 25 51 PM

Look good, @mswilson?

@mswilson
Copy link
Author

mswilson commented Feb 12, 2024

Sorry for the delay responding. I think this is an improvement.

I imagine that the revisions I suggest will be a little more "lawyery" (though to be clear: I'm not a lawyer). As a consumer of software I want the same kind of clarity that many lawyers want in legal drafting, so some of the words I'm looking for are the same. Quoting David McGowan

Licenses are important, but it is the work that matters. Every lawyer knows that the sociology of agreements is at least as important as the law of them. [1] The social relations that form around and through agreements are the real life-blood of contracting or licensing. Agreements lay out what people can expect from each other, give them security in their expectations, and thereby give them the confidence to proceed to do things they want to do. The terms of the agreement need to be reasonably clear, and it helps to have lawyers lurking in the wings to justify people’s confidence that their expectations will be met, but the value of the agreement lies in the behavior it facilitates, not in the document itself.

The clarity I'm seeking is this: I want to be certain that there is a present grant of a license that I can fully rely on at a future date. That's why in the suggested text in comments above:

Additional License
We hereby grant to you an additional irrevocable license under the terms of the Apache License, version 2.0 that is effective on the second anniversary of the date we make the Software available. Until that date, the Terms and Conditions above are the entire agreement for the licensed Software. After that date, you may elect to use the following terms to superseed the Terms and Conditions above:

I used some words like "hereby grant to you" and "irrevocable license" and "is effective". I removed words like "change" because that indicates that something is, well, changing. "becomes effective" has a similar effect of uncertainty.

A Real Lawyer™ might write it more like this:

License Grant.
Each Licensor hereby grants to every Licensee a present, fully vested and irrevocable license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, distribute, make, sell, use, and sell the Software under the terms of the Apache 2.0 at any time on or after the second anniversary of the date the Software is made available.

Personally, I think that a version like that may be more form than substance. A bit too much "for the avoidance of doubt" verbosity.

Building on the current proposed version, this is my concise suggestion

Additional License Grant
We hereby grant you an additional irrevocable license to use the Software under the Apache License, Version 2.0 that is effective on the second anniversary of the date we make the Software available. On or after that date, if you elect to use the Software under the Apache License, Version 2.0, the following will apply

@gavin-zee
Copy link

hi @mswilson the reason we left out "irrevocable" is because Apache 2.0 already speaks to the license grant being irrevocable, however under MIT (which is the other delayed license for the FSL) the license is not specified as "irrevocable".

It felt like whether the license was "irrevocable" or not should default to the delayed license terms themselves.

@chadwhitacre
Copy link
Member

Thanks @mswilson. I see now that we have "hereby grant" in the main License Grant section, and that "Apache License, Version 2.0" is the way it specifies itself in the boilerplate notice. I agree we that if we're taking the basic point, we should change thoroughly from "change license" to "additional license grant." Leaving off "irrevocable" based on @gavin-zee's comment, we now have this diff:

Screenshot 2024-02-12 at 5 46 12 PM

Is this acceptable?

@chadwhitacre
Copy link
Member

whether the license was "irrevocable" or not

Rereading ... I think @mswilson is looking to make it clear that the licensor can't undo the "present grant of future permissions" between the date the Software is made available and two years thence. Yes, once Apache 2.0 kicks in, its own copyright and patent clauses are irrevocable. Could the grant be revoked before the Apache 2.0 kicks in, though?

We hereby grant you an additional irrevocable license

I think this might actually be clearer:

We hereby irrevocably grant you an additional license

@chadwhitacre
Copy link
Member

Updated in d42ffcb.

Screenshot 2024-02-13 at 11 02 14 AM

@chadwhitacre
Copy link
Member

Last call for comments! :) Here's the language we're getting ready to move forward with on #32:

We hereby irrevocably grant you an additional license to use the Software under the Apache License, Version 2.0 that is effective on the second anniversary of the date we make the Software available. On or after that date, you may use the Software under the Apache License, Version 2.0, in which case the following will apply:

@mswilson
Copy link
Author

In the headings I would intentionally avoid words like "future" because it can introduce questions regarding when the license is granted. Some licensees may have more "confidence to proceed to do things they want to do" (to borrow a phrase from a comment above) knowing that the grant of an additional license is made immediately in the present, and that this is not a promise to perform some act in the future.

A fact that potential licensee may want to establish is: an irrevocable license under the terms of Apache 2.0 clearly existed before a potential future bankruptcy proceeding commences, and therefore the license of the software should not be extinguished through a bankruptcy proceeding. See 11 U.S.C. §365(n). Explicit and intentional choice of language can help make the intent of the licensor clear.

Disclosure: I'm not a lawyer and this is not legal advice.

@chadwhitacre
Copy link
Member

Thanks, @mswilson. We're going to move forward with the headings as they stand, since a) the body of the license is much clearer now (thanks to your input :), and b) it aligns with the DOSP framing that OSI has put forward.

Thanks for the feedback! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clarification a request for clarification about the license terms
Projects
None yet
Development

No branches or pull requests

5 participants