ClickHouse/website/blog/en/2020/the-clickhouse-community.md

246 lines
14 KiB
Markdown
Raw Normal View History

---
title: 'The ClickHouse Community'
2020-12-10 20:05:51 +00:00
image: 'https://blog-images.clickhouse.tech/en/2020/the-clickhouse-community/clickhouse-community-history.png'
date: '2020-12-10'
author: '[Robert Hodges](https://github.com/hodgesrm)'
tags: ['community', 'open source', 'telegram', 'meetup']
---
One of the great “features” of ClickHouse is a friendly and welcoming
community. In this article we would like to outline how the ClickHouse
community arose, what it is today, and how you can get involved. There
is a role for everyone, from end users to contributors to corporate
friends. Our goal is to make the community welcoming to every person
who wants to join.
But first, lets review a bit of history, starting with how ClickHouse
first developed at [Yandex](https://yandex.com/company/).
## Origins at Yandex
ClickHouse began as a solution for web analytics in [Yandex
Metrica](https://metrica.yandex.com/about?). Metrica is a popular service for analyzing website traffic that
is now #2 in the market behind Google Analytics. In 2008 [Alexey Milovidov](https://github.com/alexey-milovidov),
an engineer on the Metrica team, was looking for a database that could
create reports on metrics like number of page views per day, unique
visitors, and bounce rate, without aggregating the data in advance. The
idea was to provide a wide range of metric data and let users ask any
question about them.
This is a classic problem for data warehouses. However, Alexey could
not find one that met Yandex requirements, specifically large datasets,
linear scaling, high efficiency, and compatibility with SQL tools. In
a nutshell: like MySQL but for analytic applications. So Alexey wrote
one. It started as a prototype to do GROUP BY operations.
The prototype evolved into a full solution with a name, ClickHouse,
short for “Clickstream Data Warehouse”. Alexey added additional
features including SQL support and the MergeTree engine. The SQL dialect
was superficially similar to MySQL, [which was also used in Metrica](https://clickhouse.tech/blog/en/2016/evolution-of-data-structures-in-yandex-metrica/) but
could not handle query workloads without complex pre-aggregation. By
2011 ClickHouse was in production for Metrica.
Over the next 5 years Alexey and a growing team of developers extended
ClickHouse to cover new use cases. By 2016 ClickHouse was a core Metrica
backend service. It was also becoming entrenched as a data warehouse
within Yandex, extending to use cases like service monitoring, network
flow logs, and event management. ClickHouse had evolved from the original
one-person project to business critical software with a full team of a
dozen engineers led by Alexey.
By 2016, ClickHouse had an 8 year history and was ready to become a major
open source project. Heres a timeline that tracks major developments
as a time series.
<img src="https://blog-images.clickhouse.tech/en/2020/the-clickhouse-community/clickhouse-community-history.png"/>
## ClickHouse goes open source
Yandex open sourced ClickHouse under an Apache 2.0 license in 2016. There
were numerous reasons for this step.
* Promote adoption within Yandex by making it easier for internal departments to get builds.
* Ensure that ClickHouse would continue to evolve by creating a community to nurture it.
* Motivate developers to contribute to and use ClickHouse due to the open source “cool” factor.
* Improve ClickHouse quality by making the code public. Nobody wants their name visible on bad code. ;-)
* Showcase Yandex innovation to a worldwide audience
Alexey and the development team moved ClickHouse code to a Github repo
under the Yandex organization and began issuing community builds as well
as accepting external contributions. They simultaneously began regular
meetups to popularize ClickHouse and build a community around it. The
result was a burst of adoption across multiple regions of the globe.
ClickHouse quickly picked up steam in Eastern Europe. The first ClickHouse
meetups started in 2016 and have grown to include 200 participants for
in-person meetings and up to 400 for online meetings. ClickHouse is
now widely used in start-ups in Russia as well as other Eastern European
countries. Developers located in Eastern Europe continue to supply more
contributions to ClickHouse than any other region.
ClickHouse also started to gain recognition in the US and Western Europe.
[CloudFlare](https://www.cloudflare.com/) published a widely read blog
article about [their success using ClickHouse for DNS analytics](https://blog.cloudflare.com/how-cloudflare-analyzes-1m-dns-queries-per-second/). Alexander
Zaitsev successfully migrated an ad tech analytics system from a
commercial DBMS to a ClickHouse cluster. This success prompted him to
found [Altinity](https://altinity.com) in 2017 with help from friends at
[Percona](https://www.percona.com). US meetups
started in the same year. With support from Altinity these have grown
to over 100 attendees for online meetings.
ClickHouse also took off in China. The first meetup in China took place
in 2018 and attracted enormous interest. In-person meetups included over
400 participants. Online meetings have reached up to 1000 online viewers.
In 2019 a further step occurred as ClickHouse moved out from under the
Yandex Github organization into a separate [ClickHouse organization](https://github.com/ClickHouse). The
new organization includes ClickHouse server code plus core ecosystem
projects like the cpp and ODBC drivers.
ClickHouse community events shifted online following world-wide
disruptions due to COVID-19, but growth in usage continued. One
interesting development has been the increasing number of startups using
ClickHouse as a backend. Many of these are listed on the
[ClickHouse Adopters](https://clickhouse.tech/docs/en/introduction/adopters/)
page. Also, additional prominent companies like eBay, Uber, and
Flipcart went public in 2020 with stories of successful ClickHouse usage.
## The ClickHouse community today
As of 2020 the ClickHouse community includes developers and users from
virtually every region of the globe. Yandex engineers continue to supply
a majority of pull requests to ClickHouse itself. Altinity follows
in second place with contributions to ClickHouse core and ecosystem
projects. There is also substantial in-house development on ClickHouse
(e.g. on private forks) within Chinese internet providers.
The real success, however, has been the huge number of commits to ClickHouse core from people in outside organizations. The following list shows the main outside contributors:
* Azat Khuzhin
* Amos Bird
* Winter Zhang
* Denny Crane
* Danila Kutenin
* Hczhcz
* Marek Vavruša
* Guillaume Tassery
* Sundy Li
* Mikhail Shiryaev
* Nicolae Vartolomei
* Igor Hatarist
* Andrew Onyshchuk
* BohuTANG
* Yu Zhi Chang
* Kirill Shvakov
* Alexander Krasheninnikov
* Simon Podlipsky
* Silviu Caragea
* Flynn ucasFL
* [And over 550 more](https://github.com/ClickHouse/ClickHouse/graphs/contributors)...
ClickHouse ecosystem projects are also growing rapidly. Here is a selected list of active Github projects that help enable ClickHouse applications, sorted by number of stars.
* [sqlpad/sqlpad](https://github.com/sqlpad/sqlpad) -- Web-based SQL editor that supports ClickHouse
* [mindsdb/mindsdb](https://github.com/mindsdb/mindsdb) -- Predictive AI layer for databases with ClickHouse support
* [x-ream/sqli](https://github.com/x-ream/sqli) -- ORM SQL interface
* [tricksterproxy/trickster](https://github.com/tricksterproxy/trickster) -- HTTP reverse proxy cache and time series dashboard accelerator
* [ClickHouse/clickhouse-go](https://github.com/ClickHouse/clickhouse-go) -- Golang driver for ClickHouse
* [gohouse/gorose](https://github.com/gohouse/gorose) -- A mini database ORM for Golang
* [ClickHouse/clickhouse-jdbc](https://github.com/ClickHouse/clickhouse-jdbc) -- JDBC driver for ClickHouse
* [brockercap/Bifrost](https://github.com/brokercap/Bifrost) -- Middleware to sync MySQL binlog to ClickHouse
* [mymarilyn/clickhouse-driver](https://github.com/mymarilyn/clickhouse-driver) -- ClickHouse Python driver with native interface support
* [Vertamedia/clickhouse-grafana](https://github.com/Vertamedia/clickhouse-grafana) -- Grafana datasource for ClickHouse
* [smi2/phpClickHouse](https://github.com/smi2/phpClickHouse) -- PHP Clickhouse client
* [Altinity/clickhouse-operator](https://github.com/Altinity/clickhouse-operator) -- Kubernetes operator for ClickHouse
* [AlexAkulov/clickhouse-backup](https://github.com/AlexAkulov/clickhouse-backup) -- ClickHouse backup and restore using cloud storage
* [And almost 1200 more](https://github.com/search?o=desc&p=1&q=clickhouse&s=stars&type=Repositories)...
## Resources
With the community growth numerous resources are available to users. At
the center is the [ClickHouse org on Github](https://github.com/ClickHouse), which hosts [ClickHouse
server code](https://github.com/ClickHouse/ClickHouse). ClickHouse server documentation is available at the
[clickhouse.tech](https://clickhouse.tech/) website. It has [installation instructions](https://clickhouse.tech/docs/en/getting-started/install/) and links to
ClickHouse community builds for major Linux distributions as well as Mac,
FreeBSD, and Docker.
In addition, ClickHouse users have a wide range of ways to engage with
the community and get help on applications. These include both chat
applications as well as meetups. Here are some links to get started.
* Yandex Meetups -- Yandex has regular in-person and online Russian-language meetups. Watch for announcements on the [clickhouse.tech](https://clickhouse.tech/) site and [Telegram](https://t.me/clickhouse_ru).
* [SF Bay Area ClickHouse Meetup](https://www.meetup.com/San-Francisco-Bay-Area-ClickHouse-Meetup/) -- The largest US ClickHouse meetup, with meetings approximately every 2 months.
* Chinese meetups occur at regular intervals with different sponsors. Watch for announcements on clickhouse.tech.
* Telegram - By far the largest forum for ClickHouse. It is the best place to talk to ClickHouse devs. There are two groups.
* [ClickHouse не тормозит](https://t.me/clickhouse_ru) (“Clickhouse does not slow down”) - Russian language Telegram group with 4,629 members currently.
* [ClickHouse](https://t.me/clickhouse_en) -- English language group with 1,286 members.
* [ClickHouse Community Slack Channel](http://clickhousedb.slack.com) -- Public channel for Slack users. It currently has 551 members.
* [Clickhouse.com.cn](http://clickhouse.com.cn/) -- Chinese language site for ClickHouse-related announcements and questions.
* [Conference Presentations](https://github.com/ClickHouse/clickhouse-presentations) -- ClickHouse developers like to talk and do so whenever they can. Many recent presentations are stored in Github. Also, look for ClickHouse presentations at Linux Foundation conferences, Data Con LA, Percona Live, and many other venues where there are presentations about data.
* Technical webinars -- Altinity has a large library of technical presentations on ClickHouse and related applications on the [Altinity Youtube channel](https://www.youtube.com/channel/UCE3Y2lDKl_ZfjaCrh62onYA/featured).
If you know of additional resources please bring them to our attention.
## How you can contribute to ClickHouse
We welcome users to join the ClickHouse community in every capacity. There are four main ways to participate.
### Use ClickHouse and share your experiences
Start with the documentation. Download ClickHouse and try
it out. Join the chat channels. If you encounter bugs, [log
issues](https://github.com/ClickHouse/ClickHouse/issues) so we can get
them fixed. Also, its easy to make contributions to the documentation
if you have basic Github and markdown skills. Press the pencil icon on
any page of the clickhouse.tech website to edit pages and automatically
generate pull requests to merge your changes.
If your company has deployed ClickHouse and is comfortable talking about
it, please don't be shy. Add them to the [ClickHouse Adopters](https://clickhouse.tech/docs/en/introduction/adopters/) page so
that others can learn from your experience.
### Become a ClickHouse developer
Write code to make ClickHouse better. Here are your choices.
* ClickHouse server -- Start with the [“For Beginners” documentation](https://clickhouse.tech/docs/en/development/developer-instruction/) to learn how to build ClickHouse and submit PRs. Check out the current ClickHouse issues if you are looking for work. PRs that follow the development standards will be merged faster.
* Ecosystem projects -- Most projects in the ClickHouse ecosystem accept PRs. Check with each project for specific practices.
ClickHouse is also a great target for research problems. Overall the
years many dozens of university CS students have worked on ClickHouse
features. Alexey Milovidov maintains an especially rich set of [project
suggestions for students](https://github.com/ClickHouse/ClickHouse/issues/15065). Join Telegram and ask for help if you are
interested. Both Yandex and Altinity also offer internships.
### Write ClickHouse applications
ClickHouse enables a host of new applications that depend on low
latency access to large datasets. If you write something interesting,
blog about it and present at local meetups. Altinity has a program to
highlight startups who are developing ClickHouse applications and help
with marketing as well as resources for development. Send email to
[info@altinity.com](mailto:info@altinity.com) for more information.
### Become a corporate sponsor
The ClickHouse community has been assisted by many corporate
users who have helped organize meetups, funded development, and
guided growth of ClickHouse. Contact community members directly at
[clickhouse-feedback@yandex-team.ru](mailto:clickhouse-feedback@yandex-team.ru), [info@altinity.com](mailto:info@altinity.com), or via Telegram
to find out more about how to chip in as a corporate sponsor.
## Where we go from here
ClickHouse has grown enormously from its origins as a basic prototype in
2008 to the popular SQL data warehouse users see today. Our community is
the rock that will enable ClickHouse to become the default data warehouse
worldwide. We are working together to create an inclusive environment
where everyone feels welcome and has an opportunity to contribute. We
welcome you to join!
This article was written with kind assistance from Alexey Milovidov,
Ivan Blinkov, and Alexander Zaitsev
_2020-12-11 [Robert Hodges](https://github.com/hodgesrm)_