ClickHouse OpenSource community

ClickHouse OpenSource community

About me

Maksim, developer of ClickHouse.

Plan

1. Introduction.

2. Statistics.

3. OpenSource community.

4. Code-review and contribution processes.

Introduction

ClickHouse is an open-source, high performance columnar OLAP database management system for real-time analytics using SQL.

https://clickhouse.com/

Repository

All development is on GitHub.

ClickHouse as of December 24 2021.

21200 stars.

4200 forks.

867 contributors.

https://github.com/ClickHouse/ClickHouse

Pull request statistics

Core engineering team 15 people.

400 pull requests per month.

4 big pull requests per month (More than 5k LOC).

95 percent of external pull requests merged.

46 percent of new code is external.

Releases

Release each month.

Include tons of improvement, bug fixes, new features.

https://clickhouse.com/docs/en/whats-new/changelog/

OpenSource community

46 percent of new code is from external contributors.

Contributions include not only pull requests:

1. Translation of documentation.

2. Drivers for JDBC, ODBC, Go.

3. Answers on question GitHub issues.

Interaction with community

1. Pull requests review.

2. Managing issues on GitHub.

3. Public roadmap.

4. Answering questions on GitHub, Google groups, Telegram chats.

5. Meetups (Release meetups, Community meetups).

Pull requests

Pull requests authors

Pull request review

1. Everyone from core team can merge.

2. Single code reviewer is enought, big pull requests can be discussed as whole team.

3. Robust continious integration pipeline.

4. All author commits are included.

5. Keep small count of code-review iterations.

6. If pull request is abandoned independently merge it, author contribution is appreciated.

Continious integration

1. Unit, functional, integation tests.

2. Sanitizers (MSan, UBSan, Tsan, Address).

3. Static linters (clang-tidy, clang-format).

4. Performance tests.

5. Fuzzers.

Contibution process

1. Implement some feature needed for your ClickHouse setup.

2. Experience on production project.

3. Implement some interesting task from our roadmap (public available).

4. Feature can be implemented without a lot of codebase changes. For example adding function, aggregate function, change parser.

5. Easy to find task to work.

Examples

Examples

Examples

Questions?