Join us for a virtual meetup on Zoom at 8 PM, July 31 (PDT) about using One Time Series Database for Both Metrics and Logs 👉🏻 Register Now

Skip to content
On this page
Contributor Stories
July 1, 2024

From Contributor to Committer: Eugene Tolbakov's Journey with GreptimeDB

Eugene Tolbakov started to contribute to GreptimeDB more than one year ago, and was invited as a committer a few months later. As one of the most productive developers in the community, he consistently offers assistance with reviews. This article highlights his success story based on an online meeting held a few weeks ago.

"I enjoy this responsive and professional OSS community." said Eugene, our first individual committer who made significant contribution to the PromQL support, SQL engine, InfluxDB API compliance, and more.

Eugene is a platform engineer at a bank, where he primarily develops Java software. Beyond his routine work, Eugene is passionate about exploring new trends in technical innovation.

In recent years, Rust has been at the forefront of many technical innovations, from new databases to AI toolchains and more. GreptimeDB, an open-source distributed database for metrics and events, is one such project developed in Rust.

In early 2023, while browsing the internet for interesting Rust projects, Eugene discovered GreptimeDB just after it had open-sourced on GitHub. The project quickly gained attention, topping the trending dashboard for several days. Intrigued, Eugene decided to contribute by writing patches.

GreptimeDB maintains a list of good first issues, and its maintainers actively monitor and respond promptly to contributors' interests.

Eugene also started with a good first issue, namely "Remove backtrace from sql::error::Error":

Eugene's first issue
The first issue that Eugene resolved

As seen in the conversation, Eugene proactively reported other potential improvements and discussed them with the maintainers. This led to a follow-up contribution: refactor(storage): remove unused FlushIo variant.

Starting with small tasks is a common approach for open-source developers to gauge a community's responsiveness and value. Fortunately, Eugene found GreptimeDB to be a responsive community, providing timely feedback and clear participation pathways.

As Eugene became more familiar with GreptimeDB's codebase, he began tackling more complex issues. The first notable feature he contributed was supporting a new UDF to_unixtime, implemented in PR-1186:

Eugene's first non-trivial contribution
Implement a UDF: Eugene's first non-trivial contribution

He then contributed to a series of PromQL query functions, significantly enhancing GreptimeDB's PromQL compliance. Today, the project supports over 82% of PromQL functionalities, many of which were contributed by Eugene. The remaining tasks were completed by Ruihang Xia, whom Eugene fondly calls “大师” (dashi; means "master").

In recognition of his valuable and continuous contributions, Eugene was nominated as an individual committer to GreptimeDB in June 2023.

Eugene nominated as individual committer
Eugene nominated as individual committer

GreptimeDB explores how commercial open-source software (COSS) projects can collaborate with individuals. It's a balance between CODEOWNER flavor, as the company wants to ensure the quality of outcomes, and a trusted peer-to-peer flavor, which keeps contributors engaged and allows them to take more responsibility for modules and even the direction of the project.

Many COSS projects end with being closed to "external" contributions. However, I believe there is still a possibility of people collaborating in good faith. Eugene is evidence that GreptimeDB is built by both the Greptime team and enthusiastic individuals. The GreptimeTeam has nominated a few new committers after Eugene's first nomination. We'll share their story later also.

When asked about the GreptimeDB community's feelings, Eugene praised it for being responsive and professional.

Being responsive is essential for engaging contributors. As open-source enthusiasts, I believe many of us have experienced the frustration of receiving no response from the upstream community. Without feedback, it's unclear whether our contributions are on the right track or if similar work is already underway internally. This can result in pull requests being effectively suspended for months or even years. Worse, sometimes a team member may submit a similar or even identical pull request that gets merged immediately, leaving the original contributor's effort unrecognized and their pull request abandoned.

In the GreptimeDB community, good first issues are typically reserved for individual contributors, with responses ensured within 24 hours. However, if one of the good first issues becomes a blocker for feature development, a team member will step in to proceed, keeping everyone well-informed on the issue's progress.

Eugene once applied to work on an issue related to InfluxDB API compliance. I discussed with him to produce some valuable investigations. However, our team member, Jiachun Feng, later took over the issue because his work on other tasks was blocked by it. Our founder, Dennis Zhuang, clearly informed Eugene that Jiachun was developing in-house and encouraged him to provide suggestions or review the forthcoming patch. Dennis also assured him that he didn't need to spend time creating the patch himself.

Eugene dropped his draft
Avoid conflict with prompt communication

Due to his day job and personal affairs, Eugene didn't show up in the community for a few months last year. When he came back in January this year, Dennis was extremely happy to announce it among the Greptime team: "Eugene is back!"

As time goes on, Eugene gets much more familiar with GreptimeDB's codebase. He can now debug into the SQL engine, implement features or fix bugs around the query engine code path. Currently, Eugene is implementing a major feature to support mixing SQL queries with PromQL queries by allowing users write PromQL queries in CTE (PR-3860).

At the end of the meeting, Eugene asked the common questions: What can I do for GreptimeDB? How do I get involved further in the community?

Maintainers usually answer this question with: "Find whatever you're interested in and we welcome any kind of contributions." However, this doesn't answer the question. Because the contributor typically doesn't know what he/she should be interested in when he/she has this question.

There are two ways in my mind for further engagement in an OSS community.

Firstly, if the software serves your needs, either for your day job or side projects, you can use it and implement features or fix bugs to better suit your use cases. This is the origin how OSS evolves collaborations. GreptimeDB will release log processing and analyzing features in the next version, which could be relevant to Eugene's day job that currently relies on OpenSearch. I hope Eugene can find something comparable or interesting to investigate when v0.9 is out.

Secondly, if there are good tech challenges in the software, you can play with it like puzzle solving. Eugene exemplifies this by taking on the implementation of PromQL support in CTE. The Greptime team will continue to open new good first issues for contributors and help wanted issues for those important but not urgent tasks. These should be good starting points for individual contributors.

Wish Eugene enjoy the community!

community

Join our community

Get the latest updates and discuss with other users.