Skip to content

Commit

Permalink
Update talent plan 2.0 (#338)
Browse files Browse the repository at this point in the history
* 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
Soline324 and zz-jason authored Apr 24, 2020
1 parent de5b2ca commit 65559da
Show file tree
Hide file tree
Showing 10 changed files with 403 additions and 36 deletions.
76 changes: 76 additions & 0 deletions CODE_OF_CONDUCT.md
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
24 changes: 24 additions & 0 deletions CONTRIBUTING.md
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
79 changes: 43 additions & 36 deletions README.md
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 &mdash; they do not require any knowledge of or interest in
either TiDB or TiKV.
![Talent Plan Logo](media/talent-plan-logo.png)

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.
13 changes: 13 additions & 0 deletions courses/README.md
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)
69 changes: 69 additions & 0 deletions courses/tp101-intro-to-oss.md
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
89 changes: 89 additions & 0 deletions courses/tp102-how-to-use-git-github.md
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.
Loading

0 comments on commit 65559da

Please sign in to comment.