tsc/contributing.md

186 lines
6 KiB
Markdown
Raw Permalink Normal View History

# Welcome to the FAIR Package Manager GitHub Repository
Were happy that youre here and want to learn more about the project structure and our different roles.
To learn about the different contribution pathways you can take, you can read [about how to get started](getting-started.md) which has more detail about how you can contribute to the project.
## Contributions
There are many ways to contribute to the project. You can:
- Contribute with a pull request
- Join a discussion on a ticket
- Join a working group
- Contribute to documentation
- Help with developer engagement
- Come to a [meeting](https://zoom-lfx.platform.linuxfoundation.org/meetings/fair-package-manager?view=month)
---
## Active Working Groups
Active working groups are listed here. It is the responsibility of the working group **Organizer** to list the project here while it is active.
**Current active working groups are:**
- [Technical Independence](https://github.com/fairpm/fair-plugin) - responsible for developing a solution to independence from the existing central WP server
- [FAIR](https://github.com/fairpm/fair-protocol) - responsible for the development and operation of The FAIR Package Manager, including server infrastructure, protocol design, and a connector plugin.
- [Community](https://github.com/fairpm/tsc) - a documentation, governance and process-focused initiative to support contributor onboarding and clarify how to engage with the FAIR Package Manager project
Each working group has its own repository for working on its deliverables.
For a list of all groups, past and present, you can read the [Working Groups Documentation](working-groups/README.md)
---
## Code Signing
When committing code to a Project repository, you need to sign your commits by adding this to your commit messages:
```
Signed-off-by: Author Name <authoremail@example.com>
```
If you're unfamiliar with signing commits, here are some resources:
- [Script it](https://stackoverflow.com/a/46536244/2575)
- Cursor/VSCode: go to `Extensions -> Git` and check the option (globally or per project)
- CLI:
```bash
git commit -s
```
---
## Legal Requirements
[To be updated]
### Licensing & Copyright
- You **retain copyright**
- Code contributions must use the **GNU GPL v2 license**
- Docs and content: **Creative Commons Attribution 4.0**
- All code contributions must include a **DCO sign-off**
- Sign-off applies to your employer if applicable
- Project releases use **GPL v2**
- Will follow Upstream Project license terms
- **License exceptions** require a two-thirds TSC vote
- Files should use **SPDX identifiers**
---
## Technical Steering Committee (TSC)
The TSC governs the project, ensures progress, and adheres to governance practices.
### Composition
- **[TSC Chair(s)](organizers.md#tsc-co-chairs)** One or three (voting)
- **[Organizers](organizers.md#tsc-members)** Appointed maintainers and leaders (voting)
- **Contributors** Community members in any capacity (non-voting)
TSC involvement includes all aspects of the project: code, documentation, marketing, accessibility, and more.
### Responsibilities
- Coordinate project direction
- Approve proposals (new ideas, deprecations, scope changes)
- Manage sub-projects
- Create working groups for technical issues
- Appoint collaboration representatives
- Define norms, workflows, release, and security policies
- Set contribution guidelines and resolve issues with the Series Manager
- Vote on multi-project-impacting changes
- Lead marketing, events, and outreach
---
## Project Roles
### Contributor
Anyone contributing in any form, including:
- Code
- Documentation
- Training materials
- Project management
- Translation
- Architecture
- Support
> Contributors to the technical project are not TSC members.
### Organizer
Contributors elevated to leadership roles:
- Modify/approve repository content
- Lead contributors or working groups
**Becoming an Organizer:**
- Requires majority approval of existing Organizers
- An existing Organizer can nominate a Contributor
- Nominee must accept nomination
- When possible, nominations are approved by [lazy consensus](https://www.apache.org/foundation/glossary.html#LazyConsensus)—if no objections are raised within 5 business days, the nomination moves forward
- If objections are raised, a vote will be held
**Removal:**
- Requires majority vote of existing Organizers
> Voting rights limited: related companies can only use up to **30%** of the TSCs total votes per our [Charter](charter.md).
### TSC Chairs
The TSC decides whether to have 1 or 3 chairs. They:
- Run TSC meetings
- Ensure voting process adherence
- Act as primary liaison with the governing board
- May be non-developers
- Cannot all be from the same company (if 3 co-chairs)
#### Nominations
- Nominations for TSC Chair(s) are open to all Organizers
- Interested persons may nominate themselves
- Nominations are facilitated by the Linux Foundation ([example](https://github.com/orgs/fairpm/discussions/43))
#### Term Limits and Rotation
To ensure continuity and stable leadership, Co-Chair terms are staggered as follows:
* All Co-Chair positions serve a three-year term
* To establish staggered terms:
* The initial three Co-Chairs will serve 1-, 2-, and 3-year terms, as agreed upon among themselves
* After the first year, one Co-Chair will rotate off and a new one will be elected annually
* This rotation helps preserve stability by ensuring:
* Only one Co-Chair changes each year
* At least two experienced Co-Chairs remain at all times
---
## Voting Process
- Consensus is preferred
- When necessary, TSC votes: 1 vote per member
- **Quorum**: 50% of voting members required
- **Majority vote** to pass decisions
- Asynchronous voting allowed with:
- 50% participation
- Clear deadline
- Unresolved issues can be escalated to the **Series Manager**
---
## Code of Conduct
We want our project to be **welcoming and inclusive**. All project members must adhere to our Code of Conduct.
👉 **[View the full Code of Conduct here](code-of-conduct.md)**
---