Open Source Promotion Plan, co-hosted by the Institute of Software at the Chinese Academy of Sciences and the openEuler community, aims to motivate students to delve into open-source software development. Among the student participants, a student named Zou Wei shone brilliantly and forged a profound collaboration with his mentor, Huang Lei. With the mentorship and encouragement of Huang Lei, Zou Wei's passion for open-source has flourished, earning him an internship at Greptime. We're excited to move forward together! Here are some insights and reflections from Zou Wei upon concluding the OSPP project.
First Glimpse of OSPP
Hi, I'm Zou Wei. This May, I learned about the Open Source Promotion Plan (referred to as OSPP hereafter) through a fortunate encounter in an online group chat. The project encourages students to actively participate in the development and maintenance of open-source software.
As a student, the regular curriculum doesn't often provide opportunities to work on significant real-world projects. OSPP offered me a chance to keep up with the latest industrial trends and engage in hands-on work, which I found very appealing. In essence, prominent open-source platforms naturally catch the attention of developers and motivate them to contribute. OSPP is one such platform. Its excellent development processes, mentorship system, and reward mechanisms effectively ignited my enthusiasm and I can't wait to apply and give it a try.
My Journey with GreptimeDB
In early May, numerous database-related projects were showcased on OSPP. Among them, the company name "GreptimeDB" and its purple circular logo immediately caught my eye. As many are aware,
grep is a commonly used search command in Linux. The term "grep time" suggested a relationship with time in this database to me. Curious about this community, I joined the OSPP communication group for GreptimeDB and decided to apply for one of its projects.
Title: Implementing Support for "Duration" and "Interval" Data Types in GreptimeDB
Mentor: Huang Lei
Technical Domain: Rust, Linux
Project Overview: Two data types were integrated into GreptimeDB
The "Duration" data type measures specific spans of time, which can be represented in seconds, milliseconds, microseconds, or nanoseconds.
The "Interval" data type calculates the time difference by counting the days between two points in time. These data types are invaluable in representing and modeling real-world temporal scenarios.
Project Link: https://github.com/GreptimeTeam/greptimedb
Project Selection and Application
One project that intrigued me aimed to implement support for "Duration" and "Interval" data types in the GreptimeDB database. There are two main reasons why I was attracted to this project:
Firstly, the module of a database-type system is relatively independent, and thus only requires basic coding skills.
Secondly, this task builds upon GreptimeDB's existing type system to further support the Duration and Interval types. Considering the fact that the underlying type system is already well-established, diving into the type system itself and its interactions with other modules seemed like a manageable task once the coding logic was clarified.
Then I reached out to mentor Huang Lei for guidance. Following our discussions, he provided valuable resources that deepened my understanding of GreptimeDB's type system framework. While drafting the project proposal, he also assisted in identifying and addressing several issues. All the anxious butterflies I felt then vanished in a split second when the list was released. Seeing my name on the selection announcement on June 26th genuinely sent a wave of exhilaration through me!
Project Development Experience
Throughout the project development, I embarked on a journey from inception to fruition. This phase included familiarizing myself with the installation and use of GreptimeDB, reading relevant source codes for the type system, understanding the entire process of developing new types, memorizing the functions and parameters required for the types, and adhering to coding standards when submitting Pull Requests.
While these steps may appear complex at first, they are essential to the project's progression. Once I integrated them into my development routine, they proved to be invaluable.
Throughout the entire process, I was privileged to receive support from seasoned community members. Their guidance played a pivotal role in my accelerated growth within the GreptimeDB community. I owe a special thanks to my mentor who consistently provided answers to my queries and solutions to the challenges I faced during development. Whether it was procedural issues or intricate coding dilemmas, he was always there to guide and advise. His invaluable insights and support significantly propelled the project forward.
Growth and Takeaways
Participating in OSPP marked my initial foray into the world of open-source. Beyond honing my coding skills, I had the privilege of connecting with numerous outstanding individuals. The profound pride I felt upon contributing to GreptimeDB, seeing my name among its contributors, and leaving my mark on the GreptimeDB repository is an emotion that stays with me. That sense of achievement still resonates with me today.
Words from the Mentor
Huang Lei, backend engineer in GreptimeDB. Graduated from Peking University, Huang Lei is an Alfista, keyboard racer, spontaneous photographer, and full-time programmer. After graduation, he joined the Ant Middleware Team, contributing to the development of the message queuing system. Later, he faced off with the Rust compiler after joining GreptimeDB.
Zou Wei was among the earliest students to apply for the GreptimeDB project under OSPP. Not only does he possess a solid foundation in computer science, but he also exudes a passion for participating in open-source projects. He quickly proposed a design for supporting Duration and Interval types, so it felt like we clicked instantly. Throughout the development phase, our comprehensive communication further showcased his dedication, attention to detail, and love for open source. He completed most of the development work in just half the expected time. I'd like to extend my gratitude to OSPP for helping countless students take that initial step into open-source projects. Wishing them all a fun journey in the open-source world.