Skip to content

Commit

Permalink
chore: ran mdformat on all files
Browse files Browse the repository at this point in the history
  • Loading branch information
acovaci committed May 20, 2024
1 parent 775d14b commit 20137df
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 173 deletions.
9 changes: 5 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,12 @@ repos:
rev: 0.2.3
hooks:
- id: yamlfmt
- repo: https://github.com/matthewhughes934/pre-commit-format-markdown
rev: v0.5.0
- repo: https://github.com/executablebooks/mdformat
rev: 0.7.17
hooks:
- id: format-markdown-script
args: [--width, '100']
- id: mdformat
args: [--wrap=100, --number]
types: [markdown]
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.2.0
hooks:
Expand Down
133 changes: 61 additions & 72 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# How to contribute to plumb
# How to contribute to Plumb

## Reporting issues

If you find a bug in plumb, please report it on the Issues page. Please include
a minimal reproducible example that demonstrates the bug. If you can, please
also include a failing test case.
If you find a bug in plumb, please report it on the Issues page. Please include a minimal
reproducible example that demonstrates the bug. If you can, please also include a failing test case.

## Contributing code

Expand All @@ -21,71 +20,61 @@ Contributions are welcome! Please follow these guidelines:

### Licensing implications

By submitting a PR to this project you agree to release the source code under
the Polyform v1.0.0 Small Business License, or any future version of the
Polyform License published by Polyform Labs. See the [LICENSE](LICENSE).

**Note:** It will be pointed out that this is not an open source license
as defined by the Open Source Initiative. While discussions of the intricacies
of the open source ecosystem is out of the scope of this document, this is a
brief reasoning for the choice of license:

* We are passionate about open source. We believe that open source is the best
way to develop software. But, in recent times, there has been an increasing
trend of big corporations using open source software to amass incredible
profits without giving the least bit of financial support to the developers
who passionately maintain these projects. This is not sustainable.

* As a result, we are seeing increased security risks of open source projects
being abandoned due to lack of funding. We believe that we can find a better
way forward.

* What are the implications for you?

* If you're not developing functionality that relies exclusively or
substantially on plumb, you can use it as if it were an MPL 2.0 licensed
project. The only extra requirement is you needing to include the
Commons Clause alongside the MPL 2.0 license.

* The licensors under the Commons Clause are defined as the active
contributors to the project, weighed by the amount of code contributed
in the last 6 months. You can find out more information in the
[GOVERNANCE.md](GOVERNANCE.md) file. But, in short, as long as you
participate in this project, by default, you are a licensor.

* Decisions are driven democratically, by a weighed vote proportional to
the amount of code contributed, by a simple majority vote with a quorum
defined as 50% of the active contributors:

* Active contributors are individuals (not code or bots) that
have contributed code to the project Engaged means participating
over the last 6 months in discussions, reviewing PRs, submitting
PRs, publishing issues, etc., as well as contributing code.

* You are allowed to explicitly waive your licensor rights and your active
contributor status, if you so wish, at any time. This will not affect
your rights to use the software, but it will affect your rights and
responsibilities in the governance of the project.

* What does substantially mean? Use your best judgement. A good rule of
thumb is *Would your project be impossible to develop without plumb? Would
you have to end up reimplementing a significant portion of plumb to achieve
the same functionality?* If the answer is yes, then you're developing
functionality that relies substantially on plumb.

* Some examples:
* Just selling plumb itself as a service, or as a product;
* Naming it gold and doing the same;
* Building a GUI on top of plumb without significant additional
functionality;
* Writing an IDE extension that relies on plumb for its core
functionality.

* Some counterexamples:
* Using plumb as a dependency in a project that you are not selling
as a service or product, regardless of whether it is open source or
not, or whether it's based substantially on plumb or not;
* Packaging plumb for free distribution within an OS distribution or
package manager;
* Just outright using the software, even in your company. You are
perfectly fine to use plumb as a software.
By submitting a PR to this project you agree to release the source code under the Polyform v1.0.0
Small Business License, or any future version of the Polyform License published by Polyform Labs.
See the [LICENSE](LICENSE).

**Note:** It will be pointed out that this is not an open source license as defined by the Open
Source Initiative. While discussions of the intricacies of the open source ecosystem is out of the
scope of this document, this is a brief reasoning for the choice of license:

- We are passionate about open source. We believe that open source is the best way to develop
software. But, in recent times, there has been an increasing trend of big corporations using open
source software to amass incredible profits without giving the least bit of financial support to
the developers who passionately maintain these projects. This is not sustainable.

- As a result, we are seeing increased security risks of open source projects being abandoned due to
lack of funding. We believe that we can find a better way forward.

- What are the implications for you?

- If you're not developing functionality that relies exclusively or substantially on plumb, you
can use it as if it were an MPL 2.0 licensed project. The only extra requirement is you needing
to include the Commons Clause alongside the MPL 2.0 license.

- The licensors under the Commons Clause are defined as the active contributors to the project,
weighed by the amount of code contributed in the last 6 months. You can find out more
information in the [GOVERNANCE.md](GOVERNANCE.md) file. But, in short, as long as you
participate in this project, by default, you are a licensor.

- Decisions are driven democratically, by a weighed vote proportional to the amount of code
contributed, by a simple majority vote with a quorum defined as 50% of the active contributors:

- Active contributors are individuals (not code or bots) that have contributed code to the
project Engaged means participating over the last 6 months in discussions, reviewing PRs,
submitting PRs, publishing issues, etc., as well as contributing code.

- You are allowed to explicitly waive your licensor rights and your active contributor status, if
you so wish, at any time. This will not affect your rights to use the software, but it will
affect your rights and responsibilities in the governance of the project.

- What does substantially mean? Use your best judgement. A good rule of thumb is *Would your project
be impossible to develop without plumb? Would you have to end up reimplementing a significant
portion of plumb to achieve the same functionality?* If the answer is yes, then you're developing
functionality that relies substantially on plumb.

- Some examples:

- Just selling plumb itself as a service, or as a product;
- Naming it gold and doing the same;
- Building a GUI on top of plumb without significant additional functionality;
- Writing an IDE extension that relies on plumb for its core functionality.

- Some counterexamples:

- Using plumb as a dependency in a project that you are not selling as a service or product,
regardless of whether it is open source or not, or whether it's based substantially on plumb
or not;
- Packaging plumb for free distribution within an OS distribution or package manager;
- Just outright using the software, even in your company. You are perfectly fine to use plumb as
a software.
158 changes: 71 additions & 87 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -1,108 +1,92 @@
# Governance Model

The governance model for `plumb` is designed to ensure that the project remains
sustainable and that the contributors are rewarded for their efforts. The
governance model is based on the principles of direct democracy and shared
ownership.
The governance model for `plumb` is designed to ensure that the project remains sustainable and that
the contributors are rewarded for their efforts. The governance model is based on the principles of
direct democracy and shared ownership.

This model is somewhat similar to a cooperative, where the active contributors
are the owners of the project.
This model is somewhat similar to a cooperative, where the active contributors are the owners of the
project.

## Definitions

- **Active Contributor**: An individual person with a non-void *scope of
contribution* and *active status*. For example, under the current
definition: someone who has contributed code to the project in the past
6 months and who has participated in discussions, reviewed PRs,
submitted PRs, published issues, etc., over the last 6 months.
```
- **Active Contributor**: An individual person with a non-void *scope of contribution* and *active
status*. For example, under the current definition: someone who has contributed code to the
project in the past 6 months and who has participated in discussions, reviewed PRs, submitted PRs,
published issues, etc., over the last 6 months.
- **Scope of Contribution**: Can apply to a contributor; this definition can
be modified by the licensors as needed. It is currently defined as the
number of lines of code contributed to the project in the last 6 months,
that have not been rejected or reverted.
- **Scope of Contribution**: Can apply to a contributor; this definition can be modified by the
licensors as needed. It is currently defined as the number of lines of code contributed to the
project in the last 6 months, that have not been rejected or reverted.
- **Void Scope of Contribution**: The scope of contribution of an
active contributor is void if they do not qualify to have a
scope of contribution as defined above.
- **Void Scope of Contribution**: The scope of contribution of an active contributor is void if
they do not qualify to have a scope of contribution as defined above.
```

- **Activation Status**: Can apply to a contributor; this definition can be
modified by the licensors as needed. It is currently defined as any
contributor with a non-void scope of contribution, as defined above, has
not explicitly waived their active contributor status, and has
participated in the project over the last 6 months by contributing code,
participating in discussions, reviewing PRs, submitting PRs, publishing
issues, etc.
- **Activation Status**: Can apply to a contributor; this definition can be modified by the
licensors as needed. It is currently defined as any contributor with a non-void scope of
contribution, as defined above, has not explicitly waived their active contributor status, and has
participated in the project over the last 6 months by contributing code, participating in
discussions, reviewing PRs, submitting PRs, publishing issues, etc.

- **Active Status**: The activation status of an active contributor
is active if they qualify to the activation status as defined
above.
- **Active Status**: The activation status of an active contributor is active if they qualify to
the activation status as defined above.

- **Inactive Status**: The activation status of an active
contributor is inactive if they do not qualify to the activation
status as defined above.
- **Inactive Status**: The activation status of an active contributor is inactive if they do not
qualify to the activation status as defined above.

- **Waiving Active Contributor Status**: An active contributor can
choose to waive their active contributor status at any time, for
any reason, by explicitly stating their desire to do so. This
will not affect their rights to use the software, but it will
affect their rights and responsibilities in the governance of
the project.
- **Waiving Active Contributor Status**: An active contributor can choose to waive their active
contributor status at any time, for any reason, by explicitly stating their desire to do so.
This will not affect their rights to use the software, but it will affect their rights and
responsibilities in the governance of the project.

- **Contributor**: An individual that has contributed code to the project.
This includes active contributors, but also includes:
- **Contributor**: An individual that has contributed code to the project. This includes active
contributors, but also includes:

- Individuals that have contributed code to the project in the past, but
have not participated in the project over the last 6 months.
- Individuals that have contributed code to the project in the past, but have not participated in
the project over the last 6 months.

- Bots and automated systems that have contributed code to the project.
- Bots and automated systems that have contributed code to the project.

- Individuals that have contributed code to the project in the last 6
months, but have chosen to waive their active contributor status.
- Individuals that have contributed code to the project in the last 6 months, but have chosen to
waive their active contributor status.

- Individuals that have contributed code to the project in the last 6
months, but whose contributions have been rejected or reverted.
- Individuals that have contributed code to the project in the last 6 months, but whose
contributions have been rejected or reverted.

- **Licensors**: The active contributors to the project, weighed by the scope
of their contribution.
- **Licensors**: The active contributors to the project, weighed by the scope of their contribution.

## Decision Making

Decisions are driven democratically, under a direct democracy model. The
decision-making process is as follows:

- **Vote Weight**: The vote weight of a contributor is proportional to their
scope of contribution.

- **Majority Vote**: Decisions are made by a simple majority vote. If the
vote weight of the contributors that vote in favor of a decision is greater
than the vote weight of the contributors that vote against a decision, the
decision is approved.

- **Quorum**: A quorum is the number of active contributors required to
participate in a vote for the vote to be valid. The quorum is defined as
50% of the active contributors.

- **Voting Period**: The voting period is defined as 7 days. The voting
period starts when the vote is proposed, and all supporting information
is provided. The voting period ends 7 days after the vote is proposed.

The decision-making process is designed to ensure that decisions are made by
those who are actively contributing to the project and that the decisions
reflect the will of the active contributors.

Another important aspect of the governance model is the diminishing control of
contributors who have contributed large proportions of code to the project in
the past, but no longer actively contribute. This is to ensure that the project
remains sustainable and that the active contributors are the ones driving the
project forward.

Decisions are made openly and transparently, with discussions and debates
encouraged to ensure that all viewpoints are considered. The scope of decisions
that can be made under this governance model is broad, covering all aspects of
the project, from technical decisions to community management, with one key
exception: the governance model itself, excluding the definitions that are
explicitly stated to be modifiable by the licensors, as well as the examples
that derive from these definitions. This is to be applied in the spirit of
the law, not the letter of the law: changes to particular wording, phrasing or
formatting are allowed, as long as the spirit of the governance model is
preserved.
Decisions are driven democratically, under a direct democracy model. The decision-making process is
as follows:

- **Vote Weight**: The vote weight of a contributor is proportional to their scope of contribution.

- **Majority Vote**: Decisions are made by a simple majority vote. If the vote weight of the
contributors that vote in favor of a decision is greater than the vote weight of the contributors
that vote against a decision, the decision is approved.

- **Quorum**: A quorum is the number of active contributors required to participate in a vote for
the vote to be valid. The quorum is defined as 50% of the active contributors.

- **Voting Period**: The voting period is defined as 7 days. The voting period starts when the vote
is proposed, and all supporting information is provided. The voting period ends 7 days after the
vote is proposed.

The decision-making process is designed to ensure that decisions are made by those who are actively
contributing to the project and that the decisions reflect the will of the active contributors.

Another important aspect of the governance model is the diminishing control of contributors who have
contributed large proportions of code to the project in the past, but no longer actively contribute.
This is to ensure that the project remains sustainable and that the active contributors are the ones
driving the project forward.

Decisions are made openly and transparently, with discussions and debates encouraged to ensure that
all viewpoints are considered. The scope of decisions that can be made under this governance model
is broad, covering all aspects of the project, from technical decisions to community management,
with one key exception: the governance model itself, excluding the definitions that are explicitly
stated to be modifiable by the licensors, as well as the examples that derive from these
definitions. This is to be applied in the spirit of the law, not the letter of the law: changes to
particular wording, phrasing or formatting are allowed, as long as the spirit of the governance
model is preserved.
Loading

0 comments on commit 20137df

Please sign in to comment.