How I & how a newbie to become a member of open source community?
- Liu, An-Chi 劉安齊
A long story goes through my coding life and hope guide people in contributing to open source projects
I know there are many people want to join the open source community whether they are already a coder or a newbie to writing codes. I was once a guy who want to contribute to open-source projects, and I did not know how to do it. Now I am a contributor to many open-source projects.
I thought many people would have the same question which is how to commit to open source, so I write this article to record my experience and guide you to find the way. If you just want to read open-source parts, skip the previous paragraphs and jump to the rear.
The first time I wrote code was at the time when I was studying in junior high school. I read a tutorial book and wrote a simple C language program like finding prime numbers, but I didn’t dig it further. Two years later when I was in high school, since I had had a long time not to write code and I found that I could not understand what the computer science teacher was talking about, so I went to borrow a book and read C/C++ again. That was the second time I learned coding.
Due to the previous experience, I studied faster this time, I was even able to teach classmates! The fact is, when you study a thing fast and easy, you will get a sense of accomplishment. Before I graduated from high school, I did a project for science fairs with python. The study uses mathematical models and agent-based to simulate the epidemic of infectious diseases. Thanks my senior, Chu Chang Ku, teaching me how to implement agent-based simulation by OOP python. That time I thought I coded well. However, I was just very junior.
While I was a freshman in National Taiwan University(NTU) with atmosphere science as the major in 2015, Ku taught me to study web frontend. I was trained to write correct OOP with JS and learn how to do web visualization with D3.js. I began to love coding. I thought Ku did a big favor to me, because the first step to learn code is always difficult, and so are learning everything. During this period, I found that I like engineering much more than basic science. So I transferred my major to bio-industrial mechatronics engineering in freshman year summer.
At the same time, one day prof. Polin Lin ask if I want to enter his lab, because he know I like coding. What a great opportunity! I began to be a research assistant to help the professor to write software for atmospheric science research. In the two months of summer, I studied frontend and backend technology by myself, i.g. many kinds of frameworks, API, database. This period was difficult for me because the learning curve is so sharp to enter the software world and sometimes it is very hard to find resources on the internet( Of course, there are many things on the internet, but the helpful ones are always not easy to find.) Since I have experienced studying is difficult, I always love to help people who want to learn to program from then on. If you want to improve programming or encounter difficulty, feel free to email me. I would do my best to help you.
Few months later as a sophomore in 2016, I thought I had enough ability to find an intern working at a company. I sent my resume to many companies, and fortunately Fusions360 hired me. I learn and use Angular 2+ to develop frontend and develop backend with Java there. What I learned the most is to realize how to organize a ten people web developing team and know the method to develop a big project. Learning from colleagues, and coding skills are improved as well.
Staying at Fusions360 for about seven months, I decided to develop software in other fields. Therefore I changed job. I thought it would be easy to find a new intern, but it had still costed almost two month with sending emails to more than 50 companies to find the new job. Finally, I have worked in Delta Electronics currently, and I am still in Prof. Lin’s lab. Now I am a junior in NTU in 2017, and that’s the long story about my coding life so far. Okay, I know the story is a little bit too long. Let’s start the question!
I love the concept of open source. I think sharing code with others is very wonderful, and using others’ projects is also fantastic! Besides, I want to prove my ability and contribute to the world. Therefore I think to join to open source is the best way to satisfy my purpose.
I desired to contribute to open source in these months, and I read many articles to find how to do. As far as I am concerned, many articles are not helpful. After reading them, I am still confused about how to begin, because those articles do not tell much about each step to let a newbie start contributing. It is always not easy to do a thing for the first time, just as I mentioned above. Here I record my steps and hope it can help others.
Open source is not only about code, but also documents. It would be very nice to write or translate document for open source projects. For example, you can write new or translate an article to introduce technology about web on MDN Web Doc. Localization would help people who don’t understand english. With more and more people joining to help the project in document, the open source can be much better and kind to users. I have translated many articles on Mozilla as well.
There are many document-like projects on Github, such as “every-programmer-should-know” or “modern-js-cheatsheet”. This kind of projects is
relatively easy. You don’t need to know the whole structure about the project, because the project is usually has many parts or chapters independently. If you have some knowledge about the technology, it would be easy to note or add some text to enhance the document. A good new is, this kind of project usually have many starts. After you commit, you can tell your friend, “Hey, I just be a contributor in a 20k-stars project. Really cool, isn’t it?” For me, I translated “contributor_covenant”, a code of conduct has been adopted by more than 30,000 open source projects, to simplified Chinese. And add a category on “public-apis”, a collective list of public JSON APIs for use in web development with 27K starts. Believe me, joining these projects is very easy.
When we develop projects, we would go to see if there are open source projects can be used. Luckily, we find some, and we become a loyal customer. One day we find there is a bug caused by the open-source project, and that would be a great opportunity to publish new issues. If you have time to debug, you can also publish a pull request. Because you use the project every day and it is you who find the bug, you would know the project well and understand its structure. That would be great to help you to debug, and once successful, well done! You have been a member of in open source. This kind of project may be small to very big. For myself, I use Angular 2+ very often, so I sometimes make issues to angular related projects. My pull request have been merged on “ng-zorro-antd", an enterprise-class UI components based on Ant Design and Angular.
The last one is the most difficult. You want to join a big open source project. But you are totally a newbie to that project. For example, you are not familiar in frontend, but you want to join React. In this case, you would not able to understand each issue are talking about, even some issues are labeled as “easy”. Join this kind of project is hard because it is very big already. You don’t know the structure and don’t know where and how to begin to learn. However, if you just want to contribute to a 10k-starts project by writing code, not document. I think to find a senior to ask him/her to guide you is the most efficient way. Seniors know the projects well, they would probably know the best way to start, and they can answer many questions for you. The problem is how to find a senior? Many projects have their own IRC, you can leave a message to ask somebody to help you.
As for me, I leave message on Mozilla Taiwan Facebook to ask if there is an enthusiastic engineer to guide me. Thanks for @shinglyu(Ex-Mozilla engineer)’s help. I told him that I want to join Mozilla’s project. He was a member in Mozilla servo at that time, so I decided to choose servo to join. He told me some basic rules and progress, and discuss it with me when I had questions. Although there is a mentor, you still need to find what issue you want to solve. A mentor can help you, however, that doesn’t mean any learning curve at all. Solving the problem is art. I cannot tell you more detail since you need to do by yourself. I am so “lucky” to build failed just after I cloned the Servo on Windows. So I spent much time to figure out why it failed and how to fix. After that, I am now a contributor in Servo.
Coding is cool, and open source is wonderful. Hope this article helps people who want to become a programmer or how to join open source. Enjoy coding, Cheers! :)