forgejo/governance
40
34
Fork
You've already forked governance
35

[MISSION] on Forgejo accepting copyleft contributions #20

Merged
earl-warren merged 1 commit from earl-warren/governance:wip-copyleft into main 2023年05月10日 11:53:02 +02:00
Contributor
Copy link

This agreement proposal follows the discussion on licensing Forgejo under copyleft. It is a first step and does not include the choice of the license which is left for later.

It is an agreement on principle that copyleft contributions are welcome going forward.

The rationale for such an agreement has been developed in a a draft blog post and is copied here for the record.


Developers who choose to publish their work under a copyleft license are excluded from participating in software that is published under a permissive license. That is at the opposite of the core values of the Forgejo project.

Forgejo users already welcome copyleft

Forgejo is a software forge, an online development environment, based on Git. Both Forgejo and Git must be installed together, either as individual binaries or bundled into the official container images. The license of Git is GNU GPLv2 which is a copyleft license. Although the Forgejo codebase includes basic support for gogit, a Go package distributed under a permissive license that can be used in place of Git, it is not supported or packaged because it is not fully compatible and could corrupt git repositories.

There are legal obligations attached to copyleft software which are, in a nutshell, to offer the source code with the binary under the same license. For instance, if an employee was to distribute a Git binary to someone else, the organization can be required to also provide the "complete and corresponding source code". And if they fail to do so, they may loose all their rights under the license, at least until the copyright holders agree to grant them back. For this reason some organizations exclude copyelfted software entirely. However, when they use Git, it means the legal counsel has no objection to copylefted software.

What will change in Forgejo?

The license of Forgejo will change to be copyelft when a copylefted work is merged. The most likely candidate is the adapter for the F3 file format which is a rather isolated package within the codebase.

Before it happens a decision will be made by the community to choose a copyleft license, in accordance to the Forgejo decision making process. The chosen license will apply to Forgejo as a whole (binary and sources) but each file within the codebase will retain its own license. This is nothing new as Forgejo already includes various licenses and contributors are expected to agree to the Developer Certificate of Origin.

Developers who feel strongly about exclusively publishing their work under a permissive license can keep doing so when working on Forgejo in the Git repository. By the terms of this permissive license, they accept that their work can be sublicensed and redistributed under a proprietary license. And they also accept that it can be sublicensed and redistributed as part of Forgejo, under a copyleft license.

The choice of a copyleft license is a delicate balance and it is expected that different opinions will be voiced within the Forgejo community. There already were debates comparing the merits of the AGPL which was designed for online services and the GPL which was designed before the internet age. The least controversial choice would be to choose the same license as Git since there already is a de facto consensus because all developers and users agree on it.

This agreement proposal follows the [discussion](https://codeberg.org/forgejo/discussions/issues/6#issuecomment-858607) on licensing Forgejo under copyleft. It is a first step and does not include the choice of the license which is left for later. It is **an agreement on principle that copyleft contributions are welcome going forward**. The rationale for such an agreement has been developed in a [a draft blog post](https://codeberg.org/forgejo/website/pulls/204/files) and is copied here for the record. --- Developers who choose to publish their work under a copyleft license are excluded from participating in software that is published under a permissive license. That is at the opposite of the [core values](https://codeberg.org/forgejo/governance/src/branch/main/MISSION.md#values) of the Forgejo project. ## Forgejo users already welcome copyleft Forgejo is a [software forge](<https://en.wikipedia.org/wiki/Forge_(software)>), an online development environment, based on [Git](https://en.wikipedia.org/wiki/Git). **Both Forgejo and Git must be installed together**, either as individual binaries or bundled into the [official container images](https://codeberg.org/forgejo/-/packages/container/forgejo/1.19-rootless). The license of Git is [GNU GPLv2](https://git-scm.com/about/free-and-open-source) which is a [copyleft license](https://www.gnu.org/licenses/copyleft.html). Although the Forgejo codebase includes basic support for [gogit](https://github.com/go-git/go-git), a Go package distributed under a permissive license that can be used in place of Git, it is not supported or packaged because it is [not fully compatible](https://github.com/go-git/go-git/blob/master/COMPATIBILITY.md) and could corrupt git repositories. There are legal obligations attached to copyleft software which are, in a nutshell, to offer the source code with the binary under the same license. For instance, if an employee was to distribute a Git binary to someone else, the organization can be required to also provide the "complete and corresponding source code". And if they fail to do so, they may loose all their rights under the license, at least until the copyright holders agree to grant them back. For this reason some organizations exclude copyelfted software entirely. However, **when they use Git, it means the legal counsel has no objection to copylefted software.** ## What will change in Forgejo? The license of Forgejo will change to be copyelft when a copylefted work is merged. The most likely candidate is [the adapter](https://codeberg.org/forgejo/forgejo/commits/branch/forgejo-f3) for the [F3 file format](https://lab.forgefriends.org/friendlyforgeformat/gof3) which is a rather isolated package within the codebase. Before it happens a decision will be made by the community to choose a copyleft license, in accordance to the [Forgejo decision making process](https://codeberg.org/forgejo/governance/src/branch/main/DECISION-MAKING.md). The chosen license will apply to Forgejo as a whole (binary and sources) but each file within the codebase will retain its own license. This is nothing new as Forgejo [already includes various licenses](https://code.forgejo.org/assets/js/licenses.txt) and contributors are expected to agree to the [Developer Certificate of Origin](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CONTRIBUTING/DCO.md). Developers who feel strongly about exclusively publishing their work under a permissive license can keep doing so when working on Forgejo in the Git repository. By the terms of this permissive license, they accept that their work can be sublicensed and redistributed under a proprietary license. And they also accept that it can be sublicensed and redistributed as part of Forgejo, under a copyleft license. The choice of a copyleft license is a delicate balance and it is expected that different opinions will be voiced within the Forgejo community. There already were debates comparing the merits of the [AGPL](https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License) which was designed for online services and the [GPL](https://en.wikipedia.org/wiki/GNU_General_Public_License) which was designed before the internet age. The least controversial choice would be to choose the same license as Git since there already is a de facto consensus because all developers and users agree on it.
AGREEMENTS.md Outdated
@ -51,1 +51,4 @@
## Licensing
Forgejo is [published under a permissive license](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/LICENSE) and contributions to Forgejo, in all the repositories in the Forgejo organization are accepted provided the author agrees to the [Developer Certificate of Origin (DCO)](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CONTRIBUTING/DCO.md).

s/contributions to Forgejo, in all the repositories in the Forgejo organization/contributions/

otherwise that's a lot of Forgejo repetition

s/contributions to Forgejo, in all the repositories in the Forgejo organization/contributions/ otherwise that's a lot of Forgejo repetition
earl-warren marked this conversation as resolved
AGREEMENTS.md Outdated
@ -52,0 +53,4 @@
Forgejo is [published under a permissive license](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/LICENSE) and contributions to Forgejo, in all the repositories in the Forgejo organization are accepted provided the author agrees to the [Developer Certificate of Origin (DCO)](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CONTRIBUTING/DCO.md).
The Forgejo community agrees on principle that original works published under a copyleft license can be merged into the codebase. After that happens, Forgejo will be distributed under a copyleft license that will be chosen in accordance to the decision making process.

Just an observation for the record, no change requested.


I thought about the following scenario:

  • based on this agreement a copyleft contribution is merged
  • an agreement is discussed to choose the license
  • Forgejo releases are blocked until a decision is reached

In practice I don't think it will be a problem as the copyleft contribution can be reverted in order to make the release and merged back afterwards. More realistically I think the merge will only happen once the decision on the license is made.

Just an observation for the record, no change requested. --- I thought about the following scenario: * based on this agreement a copyleft contribution is merged * an agreement is discussed to choose the license * Forgejo releases are blocked until a decision is reached In practice I don't think it will be a problem as the copyleft contribution can be reverted in order to make the release and merged back afterwards. More realistically I think the merge will only happen once the decision on the license is made.
earl-warren marked this conversation as resolved

I have mixed feelings about this agreements.
As you write It is an agreement on principle and I really think this agreement should define some "acceptable licenses" from the start.

Deferring the license discussion until after a first merge would mean:

  • the first copyleft contribution will restrict the copyleft license choices (since not all copyleft licenses are compatible), somehow bypassing any agreement.
  • choosing a license after the merge means that until a consensus is reached (which can last some time as we see...) the codebase will be in some awkward status-quo, as @dachary pointed out.

Based on the wikipedia compatibility graph, I would suggest accepting the following copyleft licenses within this agreement:

  • MPL-2.0
  • LGPL
  • GPL-2.0-or-later
  • GPL-3.0-only
  • GPL-3.0-or-later

Since they all allow the whole Forgejo software to be distributed under GPL-3.0-only or AGPL-3.0.

Other licenses could be added with dedicated agreements.

AFAIK accepting GPL-2.0-only (which I did not list) contributions would imply that Forgejo can only be release under GPL-2.0-only license (and not accept LGPL-3.0-only contributions for instance).

I have mixed feelings about this agreements. As you write `It is an agreement on principle` and I really think this agreement should define some "acceptable licenses" from the start. Deferring the license discussion until after a first merge would mean: - the first copyleft contribution will restrict the copyleft license choices (since not all copyleft licenses are compatible), somehow bypassing any agreement. - choosing a license after the merge means that until a consensus is reached (which can last some time as we see...) the codebase will be in some awkward status-quo, as @dachary pointed out. --- Based on the [wikipedia compatibility graph](https://en.wikipedia.org/wiki/License_compatibility#/media/File:Floss-license-slide-image.svg), I would suggest accepting the following copyleft licenses within this agreement: - MPL-2.0 - LGPL - GPL-2.0-or-later - GPL-3.0-only - GPL-3.0-or-later Since they all allow the whole Forgejo software to be distributed under `GPL-3.0-only` or `AGPL-3.0`. Other licenses could be added with dedicated agreements. AFAIK accepting `GPL-2.0-only` (which I did not list) contributions would imply that Forgejo can only be release under `GPL-2.0-only` license (and not accept LGPL-3.0-only contributions for instance).
Author
Contributor
Copy link

You are correct, the wording suggests a scenario that is problematic. I tried an approach that avoids listing specific licenses and hopefully address this concern by clarifying that the decision regarding the license must happen before the merge:

The Forgejo community agrees on principle that original works published under a copyleft license can be merged into the codebase. Before that happens, the Forgejo community will decide on a copyleft license in accordance to the decision making process.

Does that sound like a sensible approach?

You are correct, the wording suggests a scenario that is problematic. I tried an approach that avoids listing specific licenses and hopefully address this concern by clarifying that the decision regarding the license must happen **before** the merge: > The Forgejo community agrees on principle that original works published under a copyleft license can be merged into the codebase. Before that happens, the Forgejo community will decide on a copyleft license in accordance to the decision making process. Does that sound like a sensible approach?

Since it does not seem enforceable until explicit licenses are listed, I would suggest instead to add such statement the MISSION document (under Values maybe?)

Since it does not seem enforceable until explicit licenses are listed, I would suggest instead to add such statement the [MISSION document](https://codeberg.org/forgejo/governance/src/branch/main/MISSION.md) (under Values maybe?)
Ghost approved these changes 2023年04月18日 17:49:44 +02:00
Ghost left a comment
Copy link

LGTM provided it is moved to the MISSION document as suggested by @oliverpool

LGTM provided it is moved to the MISSION document as suggested by @oliverpool

Since this is a very important agreement, I would suggest no less than three or four weeks before this is merged.

Since this is a very important agreement, I would suggest no less than three or four weeks before this is merged.
Author
Contributor
Copy link

I moved the update to MISSION.md instead as suggested, under Values.

I moved the update to MISSION.md instead as suggested, under Values.
earl-warren changed title from (削除) [AGREEMENT] On Forgejo accepting copyleft contributions (削除ここまで) to [AGREEMENT] on Forgejo accepting copyleft contributions 2023年04月18日 21:26:00 +02:00
oliverpool changed title from (削除) [AGREEMENT] on Forgejo accepting copyleft contributions (削除ここまで) to [MISSION] on Forgejo accepting copyleft contributions 2023年05月02日 16:54:24 +02:00
Author
Contributor
Copy link

It has been three weeks and there were no objections or concerns, let's do that.

It has been three weeks and there were no objections or concerns, let's do that.
Sign in to join this conversation.
No reviewers
Labels
Clear labels
[Decision] Building proposal(s)
We're in a decision-making process, buiding one or more proposals to address the shared aim based on the criteria
[Decision] Collecting stakeholders
We're in a decision-making process, figuring out the relevant stakeholders and bringing them into the process
[Decision] Documenting and implementing
We finished a decision-making process, now documenting and/or implementing the decision
[Decision] Gathering advice
We're in a decision-making process, waiting for people to add their feedback
[Decision] Gathering criteria
We're in a decision-making process, gathering criteria, considerations and needs
[Decision] Integrating concerns
We're in a decision-making process, working with a proposal, trying to integrate concerns and create modifications/support such that the proposal works for everyone
[Decision] Phrasing shared motive
We're in a decision-making process, phrasing the shared question/problem/issue we want to tackle
Membership
Process of appointing a person as a team member.
Moderation
Moderation actions in Forgejo spaces
Money
Accounting, day to day management of money
Scheduled chores
Tasks that need to be done at a scheduled date in the future (paying the bills, renewing certificates, etc.)
User research - Accessibility
Requires input about accessibility features, likely involves user testing.
User research - Blocked
Do not pick as-is! We are happy if you can help, but please coordinate with ongoing redesign in this area.
User research - Community
Community features, such as discovering other people's work or otherwise feeling welcome on a Forgejo instance.
User research - Config (instance)
Instance-wide configuration, authentication and other admin-only needs.
User research - Errors
How to deal with errors in the application and write helpful error messages.
User research - Filters
How filter and search is being worked with.
User research - Future backlog
The issue might be inspiring for future design work.
User research - Git workflow
AGit, fork-based and new Git workflow, PR creation etc
User research - Labels
Active research about Labels
User research - Moderation
Moderation Featuers for Admins are undergoing active User Research
User research - Needs input
Use this label to let the User Research team know their input is requested.
User research - Notifications/Dashboard
Research on how users should know what to do next.
User research - Rendering
Text rendering, markup languages etc
User research - Repo creation
Active research about the New Repo dialog.
User research - Repo units
The repo sections, disabling them and the "Add more" button.
User research - Security
User research - Settings (in-app)
How to structure in-app settings in the future?
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
forgejo/governance!20
Reference in a new issue
forgejo/governance
No description provided.
Delete branch "earl-warren/governance:wip-copyleft"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?