You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The phrasing of the Application exception in version 2.0.0 of the license is:
You don't have to contribute any software that only invokes this software's functionality through the interfaces this software exposes, unless it exposes so much of this software's interfaces or functionality to users, programmers, or other software that it becomes a practical substitute for this software for any substantial portion of its use cases. Interfaces exposed by this software include all the interfaces this software provides users, programmers, or other software to invoke its functionality, such as command line, graphical, application programming, remote procedure call, and inter-process communication interfaces.
However, it's unclear to me exactly how to evaluate the interfaces this software exposes. It's made clear who the users of these interfaces are, and what mediums of interaction are covered, but there's no guidance as to intentionality.
As a result, I'm worried that Hyrum's Law applies: any observable behavior of the software becomes part of "the interface", and thus is grounds to apply the exception in cases that may not be intended (e.g. if the "public" interface is intended to be an RPC protocol, an application that embeds the entire project wholesale and thus also wraps its configuration files and its service lifecycle may still be covered by the exception, contrary to the author's intent).
I'm not sure whether this is intentional, but if it's unintended the only thought I have at this time is to replace
through the interfaces this software exposes
with
through the explicitly public interfaces this software exposes
and rely on the developer to declare which interfaces qualify as such; e.g. as the Linux kernel declares its syscall interface is a public API, or EXPORT_SYMBOL in kernelspace (as opposed to EXPORT_SYMBOL_GPL).
The text was updated successfully, but these errors were encountered:
The license provides illustrative examples of exposed interfaces. As you quoted:
Interfaces exposed by this software include all the interfaces this software provides users, programmers, or other software to invoke its functionality, such as command line, graphical, application programming, remote procedure call, and inter-process communication interfaces.
I wouldn't read that as a definition within the text. Just a usage.
As I've mentioned on my blog, the default rules for interpreting contracts under US law can and will look to what people mean by words in ordinary usage, as well as what they mean in particular industries and businesses.
There's a kind of clever truth in "everything becomes the interface", in the sense that people will rely on quirks of behavior, so changing that behavior may disrupt users in unexpected ways. But I don't think that actually makes every part of software its "interface" as we ordinarily use the term, and therefore as that term will likely be read in the context of this license.
The phrasing of the Application exception in version 2.0.0 of the license is:
However, it's unclear to me exactly how to evaluate
the interfaces this software exposes
. It's made clear who the users of these interfaces are, and what mediums of interaction are covered, but there's no guidance as to intentionality.As a result, I'm worried that Hyrum's Law applies: any observable behavior of the software becomes part of "the interface", and thus is grounds to apply the exception in cases that may not be intended (e.g. if the "public" interface is intended to be an RPC protocol, an application that embeds the entire project wholesale and thus also wraps its configuration files and its service lifecycle may still be covered by the exception, contrary to the author's intent).
I'm not sure whether this is intentional, but if it's unintended the only thought I have at this time is to replace
with
and rely on the developer to declare which interfaces qualify as such; e.g. as the Linux kernel declares its syscall interface is a public API, or
EXPORT_SYMBOL
in kernelspace (as opposed toEXPORT_SYMBOL_GPL
).The text was updated successfully, but these errors were encountered: