diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bfe3e5f..bad0af4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -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: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0ab7ee9..cc40329 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 @@ -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. diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 46137ae..b096806 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -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. diff --git a/README.md b/README.md index 8d4390f..c2a439f 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,13 @@ # Plumb: CLI for managing your development projects -Are you sick of having to constantly cd in-and-out of everywhere to set up your -projects? And especially of writing that react project config the umpteenth -time? So are we! +Are you sick of having to constantly cd in-and-out of everywhere to set up your projects? And +especially of writing that react project config the umpteenth time? So are we! -**This is not a stable project in any way! It is in active development,** -**use at your own risk!** +**This is not a stable project in any way! It is in active development,** **use at your own risk!** -Contributions are welcome, feel free to pick up any issue and start -contributing, or if you're unsure, just open a discussion 🙇. +Contributions are welcome, feel free to pick up any issue and start contributing, or if you're +unsure, just open a discussion 🙇. -*Note:* 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:* 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).