From Web Engineer to Apache APISIX PMC

Posted at — Sep 28, 2020

ApacheCon@Home 2020: https://www.bilibili.com/video/BV1oZ4y1V7Zi/

Hello, I’m Zhiyuan Ju from API7.ai, and I’m a member of Apache APISIX PMC, a high-performance open-source gateway project. I’m a member of Apache APISIX PMC, a high-performance open-source gateway project. Tributary is an open-source infrastructure software startup, and this open-source software refers to Apache APISIX.

In this session, I will share my story from being a web engineer to continue participating in open source projects and encourage more people to know and dare to participate in open source projects by describing what I have gained and felt from participating in open source projects.

Before I introduce my feelings about participating in open source projects, I would like to share my experience of learning the Web.

After my college entrance exams in 2015, I was interested in Web research and development, so I looked up and studied tutorials related to it through search engines. Over the past five years, my Web learning can be divided into three phases, the first being bewildered and overwhelmed. I didn’t know why pages were being rendered? How does a well-written page get seen by others? Not long after I joined the school, I was lucky enough to get my first project: helping the school’s student office develop a content management system. At that time, I only knew how to do some basic pages, but new questions like how to dynamically render content and how to make adaptive pages came up one after another, and since my circle was too small and no one was around to do these things, I had to turn to search engines! Through continuous inquiries and attempts, I finally completed the project and practiced what I learned, despite the numerous pitfalls, and I was told that the site was highly rated by the university as a whole.

After tasting the sweetness of “project-driven, hands-on,” I started to look for new projects. Fortunately, my first project brought me some visibility, and I spent my sophomore and junior years working on various types of projects, which greatly broadened my technology stack. This was my second phase of learning the Web.

The third stage was in my senior year. Because I was self-taught in Web technology, I took many detours and did not learn Web technology systematically, and repeatedly doing outsourcing projects could bring temporary income, but it was not conducive to my personal technical growth. By chance, I realized that the open-source libraries used in the development process were of high code quality and standardized collaboration processes, which is exactly what I needed to learn! So I decided to spend most of my time investing in learning the code of open source projects and following the dynamics of the open-source community.

So in the two years involved in the process of open source projects, they gain what?

First is time. Participating in open source projects is a creative and imaginative thing. It requires constant thinking and discussion before making decisions, so it takes enough time. Fortunately, at us at API7.ai, people have the flexibility to organize their work and life. I choose to work efficiently when I am inspired, and I can do it anytime when I need a break or something else without the burden.

Second, participating in open source projects has expanded my friendship. Every day when I sit down at my computer, I go to GitHub for a long time to see what projects are interesting. What’s going on in the projects I’m interested in? For projects I’m interested in, I check out the author’s information (blogs, Twitter, active GitHub projects) and keep finding great independent contributors! So I get familiar with the authors by contributing code or interacting with them in other ways.

In addition, because of my love for open source, I would actively follow and be active in the open-source community. In my freshman year, I learned about freeCodeCamp, a non-profit, online programming platform that helps people around the world learn to program for free, and became an active contributor to help maintain the platform. Since freeCodeCamp has several city communities in China, I’ve been able to meet a lot of like-minded people through participating in offline activities!

To my surprise, as my “circle of friends” gradually expanded and I developed a non-socially intimidated personality through offline meetings, I joined the “Jinjindao Podcast” team as a volunteer! I have been a listener of “Jinjin Ledao” since I was in college, which is a high-quality, Chinese-language podcast produced by experts in various fields and currently has more than a million monthly listeners. After joining the team, I’ve gotten closer to many of the people I’ve heard of!

Another thing I’ve gained is skills.

In the process of participating in open source projects, I focus on the project structure, code specifications, what the Issue or PR is talking about, what it is doing, and how it is doing it. Take Code Review, for example, and I will care about what the logic is doing? Why is the contributor doing this? If it were me, what would I do? I will add my own comments about what is not clear, and the author will respond to my own questions at some point. Sometimes I think wrong, and through the author’s answer, I make my logical ability more rigorous; sometimes the author does not do it right, he may accept my proposal and tell you: Good catch! I am in this kind of discussion, your sentence, I sentence, to improve professional skills.

So for those who have not been involved in open source projects but are interested, how do you get involved?

Contributing code is a common way to participate in open source projects. In the process of their own research and development will use many open source project libraries, from time to time encounter the actual effect of inconsistent with the description of the document, if it is determined to be a bug, then in addition to waiting for others to fix, you can also try to locate the problem, solve the problem and submit a PR.

But participation in open source projects is not only about contributing code, take Apache APISIX as an example, but Apache APISIX is also a high-performance open-source gateway project, feature-rich, and due to the continuous addition of new contributors to promote the rapid iteration of the project, which sometimes causes the situation that the documentation and code are not synchronized, then we can try to submit an Issue, determine the problem, and finally submit a PR to fix the problem, which is an open-source project contribution. In addition, you can try to participate in issues such as typos, poor descriptions, multilingual (internationalization) requirements, etc. Active contributors will drive the project to better development.

This is what I have shared. By describing my experience and gains from participating in open source projects, I hope to inspire those who are still watching open-source projects and encourage more people to join open source projects!