PingCAP Incubator Program is inspired by the CNCF incubating process. The process is designed to ensure that new features and projects have correct licensing, up-to-date boilerplate documents, a healthy community process, and are developed using accepted PingCAP Community practices.
All programs should follow the incubating process to start a project. PingCAP would offer resources when a project is confirmed.
Once going through the incubation process, they can either be merged to tidb/tikv repo or being moved from PingCAP Incubator to PingCAP or TiKV organization.
Welcome to join TiDB Community Slack Workspace and feel free to contact us in the #incubator channel if any question or suggestion.
- What you are going to incubate?
- Features Incubation Process
- Projects Incubation Process
- Benefits
- Features and Projects
-
If what you want to incubate is a feature that needs to be merged into an existing project on PingCAP or TiKV organization, please follow Features Incubation Process
-
If what you want to incubate is a project intended to become a new project on PingCAP or TiKV organization and designed to extend one or more PingCAP/TiKV projects with functionality, please follow Projects Incubation Process
To create a new feature, follow these steps:
You can write a proposal via GitHub Issue (see example) and submit it to the pingcap/community repository. Your proposal should include the following items:
- Problems to be solved
- Initial team members and the expected number of team members at least
- Estimated completion time. Generally, features are expected to complete within 3 months.
- Link to your Design Document.
- Design Document of TiKV features should be proposed via an RFC (Request for Comment) to tikv repository (see How to submit an RFC to TiKV)
- Design Document of TiDB features should be proposed via a PR (Pull Request) to tidb repository (see TiDB Design Documents Proposal Process)
- Design Document of other features should be proposed via a PR (Pull Request) to community repository (see PingCAP RFCs)
Once your proposal is submitted, you will get 1-2 Mentors from the community. Mentors will express their intentions to support the program by replying to the proposal and help guide the team through the process. The majority of the mentorship, review, and advice will come from the Mentor(s).
Once a proposed feature receives 2 approvals from PMC(2 LGTM from the PMC members on the Proposal Issue), it can enter the incubation procedure. The PMC expresses their approvals by replying "LGTM" (look good to me) to the proposal.
The recruitment of team members is expected to be completed within 1 week after PMC's approval. If the recruitment of members is not completed within the specified time, PMC will assist the team formation or delay the project approval.
The incubation process will be traced via a working group (see Woking Group Governance. Once your proposal is approved, The first order of business is to create a related working group (see the Create section of the Woking Group Governance.
Regular updates in the process are required as well. Features are expected to submit an intermi report to the mentor diretly.
Incubating features graduation process includes the following items:
- Create a pull request for graduation
- PMC members arrange a graduation presentation (if necessary)
- PMC members express their agreement by replying "LGTM (look good to me)" to the pull request
- The related working group disbands
To create a new incubating project, follow these steps:
You can write a proposal via GitHub Issue (see example) and submit it to community repository. Your proposal should include the following items:
- Problems to be solved.
- Initial team members and the expected number of team members at least.
- Estimated completion time. Generally, Projects are expected to complete within 12 months.
- Link to your Design Document which should be proposed via a PR (Pull Request) to pingcap/community repository (see Design Template) preferred maturity level and evidence (see Projects Approval Criteria.
Once your proposal is submitted, you will get at least 2 Mentors from the community. Mentors will express their intentions to support the program by replying to the proposal and help guide the team through the process. The majority of the mentorship, review, and advice will come from the Mentor(s).
Projects approval criteria depends on the preferred maturity level and evidence provided.
Once a proposed project receives 2 approvals from PMC(2 LGTM from the PMC members on the Proposal Issue), it can enter the incubation procedure. The PMC expresses their approvals by replying "LGTM" (look good to me) to the proposal.
The recruitment of team members is expected to be completed within 1 week after PMC's approval. If the recruitment of members is not completed within the specified time, PMC will assist the team formation or delay the project approval.
The incubation process will be traced via a working group (see Woking Group Governance. Once your proposal is approved, The first order of business is to create a related working group (see the Create section of the Woking Group Governance).
Each approved project will get a new GitHub repo created in pingcap-incubator organization. Project owners are expected to add the following files to the repo:
README.md
for the projectOWNERS.md
as defined in the accepted proposalCONTRIBUTING.md
file based on PingCAP Community's CONTRIBUTING.mdCODE_OF_CONDUCT.md
based on PingCAP Community's CODE_OF_CONDUCT.mdLICENSE
which must be Apache 2.0 for code projects and documentation repositories, without any custom content
To help you get started with these files, you can find the corresponding templates at PingCAP Template Project.
For each incubating project, a monthly report is required to send to the mentor before the 10th of every month. And the monthly report should be an open file on the internet. Google Doc is recommended.
When the majority of the project members determine they have met the criteria to be promoted to a higher maturity stage, they should contact their Mentors to discuss. If the Mentors agree that the maturity criteria have been met, the project organizer can create a pull request at their quarterly meeting.
PMC will arrange a promotion presentation for the project. Maturity Level Review follows Projects Approval criteria.
Projects follow the same graduation process as features, as described below:
- Create a pull request for graduation
- PMC members arrange a graduation presentation (if necessary)
- PMC members express their agreement by replying “LGTM (look good to me)” to the pull request
- The related working group disbands
Graduation criteria for projects: see Projects Approval Criteria
An incubation project will be considered retired if it meets either of the following situations:
- Fails to graduate within 12 months.
- Fails to make a release for 3 months.
A reminder email will be sent 3 weeks before retirement. A project can be re-incubated after retirement but must go through the incubation process from the beginning, the same as any new project. Retirement of the project indicates the retirement of the members and mentors in the project.
PingCAP wants to build a healthy community ecosystem. All community programs are welcomed to join the PingCAP Incubator Program. The incubator program will get full support by PingCAP and the community.
-
Rich resources support:
- Great Mentors:
- At least 2 mentors with the ability to provide technical and practical guide to the project
- Mentors with high community roles (Developer community Committer or TiDB UserGroup Ambassador)
- PingCAP
- Official learning resources
- Necessary tutoring lessons
- Marketing campaign and promotion for the project and
- Great Mentors:
-
Open Source experience:
- First-hand practical experience
- The participant fully as an organizer or community member
- The project will be maintained continuously after it is finished
Check the proposal of ongoing features here.
Check the proposal of ongoing projects here.
If you would like to join an existing incubator program, please find the corresponding slack channel and working group in the active working groups.