DEV Community

Evan Lin
Evan Lin

Posted on • Originally published at evanlin.com on

Sharing: "How to Build Your Own Open Source Project"

title: Presentation Content Sharing: "Hands-on Guide to Building Your Own Open Source Project"
published: false
date: 2021-08-23 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/gdsc-opensource/
---

![An image that may display the text "2021.08 Hands-on guide to building an open source project LINE Developer Relations Evan Lin LINE"](https://scontent.ftpe8-2.fna.fbcdn.net/v/t39.30808-6/237290503_10222305088389882_6303611173398782921_n.jpg?_nc_cat=103&ccb=1-5&_nc_sid=730e14&_nc_ohc=zbmFUweBrE4AX_neJPW&tn=fE5B7NFKKVXKPnFB&_nc_ht=scontent.ftpe8-2.fna&oh=00e5c7a5f754629bf6189ace57171a44&oe=612A8844)

# Preface

Hello everyone, I am Evan Lin, a Senior Technical Promotion Engineer from the LINE Developer Relations team. My main job is to promote platform technology and build and communicate the technical brand. This time, I am honored to be invited to share my experience on how to build your own open source project for the Summer BootCamp of the DSC (Developer Students Club) developer student community.

## Slides
<script async="" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
# Does LINE participate in open source projects?

Often at many open source gatherings, many developer friends do not understand that LINE has participated in related open source projects. But LINE has actually open-sourced more than 93 projects, not only software development toolkits for messaging platforms, but also toolkits that LINE uses during the internal project development: including [Armeria](https://github.com/line/armeria) and [Central Dogma](https://github.com/line/centraldogma) and several well-known open source projects, and also began to operate related open source communities. You can refer to the [COSCUP Keynote in 2019 sharing LINE's internal open source process](https://engineering.linecorp.com/zh-hant/blog/line-coscup-2019/), and explain that LINE's corporate culture encourages employees to share, and embraces open source and participation in the developer community with an open mind.

![img](https://engineering.linecorp.com/wp-content/uploads/2019/09/keynote_armeria-1024x768.jpg)

# How to build a successful open source project
<script async="" data-slide="8" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

To build a well-known open source project, I recommend the following steps for the students:

- Find a great idea
- Well Documentation
- Well Workflow
- Find your first contributor
- Promote ! Promote ! Promote !

Here, I will start explaining these steps in order, and "finding a good idea" is placed at the end (because it is the most difficult :p).

## Well Documentation
<script async="" data-slide="10" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

First of all, I would like to share with you (which is also the easiest to be overlooked by developers) is good documentation. (Maybe it's because developers don't want to write it :p). For software development, good documentation is very important. And the most important thing for open source projects is the `README.md` file, which often appears on the project page of github. Through the above example, here are a few key points that I hope students can pay attention to:

- **Enough Badges:**
  - Badges themselves explain the relevant situations (build success, documentation...), and they can also be more beautiful.
- **Project Description**:
  - A short sentence to let passers-by know the summary of your project.
- **How to install / include**:
  - This is often forgotten by many early open source project developers. You need to let passers-by know how to install and how to include correctly. This way, people who want to use it will not be stuck on the related problems of environment settings in the first step. For example, some Python-related projects, if the dependencies of many packages are not clearly written. Often, people who see it later cannot use it correctly. Naturally, they will not use it.
- **How to contribute:**
  - This is also a very important part, including explaining the licensing method of the open source project. (You can refer to [Comparison of Free and Open Source Software Licenses](https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E5%8F%8A%E9%96%8B%E6%94%BE%E5%8E%9F%E5%A7%8B%E7%A2%BC%E8%BB%9F%E9%AB%94%E8%A8%B1%E5%8F%AF%E8%AD%89%E6%AF%94%E8%BC%83)) And you can tell those who want to contribute which basic unit testing you want them to run. The more explanations, the more at ease your contributors will be.

### References:

- [Comparison of Free and Open Source Software Licenses](https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E5%8F%8A%E9%96%8B%E6%94%BE%E5%8E%9F%E5%A7%8B%E7%A2%BC%E8%BB%9F%E9%AB%94%E8%A8%B1%E5%8F%AF%E8%AD%89%E6%AF%94%E8%BC%83)
- Badge list [badges](https://github.com/badges)/[shields](https://github.com/badges/shields)
- [How to Write a Good README File for Your GitHub Project](https://www.freecodecamp.org/news/how-to-write-a-good-readme-file/)

## Well Workflow
<script async="" data-slide="11" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

This refers to the related Github Action, and Github Action can help open source projects in the following aspects:

- If there is a Pull Request coming in, if there is a good Github Action setting, it can check if there are compilation errors in the code (Build Failed).
  - [actions/setup-go: Set up your GitHub Actions](https://github.com/actions/setup-go)
  - [Building and testing Python - GitHub Docs](https://docs.github.com/en/actions/guides/building-and-testing-python)
- The compiled executable file allows people to download the released version (Release Version) directly. Through good settings, even those who want to use it do not need to set up the environment, they can directly download the executable version, and then they can use it directly. You can refer to:
  - [GoReleaser Action - GitHub](https://github.com/goreleaser/goreleaser-action)
  - [How to release Python package from GitHub Actions](https://blog.chezo.uno/how-to-release-python-package-from-github-actions-d5a1d8edba6e)

### References:

- [What is PR: Pull Request](https://yingchencheng.medium.com/github-%E4%B8%8A%E5%B8%B8%E5%B8%B8%E5%87%BA%E7%8F%BE%E7%9A%84%E7%B8%AE%E5%AF%AB-b7aa396971a1#:~:text=PR%20(Pull%20Request)&text=%E4%BF%AE%E6%94%B9%E5%AE%8C%E6%88%90%E5%BE%8C%EF%BC%8C%E5%85%88%E6%8E%A8,%E7%9C%8B%E4%B8%80%E4%B8%8B%E4%BD%A0%E7%9A%84%E4%BF%AE%E6%94%B9%E3%80%82&text=%E4%B8%8A%E9%9D%A2%E7%9A%84%E6%B5%81%E7%A8%8B%E4%B8%AD%EF%BC%8C%E3%80%8C%E7%99%BC,%E5%8B%95%E4%BD%9C%E5%B0%B1%E5%8F%AB%E5%81%9APull%20Request%E3%80%82)

## Find your first contributor
<script async="" data-slide="12" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

When you have prepared the documentation for your open source project and have also prepared all the processes. Then it's time to open the door to welcome the first person to develop with you. (This often takes a lot of time). How do you find your first contributor?

At this time, the first step is to suggest that you write down a few parts for your own project that can be easily used by partners who want to contribute. This is known as "Good First Issue" in the open source community. Through these easier-to-use problems:

- It may be document modification (localization, Japanese localization, etc.)
- It may be adding parameters.
- Related document supplement requirements.

These can give those who want to help a good start, and it is also a way to attract more people who are willing to help.

### References:

- [Good First Issue: Issues for your first open-source contribution](https://goodfirstissue.dev/)
- [Encouraging helpful contributions to your project with labels](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/encouraging-helpful-contributions-to-your-project-with-labels#:~:text=On%20GitHub%2C%20navigate%20to%20the,start%20typing%20good%20first%20issue%20.)

## Promote ! Promote !
<script async="" data-slide="13" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

After you have done the relevant explanations, it is recommended to promote your project frequently. After all, you need to promote it continuously, and then you will know what things people are interested in. There are several ways to promote:

- Prepare some explanatory articles and explain the main functions of this Github Repository through the explanation of the articles. Although it will be mentioned in the README, the narrative method of the articles can often make more people willing to understand the essence of your project and experience the pain points that the project mainly solves.
- Share! That is, constantly share through online sharing and online speeches. This is also the most direct way for you to reach your potential users. It is highly recommended to share your project at "[COSCUP](https://en.wikipedia.org/wiki/COSCUP)", and every time you share, you will directly gain many stars (Github Like).

## Find a great idea
<script async="" data-slide="16" data-id="7c88264dc5594cc2846386c275f1989a" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

Finally, it is the most difficult part. Students and friends often ask me, how do you have so many ideas to prepare so many open source projects? (The author's open source projects have nearly 200 repositories). Here, I would like to share with you that the recommended methods are as follows:

- Use some small tools like Trello or other note-taking tools to record the tools you want to build first. Take it out and start writing when you have time.
- When you see a good project, try forking it out and start learning the relevant content inside. You can use your favorite language, or practice writing a more concise version (that is, a version with fewer functions).

Through these two methods, the main thing I want to share with the students is:

- Don't get stuck because of inspiration, the key to open source projects is to work hard and write hard. You can write it if you think it's interesting.
- Many times, learning from other people's great projects is often a good opportunity to start your own project.

# The relationship between open source projects and student internship work

Recently, I often see students discussing whether working on open source projects or writing some of their own side projects is related to work? Here, I can share that LINE's internship opportunities, LINE TECH FRESH, are very concerned about your open source projects, because from open source projects, you can see the following key points:

- Do you have good documentation habits (depending on README.md)
- Does the project have a good CI/CD process, which also represents whether you understand some basic processes.
- Looking at the code of related projects, you can understand your understanding of Git.
- In addition to these, a good open source project means that you also have good Pull Request training and habits. For multi-national collaboration, you are also more likely to adapt to the related team cooperation methods.

# About LINE Student Internship Opportunities: Introduction to LINE TECH FRESH

LINE Taiwan engineering team recruits students from information technology-related departments or those who have some knowledge in this field to join the LINE team for long-term internships (one year) every year through [LINE TECH FRESH – Technical Star Talent Program](https://career.linecorp.com/linecorp/career/detail/20000111/704/5570?classId=&locationCd=TW&page=), allowing students to observe and learn in international technology companies. LINE TECH FRESH is led by experienced technical project managers to lead the team, contact diversified projects and product development, learn the actual software project division of labor in the industry, and experience cross-national team cooperation. In previous years, the work content included server, web, mobile app, chatbot, IoT, data, DevOps and other fields, and familiarized with LINE platform systems, SDK, API, etc. through internships. It is worth mentioning that LINE TECH FRESH is a paid internship opportunity. For students who are passionate about software development and have ideas, don't miss this opportunity to show your creativity and drive!

More articles about LINE TECH FRESH introduction are:

- 

[What internal activities are there besides development during the one-year TECH FRESH internship?](https://engineering.linecorp.com/zh-hant/blog/line-tech-fresh-2020-graduate/)

- 

[【Interview】TECH FRESH Work Honestly – Follow-up Highlights and Related Information](https://engineering.linecorp.com/zh-hant/blog/what-is-tech-fresh-interview/)

- 

[Life in LINE – Direct hit TECH FRESH internship content!](https://engineering.linecorp.com/zh-hant/blog/life-in-line-tech-fresh-sharing/)

- 

[TECHPULSE 2020 Youth Main Stage – TECH FRESH Agenda and Booth Introduction](

# Related inquiries from students:

## 1. How to make your Github easy to find?

### A:

- Try to write more articles, and each article is a good SEO entry point. It can let more people see your project.
- Never forget to promote your open source project as a product. You can participate in some speeches to share.

## 2. Is it recommended to focus on Quality or Quantaty for Github projects?

### A:

- It is recommended to write when you think of it, because you won't know which project will be popular.
- I also have many projects, which have exceeded 1K Stars because of opportunities.

## 3. Will you worry about your project being copied by others?

### A:

- No, open source projects don't need to worry about your project being copied. Instead of worrying about being copied, you should be more worried that your project doesn't have a single Star.
- For the part that you are really worried about, it is recommended to write a thesis first, and then write the project. And then open source.

## 4. Which Githubs are companies more concerned about?

### A:

- If it is LINE, if you have an open source project for LINE Bot, we can not only know that you already understand the company's related chatbots. You can also understand your method of error control (that is, the processing of users' arbitrary input of text), and you can use these methods to understand the meticulousness of each developer.
- Similar to the topic mentioned earlier, it mainly depends on the degree of detail you handle each project. Whether it is documented, and whether it has a good process.

## 5. Do you have to learn Git commands to start an open source project?

### A:

- No, many students also ask me if they need to buy a Git tutorial manual before starting an open source project?
- Actually, you don't need to, it is recommended to start building the project first. Often, many basic commands can be quickly assisted by related software such as VSCode.
- When you really need more underlying commands, you will query related commands such as `git pull -rebase`.

## 6. How to ask more questions?

### A:

- If you haven't opened your Github account yet, and you have many questions. You can consider asking me through Github.
- Any open source questions are welcome: [https://github.com/kkdai/AMA](https://github.com/kkdai/AMA), you can also learn how to open an issue.
- Small trick: Github Issue is also a kind of Contribution!

# About the LINE Developer Official Community

Join the "LINE Developer Official Community" official account immediately, and you can receive the first-hand Meetup activities, or push notifications of the latest news related to the developer program. ▼

"LINE Developer Official Community" official account ID: [@line\_tw\_dev](https://lin.ee/s5RsZHo)

![](http://www.evanlin.com/images/2020/line-tw-dev-qr.png)

## About the "LINE Developer Community Program"

LINE launched the "LINE Developer Community Program" in Taiwan at the beginning of this year, and will invest manpower and resources in Taiwan for a long time to hold internal and external, online and offline developer community gatherings, job fairs, developer conferences, etc., and has held more than 30 events. Readers are welcome to continue to check the latest status. For details, please see:

- [2019 LINE Developer Community Program Activity Schedule](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)
- [LINE Taiwan Developer Relations 2019 Review and 2019 Developer Community Program Report](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019/)
- [2020 LINE Developer Community Program Activity Schedule](https://engineering.linecorp.com/zh-hant/blog/2020-line-tw-devrel/)
Enter fullscreen mode Exit fullscreen mode

Top comments (0)