open source training courses about distributed database and distributed systems
# Welcome to learn Talent Plan Courses!

![Talent Plan Logo](media/talent-plan-logo.png)

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 knowledge. As such, it provides a series of courses focused on open source collaboration, rust programming, distributed database and systems.

> Note:

> Each course is developed by different teams, so they may vary in their organization and learning outcomes. Please see the individual course documentation for details.

## Our Courses

### Series 1: Open Source Collaboration

Open source collaboration includes a series of open-source related learning materials to help  enthusiasts gain basic knowledge of what open source software is, the differences between existing open-source software licenses, how to participate in open source projects, and what a welcoming open source community looks like. 

Courses include:

- [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)

### Series 2: Rust Programming

This series is core to TALENT-PLAN. It builds your understanding of Rust as a programming language and provides opportunities for you to practice with it.

Courses include:

- [TP 201: Practical Networked Applications in Rust](courses/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 Rust development subject matter are explored and discussed.

- [TP 202: Distributed Systems in Rust](courses/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 

This series provides information on TinySQL and TinyKV, which are distributed databases in Go.

Courses include:

- [TP 301: TinySQL, a distributed relational database in Go](https://github.com/pingcap-incubator/tinysql)
- [TP 302: TinyKV, a distributed key value database in Go](https://github.com/pingcap-incubator/tinykv) 

### Series 4: Deep Dive into TiDB Ecosystems 

This series provides information on TiDB and TiKV, which are distributed databases developed by PingCAP.

Courses include:

- 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://tidbcommunity.slack.com/join/shared_invite/enQtNzc0MzI4ODExMDc4LWYwYmIzMjZkYzJiNDUxMmZlN2FiMGJkZjAyMzQ5NGU0NGY0NzI3NTYwMjAyNGQ1N2I2ZjAxNzc1OGUwYWM0NzE#/shared-invite/email) 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.
