-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* update talent plan 2.0 * delete useless blank line * couses/README: fix typo * Delete .gitignore * delete duplicate files * update courses * try to resolve conflicts * Delete .gitignore * Apply suggestions from code review delete useless blank lines * Apply suggestions from code review Co-Authored-By: Zhang Jian <[email protected]> * Apply suggestions from code review Co-authored-by: Zhang Jian <[email protected]>
- Loading branch information
Showing
10 changed files
with
403 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# Contributor Covenant Code of Conduct | ||
|
||
## Our Pledge | ||
|
||
In the interest of fostering an open and welcoming environment, we as | ||
contributors and maintainers pledge to making participation in our project and | ||
our community a harassment-free experience for everyone, regardless of age, body | ||
size, disability, ethnicity, sex characteristics, gender identity and expression, | ||
level of experience, education, socio-economic status, nationality, personal | ||
appearance, race, religion, or sexual identity and orientation. | ||
|
||
## Our Standards | ||
|
||
Examples of behavior that contributes to creating a positive environment | ||
include: | ||
|
||
* Using welcoming and inclusive language | ||
* Being respectful of differing viewpoints and experiences | ||
* Gracefully accepting constructive criticism | ||
* Focusing on what is best for the community | ||
* Showing empathy towards other community members | ||
|
||
Examples of unacceptable behavior by participants include: | ||
|
||
* The use of sexualized language or imagery and unwelcome sexual attention or | ||
advances | ||
* Trolling, insulting/derogatory comments, and personal or political attacks | ||
* Public or private harassment | ||
* Publishing others' private information, such as a physical or electronic | ||
address, without explicit permission | ||
* Other conduct which could reasonably be considered inappropriate in a | ||
professional setting | ||
|
||
## Our Responsibilities | ||
|
||
Project maintainers are responsible for clarifying the standards of acceptable | ||
behavior and are expected to take appropriate and fair corrective action in | ||
response to any instances of unacceptable behavior. | ||
|
||
Project maintainers have the right and responsibility to remove, edit, or | ||
reject comments, commits, code, wiki edits, issues, and other contributions | ||
that are not aligned to this Code of Conduct, or to ban temporarily or | ||
permanently any contributor for other behaviors that they deem inappropriate, | ||
threatening, offensive, or harmful. | ||
|
||
## Scope | ||
|
||
This Code of Conduct applies both within project spaces and in public spaces | ||
when an individual is representing the project or its community. Examples of | ||
representing a project or community include using an official project e-mail | ||
address, posting via an official social media account, or acting as an appointed | ||
representative at an online or offline event. Representation of a project may be | ||
further defined and clarified by project maintainers. | ||
|
||
## Enforcement | ||
|
||
Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||
reported by contacting the project team at [[email protected]](mailto:[email protected]). All | ||
complaints will be reviewed and investigated and will result in a response that | ||
is deemed necessary and appropriate to the circumstances. The project team is | ||
obligated to maintain confidentiality with regard to the reporter of an incident. | ||
Further details of specific enforcement policies may be posted separately. | ||
|
||
Project maintainers who do not follow or enforce the Code of Conduct in good | ||
faith may face temporary or permanent repercussions as determined by other | ||
members of the project's leadership. | ||
|
||
## Attribution | ||
|
||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, | ||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html | ||
|
||
[homepage]: https://www.contributor-covenant.org | ||
|
||
For answers to common questions about this code of conduct, see | ||
https://www.contributor-covenant.org/faq |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Contributing Guide | ||
|
||
Thanks for taking the time to contribute to Talent Plan! Contributions of any kind are welcome. | ||
|
||
## Ways to contribute | ||
|
||
We love contributions from the community. Here are just a few of the ways you can contribute: | ||
|
||
- **Report bugs:** if you find a bug while taking courses, you may want to do a quick check of past issues to see if you can find any help there. Otherwise, create a new bug issue in the course repository using the provided template. | ||
- **Answer questions:** check out the open issues to see if you can help answer learner questions. | ||
- **Suggest changes:** this could come in the form of a new learning outcome, updates to the content, updates to the bot responses, or the logic of the course. If you'd like, you can fork the course and suggest the change that way, but most people like to talk about it first in an issue. | ||
- **Tackle an issue:** if you see an issue you would like to resolve, please feel free to fork the course and submit a PR (check out the instructions below). | ||
- **Translate a course:** if you have the ability to translate a course, we'd love to see it. Please fork the course and submit a PR. We'll need a second native speaker to confirm the translation so if you have anyone in mind, please @ mention them in your PR for a review. | ||
|
||
|
||
## How to Contribute | ||
|
||
1. Check out which [contributions](#ways-to-contribute) above you are willing to make | ||
1. Fork this repository. | ||
2. Commit your changes to your branch | ||
3. Open a pull request to upstream | ||
4. Request a review from the reviewers | ||
|
||
Want to konw more about how to use Git & GitHub to make contributions? Click [how to use Git & GitHub](courses/tp102-how-to-use-git-github.md) courses for more help |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,50 +1,57 @@ | ||
# PingCAP Talent Plan | ||
# Welcome to learn Talent Plan Courses! | ||
|
||
This is a series of training courses about writing distributed systems in Go and | ||
Rust. It is maintained by PingCAP for training and/or evaluating students, new | ||
employees, and new contributors to [TiDB] and [TiKV]. As such, the courses focus | ||
on subjects relevant to those projects. They are though appropriate for all Go | ||
and Rust programmers — they do not require any knowledge of or interest in | ||
either TiDB or TiKV. | ||
 | ||
|
||
The courses primarily consist of projects (or "labs") where coding problems are | ||
presented, along with a partial implementation or API description, and a test | ||
suite. | ||
Talent Plan is an open source training program initiated by PingCAP. It aims to create or combine some open source learning materials for people interested in open source, distributed systems, Rust, Golang, and other infrastructure knowledges. As such, a series of courses focused on open source collaboration, rust programming, distributed database and systems are provided. | ||
|
||
Each course is developed independently, so they vary in their presentation and | ||
their expectations from course-takers. See the individual course documentation | ||
for details. | ||
> Note: | ||
[TiDB]: https://github.com/pingcap/tidb | ||
[TiKV]: https://github.com/tikv/tikv | ||
> Each course is developed independently, so they vary in their presentation and their expectations from course-takers. Please see the individual course documentation for details. | ||
## Our Courses | ||
|
||
## Training courses | ||
### Series 1: Open Source Collaboration | ||
|
||
- **[Practical Networked Applications in Rust][rust]**. A series of projects | ||
that incrementally develop a single Rust project from the ground up into a | ||
high-performance, networked, parallel and asynchronous key/value store. Along | ||
the way various real-world and practical Rust development subject matter are | ||
explored and discussed. | ||
Open source collaboration includes a series of open source related learning mateials to help open source enthusiasts have a basic knowledge of what open source software is, the differences among kinds of open source software licenses, how to participate in open source projects and what a welcoming open source community looks like. Courses of this series are: | ||
|
||
- **[Distributed Systems in Rust][dss]**. Adapted from the [MIT 6.824] | ||
distributed systems coursework, this course focuses on implementing important | ||
distributed algorithms, including the [Raft] consensus algorithm, and the | ||
[Percolator] distributed transaction protocol. | ||
- [TP 101: Introduction to open source software](courses/tp101-intro-to-oss.md) | ||
- [TP 102: How to use Git and GitHub](courses/tp102-how-to-use-git-github.md) | ||
- [TP 103: Build a welcoming community](courses/tp103-open-source-community.md) | ||
|
||
- **[Distributed Systems in Go][go]**. A course on implementing algorithms | ||
necessary in distributed databases, including map reduce, and parallel query | ||
optimization. | ||
### Series 2: Rust Programming | ||
|
||
[rust]: ./rust/ | ||
[dss]: ./dss/ | ||
[go]: ./tidb/ | ||
Two courses are included in this series, which are: | ||
|
||
[MIT 6.824]: http://nil.csail.mit.edu/6.824/2017/index.html | ||
[Raft]: https://raft.github.io/ | ||
[Percolator]: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36726.pdf | ||
- [TP 201: Practical Networked Applications in Rust](rust/README.md). A series of projects that incrementally develop a single Rust project from the ground up into a high-performance, networked, parallel and asynchronous key/value store. Along the way various real-world and practical Rust development subject matter are explored and discussed. | ||
|
||
- [TP 202: Distributed Systems in Rust](dss/README.md). Adapted from the [MIT 6.824](http://nil.csail.mit.edu/6.824/2017/index.html) distributed systems coursework, this course focuses on implementing important distributed algorithms, including the [Raft](https://raft.github.io/) consensus algorithm, and the [Percolator](https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36726.pdf) distributed transaction protocol. | ||
|
||
### Series 3: Distributed Database | ||
|
||
Two courses are included in this series, which are: | ||
|
||
- [TP 301: TinyKV, a distributed key value database in Go](https://github.com/pingcap-incubator/tinykv) | ||
- [TP 302: TinySQL, a distributed relational database in Go](https://github.com/pingcap-incubator/tinysql) | ||
|
||
### Series 4: Deep Dive into TiDB Ecosystems | ||
|
||
- TP 401: Deep Dive into TiDB(WIP) | ||
- TP 402: Deep Dive into TiKV(WIP) | ||
|
||
|
||
See [Courses](courses/README.md) for more details | ||
|
||
# Contributing to talent plan | ||
|
||
Contributions of any kind are welcome! Check out the [Contributing Guide](CONTRIBUTING.md) in this repository for more information on how you can contribute to talent plan. | ||
|
||
We love our community and take great care to ensure it is fun, safe and rewarding. Please review our [Code of Conduct](/CODE_OF_CONDUCT.md) for community expectations and guidelines for reporting concerns. | ||
|
||
|
||
## We're here to help | ||
|
||
If you have questions about building (or taking) courses, you can ask in the channel **#wg-talent-plan-courses** of the [tidbcommunity](https://pingcap.com/tidbslack/) slack workspace. | ||
|
||
## License | ||
|
||
These courses may be freely used and modified for any purpose, under the terms | ||
of each course's individual license. See the courses for details. | ||
These courses may be freely used and modified for any purpose, under the terms of each course's individual license. See the courses for details. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# All public courses | ||
|
||
Here we list all public courses of Talent Plan, including: | ||
|
||
- [TP 101: Introduction to open source software](tp101-intro-to-oss.md) | ||
- [TP 102: How to use Git and GitHub](tp102-how-to-use-git-github.md) | ||
- [TP 103: Build a welcoming community](tp103-open-source-community.md) | ||
- [TP 201: Practical Networked Applications in Rust](rust/README.md) | ||
- [TP 202: Distributed Systems in Rust](dss/README.md) | ||
- [TP 301: TinyKV, a distributed key value database in Go](https://github.com/pingcap-incubator/tinykv) | ||
- [TP 302: TinySQL, a distributed relational database in Go](https://github.com/pingcap-incubator/tinysql) | ||
- TP 401: Deep Dive into TiDB(WIP) | ||
- TP 402: Deep Dive into TiKV(WIP) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# TP 101: Introduction to Open Source Software | ||
|
||
This course includes a collection of some open source software related learning materials and will walk you through some of the key concepts of open source. | ||
|
||
***Important note:*** ***Introduction to Open Source Software is in an alpha | ||
state.*** Its scope is limited. If you are taking it now you | ||
are brave, but you are also an early tester and your feedback is greatly | ||
appreciated. You are encouraged to reporting bugs, suggest changes, update the contents, etc. **See [Contributing Guide](../CONTRIBUTING.md)for more details.** | ||
|
||
## Who this is for | ||
|
||
Anyone interesed in open source | ||
|
||
## What you will learn? | ||
|
||
* what open source software is | ||
* the history of open source software and what benefits it has provided to the world’s technology infrastructure over the decades | ||
* different licensing models that are available, as this will help you decide what the best license is for your project. | ||
* open source organizations and the roles of foundations in open source projects | ||
|
||
### Prerequisites: | ||
|
||
None. This course is a great introduction for you to learn open source. | ||
|
||
## Course details | ||
|
||
### Chapter 1: Open Source Overview | ||
|
||
**Learning Materials:** | ||
|
||
* [What is Open Source explained in LEGO](https://www.youtube.com/watch?v=a8fHgx9mE5U), a video made by [Socialsquare](https://www.youtube.com/user/bitblueprint), can help you easily understand the idea of Open Source, even for people with no prior knowledge of Open Source or Free Software. | ||
* [6 pivotal moments in open source history](https://opensource.com/article/18/2/pivotal-moments-history-open-source), a blog written by [Dave Neary](https://opensource.com/users/dneary), can help you learn about the key moments in the history of open source. | ||
* [Why Open Source](https://ben.balter.com/2015/11/23/why-open-source/), a blog written by [Ben Balter](https://ben.balter.com/about/), listed many reasons why you might consider consuming, publishing, collaborating on, or supporting open source. | ||
* [Open Source vs. Closed Source Software](https://www.youtube.com/watch?v=2q91vTvc7YE), a video where you can learn about the differences between open-source software and closed-source software | ||
* [The Future of Open Source?](https://www.youtube.com/watch?v=ZCmqeOHhjzk&t=32s) | When Open Source gets monetized, a video talks about what the future of open source looks like. | ||
|
||
### Chapter 2: Open Source Licenses | ||
|
||
**Learning Materials:** | ||
|
||
* [Licenses & Standards](https://opensource.org/licenses) shows the general accepted licenses, which has undergone rigorous review by the open source legal community. | ||
* [Open Source Licenses Comparison [Guide]](https://itsfoss.com/open-source-licenses-explained/) gives an effective Open Source licenses comparison. With Open Source licenses explained there, it should help you choose the right Open Source license for your project. | ||
* [The Legal Side of Open Source](https://opensource.guide/legal/) tells everything you've ever wondered about the legal side of open source, and a few things you didn't. | ||
|
||
### Chapter 3: Open Source Organizations | ||
|
||
**Learning Materials:** | ||
|
||
* [Open source organizations](https://opensource.com/resources/organizations) listed some open source organizations providing processes for managing intellectual property, accepting financial contributions, and other infrastructure and stewardship that growing projects need, such as Apache Software Foundation, Cloud Native Computing Foundation, Linux Foundation, and so on. | ||
* [The Role of Foundations in Open Source Projects](https://livablesoftware.com/study-open-source-foundations/), a blog posted by Javier Cánovas, who studied the role of foundations in open source software development with his/her friends, and found that very few foundations are devoted to providing complete support to the projects they endorse, and that their mission is more directed towards providing legal support and leading evangelizing actions. | ||
|
||
### Suggeted Assignments | ||
|
||
You can self-test your learning outcomes by drawing a mindmap of (either of them) : | ||
|
||
* open source history | ||
* pros and cons of open source | ||
* how to choose an open source license | ||
|
||
The mindmap is encourged to be submitted by creating a pull request to the this course. Learn how to create a pull request in [TP 102: How to Use Git and GitHub](tp102-how-to-use-git-github.md) | ||
|
||
## Users who took this course also took | ||
|
||
* [TP 102: How to Use Git and GitHub](tp102-how-to-use-git-github.md) | ||
* [TP 103: Build A Welcoming Open Source Community](tp103-open-source-community.md) | ||
|
||
## Acknowledgement | ||
|
||
Special Thanks to `Jamie Xu`, `Lillian Li`, `Ran Huang`, and `Weiwei Wang` for testing this course and updating the materials |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# TP 102: How to Use Git and GitHub | ||
|
||
Git and GitHub are commonly used tools in open source practice. Whether you are considering contribute to an open source project or start your own open source project. This course includes a collection of Git and GitHub related learning materials and will guide you through everything you need to start contributing, from managing notifications to merging pull requests. | ||
|
||
***Important note:*** ***How to Use Git and GitHub is in an alpha | ||
state.*** Its scope is limited. If you are taking it now you | ||
are brave, but you are also an early tester and your feedback is greatly | ||
appreciated. You are encouraged to reporting bugs, suggest changes, update the contents, etc. **See [Contributing Guide](../CONTRIBUTING.md) for more details.** | ||
|
||
|
||
## Who this is for | ||
|
||
New GitHub users, users new to Git | ||
|
||
## What you will learn? | ||
|
||
* what GitHub is | ||
* how to use GitHub | ||
* how to create a branch and a commit | ||
* how to review a pull request | ||
* how to manage merge conflicts | ||
* how to communicate using Markdown | ||
|
||
### Prerequisites: | ||
|
||
None. This course is a great introduction for your first day on GitHub. | ||
|
||
## Course details | ||
|
||
### Chapter 1: Introduction to GitHub | ||
|
||
**Learing Material(s):** | ||
|
||
* [Introduction to GitHub](https://lab.github.com/githubtraining/introduction-to-github), an open source course created by [The GitHub Training Team](https://lab.github.com/githubtraining) | ||
|
||
**Suggested Assignments: ** | ||
|
||
* Finish the lab. | ||
|
||
### Chapter 2: Reviewing pull requests | ||
|
||
**Learing Material(s):** | ||
|
||
* [Reviewing pull requests](https://lab.github.com/githubtraining/reviewing-pull-requests), an open source course created by [The GitHub Training Team](https://lab.github.com/githubtraining) | ||
|
||
**Suggested Assignments:** | ||
|
||
* Finish the lab. | ||
|
||
### Chapter 3: Managing merge conflicts | ||
|
||
**Learing Material(s):** | ||
|
||
* [Managing merge conflicts](https://lab.github.com/githubtraining/managing-merge-conflicts), an open source course created by [The GitHub Training Team](https://lab.github.com/githubtraining) | ||
|
||
**Suggested Assignments:** | ||
|
||
* Finish the lab. | ||
|
||
### Chapter 4: Communicating using Markdown | ||
|
||
**Learing Material(s):** | ||
|
||
* [Communicating using Markdown](https://lab.github.com/githubtraining/communicating-using-markdown), an open source course created by [The GitHub Training Team](https://lab.github.com/githubtraining) | ||
|
||
**Suggested Assignments:** | ||
|
||
* Finish the lab. | ||
|
||
### Chapter 5: Git Handbook | ||
|
||
* [Git Handbook](https://guides.github.com/introduction/git-handbook/), the official learning material provided by [GitHub Guides](https://guides.github.com/) | ||
|
||
**Suggested Assignments:** | ||
|
||
No assignments, the git skill will be tested all the time you participate in an open source project. | ||
|
||
## Users who took this course also took | ||
|
||
* [TP 101: Introduction to Open Source Software](tp101-intro-to-oss.md) | ||
* [TP 103: Build A Welcoming Open Source Community](tp103-open-source-community.md) | ||
|
||
|
||
## Acknowledgement | ||
|
||
Special Thanks to: | ||
|
||
* `Producer Wen`, `Qinyao Yang`, and `Jason Zhangg`for testing this course and updating the materials. | ||
* [The GitHub Training Team](https://lab.github.com/githubtraining) for creating open source courses above. |
Oops, something went wrong.