This is mirrored to GitHub for versioning purposes, but (to the extent I'm interested in collaboration on this) I'd prefer to try it on HackMD. You can do that here (or if you're already reading this on HackMD, welcome!)
Learn More →
This is a refactoring of the Open Source Definition, inspired by work I did some time ago to refactor the Open Knowledge Definition between its version 1 and 2.0, and egged on by real-life discussions at FOSDEM and CopyleftConf in 2020 and on Twitter in 2021.
My primary motivation here is to show what can be done to make the OSD more comprehensible and useful. I do not have the time or motivation to shepherd a rewrite through OSI, but since I've done the work I'm sharing in hopes it can be useful to someone.
The primary structural changes are two-fold:
I've labeled this 1.99 because the goal is to refactor, not rewrite. In other words, I've earnestly tried to keep it as close as possible to the meaning of the current version (little-known fact: already 1.9!), as interpreted in practice over the 1.5 decades since it was last revised.
There are many proposals to change (in ways small and large) the OSD. This refactoring proposal is not an endorsement of any of those; it's entirely possible that the right move for OSI as an organization is simply to refactor (to improve the reliability and transparency of the existing license review process) and leave it at that. At the same time, if the organization (or other related organizations) think there should be change, I hope a refactoring will be a more solid basis for such work, allowing them to be more clear and impactful.
Refactoring code often exposes questions about the intended behavior of the original code. This refactoring is no different. Two particular questions jump out, but I'm sure others may be lurking:
In keeping with the notion that this is a refactoring and not a rewrite (or even a substantial fix of known issues!) here are a variety of issues that are known to me, but explicitly not addressed in this draft.
I share some of my thoughts on these and related topics here.
A few notes on stylistic choices:
Software is open if anyone is free to access, use, modify, and share it — subject, at most, to measures that preserve provenance and openness.
The key words “must”, “must not”, “should”, and “may” in this document are to be interpreted as described in RFC2119.
To be open source, software must satisfy the following requirements:
The complete source code for the software must be available under an open source license (as defined in Section 2). Any additional terms accompanying any form of the software (such as terms of use, or patents held by the licensor) must not contradict the terms of the license.
The source code for the software must be available to those who receive the software, either distributed with the software or via a well-publicized means for no more than a reasonable reproduction cost.
The source code means the preferred form in which a programmer would modify the software. Deliberately obfuscated source code, or intermediate forms such as preprocessor output, are not allowed.
A license is an open source license if its terms satisfy the following conditions:
The license must grant the following permissions:
The license must allow use of the licensed software.
The license must allow the modification of the licensed software.
The license must allow redistribution of the licensed software under the same terms as the license of the original software, and:
The license must apply to all to whom the licensed software is redistributed without the need for them to agree to any additional legal terms.
The license must allow any part of the licensed software to be distributed separately from any other part of the licensed software, or from any collection of software with which it was originally distributed.
The license must grant all subsequent parties who receive licensed software at least the same rights granted to the original recipients.
The license must not contain any of the following restrictions:
The license must not discriminate against any person or group.
The license must not condition the permissions in Sec. 2.1 on any fee arrangement, royalty, or other compensation or monetary remuneration.
The license must not restrict anyone from using the licensed software in a specific field of endeavor.
The license must not restrict other software that is distributed alongside licensed software.
The license must not condition the permissions in Sec. 2.1 on a specific technology or style of interface.
The license must not limit the permissions required in Section 2.1, except by the following allowable conditions:
The license may require that modified software carry a different name or version number from the original software, or otherwise indicate that changes have been made.
Rationale: The first part of this section is the third sentence of OSD #4, but an added "or otherwise indicate" clause attempts to capture Apache 2.0 4.b and GPL 2 2.a.
The license may restrict source code from being distributed in modified form, if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time.
The license may require retention and conveyance of copyright notices and license texts to recipients of the licensed software.
Rationale: This is an attempt to capture various notice and attribution requirements.
The license may require copies or modifications of the licensed software, including executable forms, to be distributed under the same license as the original licensed software.
The license may require distribution of the licensed software's source code to recipients of executable forms of the licensed software.
Rationale: This is an attempt to capture the core intutions and mechanisms of copyleft.
The license may prohibit distribution of the licensed software in a manner where technical measures impose restrictions on the exercise of otherwise allowed rights.
Rationale: This is an attempt to capture GPL v3's DRM clauses. However, it is possible that it may be better seen as an instance of "otherwise aggressing" in Sec. 2.3.6, and used as an illustrative example in an FAQ.
The license may condition a licensee's permissions on not litigating or otherwise aggressing against licensors or other licensees, in an attempt to prohibit the exercise of any grant allowed by the license.
Rationale: This is an attempt to capture patent defense clauses present in many OSI-approved licenses, dating back to the Netscape Public License.
Unfortunately, I have not found a great way to visually (or otherwise, such as through a git history) show what sections of the former OSD go where in the new draft. This list is provided to allow easy auditing to make sure I didn't miss anything (and indeed, while preparing it, I found two sentences that had been accidentally dropped).